本文介绍Windows实例无法启动,通过VNC登录时提示“状态:0xc000000e”错误的问题原因和解决方案。
问题现象
Windows实例无法正常启动,通过VNC登录时提示“状态:0xc000000e”错误。
可能原因
出现“0xc000000e”错误码的原因可能有以下两种:
系统内存在Xen驱动残留,导致操作系统无法启动。
磁盘签名冲突:相同镜像ID创建的A实例和B实例,其系统盘初始磁盘签名相同。当A实例的系统盘作为数据盘在B实例上联机时,Windows 系统为避免冲突会自动为其分配一个新的磁盘签名。这导致此系统盘的物理签名与其内部引导配置数据(BCD)中记录的旧签名不一致,从而挂载回实例A后操作系统将无法启动。
Xen驱动残留的解决方案
在挂载了修复盘的问题实例中,清理系统中的Xen驱动残留以解决该问题。
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见通过VNC连接实例。
根据需要,选择其中一种方式清理Xen驱动残留。
使用Windows PowerShell清理Xen驱动残留
以管理员身份运行Windows PowerShell。
查找已安装的Xen驱动。
假设挂载盘符为D。
$xenDrivers = Get-WindowsDriver -Path D:\ | Where-Object {$_.OriginalFileName -match 'xen'}
卸载已安装的Xen驱动。
$xenDrivers | Remove-WindowsDriver -Path D:\
(可选)安装virtio驱动。
假设virtio驱动目录为
E:\drivers
,执行命令如下:Add-WindowsDriver -Path D:\ -Driver E:\drivers
手动清理Xen驱动残留
在运行对话框中输入
regedit
,单击确定,进入注册表编辑器。选中
HKEY_LOCAL_MACHINE
,然后选择 加载离线注册表,路径为D:\Windows\System32\config\SYSTEM
,注册表名称为OfflineSYSTEM
。删除
HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Services\XenPCI\Parameters
注册表下hide_device
键或者将其值设置为空。
在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘。
重启实例,使以上配置生效。
具体操作,请参见重启实例。
远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。
具体操作,请参见使用Workbench终端连接登录Windows实例(RDP)。
磁盘签名冲突的解决方案
以Windows Server 2022为例。
为防止误操作导致数据丢失,建议操作前创建快照备份数据。
准备一台正常运行的Windows实例(辅助实例),要求如下:
不同镜像ID:辅助实例的镜像ID不能与故障实例相同。
相同可用区:辅助实例必须和故障实例在同一可用区。
使用Workbench终端连接登录辅助实例,按
Win+R
输入diskmgmt.msc
并按Enter
键,进入磁盘管理,右键新挂载的磁盘,单击联机,记录盘符名称。查看BCD信息中记录的签名。
加载配置单元。
按
Win+R
输入regedit
并按Enter
键,进入注册表编辑器。选中
HKEY_LOCAL_MACHINE
后,依次选择菜单栏的 ,在加载配置单元界面,导航至新挂载云盘的BCD文件路径,并点击打开。例如新挂载的云盘的盘符为D,则注册表文件路径为
D:\Boot\BCD
。在弹出的对话框中,为加载的配置单元指定一个临时的项名称,例如
offlinebcd
,然后点击确定。
查看BCD信息中记录的签名。
展开
HKEY_LOCAL_MACHINE
,选中上一步加载的配置单元offlinebcd
后,依次选择菜单栏的 ,查找目标为Windows Boot Manager
。选中查找到的Eelments的上一个Eelment,并在右侧窗格中,右键单击Element,选择修改。
示例中查找到的Eelments为
12000004
,需要选中上一个11000001
。根据偏移 0x38 行确定磁盘签名。
示例中BCD信息记录的磁盘签名为
9B33D324
。
卸载配置单元。
选中加载的配置单元
offlinebcd
后,依次选择菜单栏的 ,在弹框中选择是,完成卸载。
查看磁盘签名。
按
Win+R
输入cmd
并按Enter
键,进入命令行提示符。输入
diskpart
进入dispart工具。执行
list disk
确定待修复磁盘的序号。DISKPART> list disk 磁盘 ### 状态 大小 可用 Dyn Gpt -------- ------------- ------- ------- --- --- 磁盘 0 联机 40 GB 0 B * 磁盘 1 联机 40 GB 0 B
示例中待修复磁盘序号为
1
。选中待修复磁盘。
<待修复磁盘序号>
请替换为上一步获取的序号。select disk <待修复磁盘序号>
执行
uniqueid disk
,查看磁盘ID,获取磁盘签名。DISKPART> uniqueid disk 磁盘 ID: C855B0A4
示例中磁盘签名为
C855B0A4
与BCD信息中签名9B33D324
不一致。
修改磁盘签名。
执行以下指令,修改磁盘签名。
<BCD信息中的磁盘签名>
请替换为步骤b获取的签名。uniqueid disk id=<BCD信息中的磁盘签名>
执行
uniqueid disk
,查看签名是否修改成功。DISKPART> uniqueid disk 磁盘 ID: 9B33D324
示例中磁盘签名与BCD信息中签名
9B33D324
一致,修改成功。
验证BCD信息是否正常。
输入
exit
退出diskpart工具后,运行以下命令,<盘符名称>
请替换为第3步获取的名称。可正确显示device和osdevice则表示BCD信息恢复正常。bcdedit /store <盘符名称>:\Boot\BCD