本文介绍启动Windows实例时,提示“no bootable device”错误的问题原因和解决方案。
问题现象
Windows系统的ECS实例无法启动,提示“no bootable device”错误。
当操作系统无法启动时,只能通过VNC方式远程访问实例。
问题原因
出现该问题的原因较多,您可以使用健康诊断工具,根据下表中实例健康诊断功能返回的信息,选择具体的修复方案。关于如何使用健康诊断工具,请参见修复实例操作系统无法启动问题的操作指南。
实例健康诊断工具返回的信息 | 解决方案 |
镜像文件中未安装磁盘适配器驱动,导致系统启动失败。 | |
该实例存在异常的磁盘上层过滤驱动(UpperFilter),使得磁盘无法正确识别,可能导致操作系统无法正常启动。 | |
该实例的系统分区被标记为“非活动的(inactive)”,导致操作系统无法正常启动。 | |
该实例的系统分区必要文件被破坏,启动项配置异常,导致操作系统无法正常启动。 | |
该实例的系统分区被分配的磁盘空间过小(小于 100MB),导致操作系统无法正常启动。 | 该问题一般发生在使用自定义镜像创建实例后,因镜像本身问题导致实例无法启动。此时,您需要重新制作镜像,并使用镜像更换该实例的操作系统。更多信息,请参见制作Windows镜像文件和更换操作系统(系统盘)。 |
该实例系统盘中的系统分区不存在,导致操作系统无法正常启动。 | |
该实例的系统分区对应的文件系统类型不正确,导致操作系统无法正常启动。 |
解决方案
安装磁盘适配器驱动
您可以在挂载了修复盘的问题实例中,安装磁盘适配器驱动以解决该问题,具体步骤如下:
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例。
根据需要,选择其中一种方式安装磁盘适配器驱动。
假设挂载盘符为D,驱动文件所在目录为
C:\Drivers
,执行命令如下:使用Dism工具安装:
dism.exe /image:D:\ /Add-Driver /Driver:C:\Drivers /recurse
使用PowerShell命令安装:
Add-WindowsDriver -Path D:\ -Driver C:\Drivers -Recurse
在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘。
重启实例,使以上配置生效。
具体操作,请参见重启实例。
远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。
具体操作,请参见通过密码或密钥认证登录Windows实例。
删除Windows磁盘过滤驱动残留项
方案一:重新安装过滤驱动
建议您联系过滤驱动厂商寻求驱动安装方法。
方案二:手动删除注册表残留项
您可以在挂载了修复盘的问题实例中,手动删除注册表残留项以解决该问题。具体步骤如下:
修改注册表可能会对系统的稳定性和安全性产生影响。建议您在修改注册表之前,备份当前的注册表设置,以便在需要时可以还原。
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例。
在运行对话框中输入
regedit
,单击确定,进入注册表编辑器。选中
HKEY_LOCAL_MACHINE
,然后选择 加载离线注册表,路径为D:\Windows\System32\config\SYSTEM
,注册表名称为OfflineSYSTEM
。删除
HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318}
注册表下UpperFilter
中的残留值,如下图的test_filter
。在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘。
启动实例。
具体操作,请参见启动实例。
远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。
具体操作,请参见通过密码或密钥认证登录Windows实例。
将系统分区设置为活跃状态
您可以在挂载了修复盘的问题实例中,将系统分区设置为活跃状态以解决该问题。
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例。
将系统分区设置为活跃状态。
您可以根据需要,选择其中一种方式。假设异常系统所在磁盘序号为1,系统分区序号为1。
使用diskpart进行修复
打开
DiskPart
窗口。您可以在搜索框中输入
diskpart
打开,也可以在搜索框输入Windows PowerShell
并输入diskpart
命令打开。选择待操作的磁盘。
select disk 1
清除磁盘只读状态。
attribute disk clear readonly
选中系统分区。
select partition 1
将系统分区设置为活跃(Active)状态。
active
使用PowerShell命令进行修复
Set-Partition -DiskNumber 1 -PartitionNumber 1 -IsActive $true
在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘。
重启实例,使以上配置生效。
具体操作,请参见重启实例。
远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。
具体操作,请参见通过密码或密钥认证登录Windows实例。
重新配置Windows系统启动项
您可以在挂载了修复盘的问题实例中,重新配置Windows系统启动项以解决该问题。本文以系统分区盘符为S
,Windows分区盘符为C
作为示例,可按照如下方式配置:
远程连接有问题的实例。
您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例。
进入
PE
模式,使用BCDboot命令行工具执行以下命令,重新配置启动项。UEFI启动方式
bcdboot C:\Windows /s S: /f UEFI
BIOS启动方式
bcdboot C:\Windows /s S:
执行以下命令,查看启动项配置信息。
UEFI启动方式
bcdedit /store S:\EFI\Boot\BCD
BIOS启动方式
bcdedit /store S:\Boot\BCD
系统返回启动项配置信息如下所示:
(可选)除
C
盘外,如果ECS实例D盘还有可用的Windows系统,您还可以配置多个Windows系统启动项。UEFI启动方式
bcdboot D:\Windows /s S: /d /p /addlast /f UEFI
BIOS启动方式
bcdboot D:\Windows /s S: /d /p /addlast