启动Windows实例时, 提示“no bootable device”错误怎么办?

本文介绍启动Windows实例时,提示“no bootable device”错误的问题原因和解决方案。

问题现象

Windows系统的ECS实例无法启动,提示“no bootable device”错误。

说明

当操作系统无法启动时,只能通过VNC方式远程访问实例。

image.png

问题原因

出现该问题的原因较多,您可以使用健康诊断工具,根据下表中实例健康诊断功能返回的信息,选择具体的修复方案。关于如何使用健康诊断工具,请参见修复实例操作系统无法启动问题的操作指南

实例健康诊断工具返回的信息

解决方案

镜像文件中未安装磁盘适配器驱动,导致系统启动失败。

安装磁盘适配器驱动

该实例存在异常的磁盘上层过滤驱动(UpperFilter),使得磁盘无法正确识别,可能导致操作系统无法正常启动。

删除Windows磁盘过滤驱动残留项

该实例的系统分区被标记为“非活动的(inactive)”,导致操作系统无法正常启动。

将系统分区设置为活跃状态

该实例的系统分区必要文件被破坏,启动项配置异常,导致操作系统无法正常启动。

重新配置Windows系统启动项

该实例的系统分区被分配的磁盘空间过小(小于 100MB),导致操作系统无法正常启动。

该问题一般发生在使用自定义镜像创建实例后,因镜像本身问题导致实例无法启动。此时,您需要重新制作镜像,并使用镜像更换该实例的操作系统。更多信息,请参见制作Windows镜像文件更换操作系统(系统盘)

该实例系统盘中的系统分区不存在,导致操作系统无法正常启动。

该实例的系统分区对应的文件系统类型不正确,导致操作系统无法正常启动。

解决方案

安装磁盘适配器驱动

您可以在挂载了修复盘的问题实例中,安装磁盘适配器驱动以解决该问题,具体步骤如下:

  1. 远程连接有问题的实例。

    您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例

  2. 根据需要,选择其中一种方式安装磁盘适配器驱动。

    假设挂载盘符为D,驱动文件所在目录为C:\Drivers,执行命令如下:

    • 使用Dism工具安装:dism.exe /image:D:\ /Add-Driver /Driver:C:\Drivers /recurse 

    • 使用PowerShell命令安装:Add-WindowsDriver -Path D:\ -Driver C:\Drivers -Recurse

  3. 在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘

    卸载修复盘

  4. 重启实例,使以上配置生效。

    具体操作,请参见重启实例

  5. 远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。

    具体操作,请参见通过密码或密钥认证登录Windows实例

删除Windows磁盘过滤驱动残留项

方案一:重新安装过滤驱动

建议您联系过滤驱动厂商寻求驱动安装方法。

方案二:手动删除注册表残留项

您可以在挂载了修复盘的问题实例中,手动删除注册表残留项以解决该问题。具体步骤如下:

重要

修改注册表可能会对系统的稳定性和安全性产生影响。建议您在修改注册表之前,备份当前的注册表设置,以便在需要时可以还原。

  1. 远程连接有问题的实例。

    您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例

  2. 运行对话框中输入regedit,单击确定,进入注册表编辑器。

  3. 选中HKEY_LOCAL_MACHINE,然后选择File > Load Hive...加载离线注册表,路径为D:\Windows\System32\config\SYSTEM,注册表名称为OfflineSYSTEM

    image.png

  4. 删除HKEY_LOCAL_MACHINE\OfflineSYSTEM\ControlSet001\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318}注册表下UpperFilter中的残留值,如下图的test_filter

    image.png

  5. 在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘

    卸载修复盘

  6. 启动实例。

    具体操作,请参见启动实例

  7. 远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。

    具体操作,请参见通过密码或密钥认证登录Windows实例

将系统分区设置为活跃状态

您可以在挂载了修复盘的问题实例中,将系统分区设置为活跃状态以解决该问题。

  1. 远程连接有问题的实例。

    您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例

  2. 将系统分区设置为活跃状态。

    您可以根据需要,选择其中一种方式。假设异常系统所在磁盘序号为1,系统分区序号为1。

    使用diskpart进行修复

    1. 打开DiskPart窗口。

      您可以在搜索框中输入diskpart打开,也可以在搜索框输入Windows PowerShell并输入diskpart命令打开。

    2. 选择待操作的磁盘。

      select disk 1
    3. 清除磁盘只读状态。

      attribute disk clear readonly
    4. 选中系统分区。

      select partition 1
    5. 将系统分区设置为活跃(Active)状态。

      active

    使用PowerShell命令进行修复

    Set-Partition -DiskNumber 1 -PartitionNumber 1 -IsActive $true
  3. 在实例列表页,将鼠标悬浮至修复中的状态上,然后单击卸载修复盘

    卸载修复盘

  4. 重启实例,使以上配置生效。

    具体操作,请参见重启实例

  5. 远程连接ECS实例,如果该实例可以正常连接,说明问题已修复。

    具体操作,请参见通过密码或密钥认证登录Windows实例

重新配置Windows系统启动项

您可以在挂载了修复盘的问题实例中,重新配置Windows系统启动项以解决该问题。本文以系统分区盘符为S,Windows分区盘符为C作为示例,可按照如下方式配置:

  1. 远程连接有问题的实例。

    您可以在诊断结果界面单击VNC远程连接,使用诊断报告中提供的临时登录实例的Administrator用户及密码信息登录挂载了修复盘的ECS实例。具体操作,请参见使用VNC登录实例

  2. 进入PE模式,使用BCDboot命令行工具执行以下命令,重新配置启动项。

    • UEFI启动方式

      bcdboot C:\Windows /s S: /f UEFI
    • BIOS启动方式

      bcdboot C:\Windows /s S:
  3. 执行以下命令,查看启动项配置信息。

    • UEFI启动方式

      bcdedit /store S:\EFI\Boot\BCD
    • BIOS启动方式

      bcdedit /store S:\Boot\BCD

    系统返回启动项配置信息如下所示:

    image

  4. 可选)除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