Azure VM 中的 Windows 启动错误:找不到操作系统

本文提供了 Windows VM 未启动并出现错误“找不到操作系统”的问题的解决方案。

原始产品版本: 运行 Windows 的虚拟机
原始 KB 编号: 4010142

症状

Windows 无法启动,并返回以下错误消息:

找不到操作系统。 尝试断开任何不包含操作系统的驱动程序的连接。 按 Ctrl+Alt+Del 重启

原因

此问题由以下原因之一导致:

  • 启动过程找不到活动系统分区。
  • 磁盘已损坏。
  • 磁盘不会提供给 Hyper-V 主机。
  • 主机无法访问托管磁盘的存储。

解决方案

提示

如果最近备份了 VM,可以尝试 从备份还原 VM 以修复启动问题。

若要解决此问题,请停止 (取消分配) 并重启 VM。 然后,检查问题是否仍然存在。 如果问题仍然存在,请执行以下步骤。

步骤 1:验证 Windows 分区是否标记为活动

  1. 删除 VM。 执行此操作时,请确保选择“ 保留磁盘 ”选项。

  2. 将 OS 磁盘作为数据磁盘附加到另一个 VM, (故障排除 VM) 。 有关详细信息,请参阅如何在Azure 门户将数据磁盘附加到 Windows VM

  3. 连接到故障排除 VM。 打开 “计算机管理>磁盘管理”。 确保 OS 磁盘处于联机状态,并且其分区已分配驱动器号。

  4. 标识启动分区和 Windows 分区。 如果 OS 磁盘上只有一个分区,则此分区既是启动分区,也是 Windows 分区。

    如果 OS 磁盘包含多个分区,可以通过查看分区中的文件夹来标识分区:

    • Windows 分区包含名为“Windows”的文件夹,此分区比其他分区大。
    • 启动分区包含名为“Boot”的文件夹。默认情况下,此文件夹处于隐藏状态。 若要查看文件夹,必须显示隐藏的文件和文件夹,并禁用 “隐藏受保护的操作系统文件 (建议) 选项。 启动分区通常为 300 MB~500 MB。
  5. 以管理员身份运行以下命令。 这会创建启动记录。

    bcdboot <Windows partition>:\Windows /S <windows partition>:
    
  6. 使用 DISKPART 检查 Windows 分区是否处于活动状态。 为此,请按照下列步骤操作:

    1. 运行以下命令以打开 DISKPART:

      diskpart
      
    2. 列出系统上的磁盘,然后选择附加的 OS 磁盘:

      list disk
      sel disk <number of the disk>
      
    3. 列出卷,然后选择包含 Windows 文件夹的卷。

      list vol
      sel vol <number of the volume>
      
    4. 列出磁盘上的分区,然后选择包含 Windows 文件夹的分区。

      list partition
      sel partition <number of the Windows partition>
      
    5. 查看分区的状态:

      detail partition
      

      磁盘分区输出的屏幕截图,其中显示了分区 1 未处于活动状态。

      如果分区处于活动状态,请转到“步骤 2:修复启动配置数据”。

      如果分区未处于活动状态,请 active 运行 命令将其激活。

      然后,再次运行详细信息分区,检查分区是否处于活动状态。

    6. 从故障排除 VM 中分离修复的磁盘。 然后,从 OS 磁盘创建 VM。

步骤 2:修复启动配置数据

  1. 以管理员身份运行以下命令行,验证文件系统完整性并修复逻辑文件系统错误。

    chkdsk <Windows partition>: /f
    
  2. 以管理员身份运行以下命令行,然后记录 Windows 启动加载程序 (而不是 Windows 启动管理器) 的标识符。 标识符是一个 32 个字符的代码,类似于“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx”。下一步将使用此标识符。

    bcdedit /store <Boot partition>:\boot\bcd /enum /v
    
  3. 通过运行以下命令修复启动配置数据。 使用实际值替换占位符。

    注意

    此步骤适用于影响启动配置数据的大多数损坏问题。 即使 设备和OSDevice 值指向正确的分区,也必须执行此步骤。

    • <Windows 分区> 是包含名为“Windows”的文件夹的分区。
    • <启动分区> 是包含名为“Boot”的隐藏系统文件夹的分区。
    • <标识符> 是在上一步中找到的 Windows 启动加载程序标识符。
    bcdedit /store <Boot partition>:\boot\bcd /set {bootmgr} device partition=<boot partition>:
    
    bcdedit /store <Boot partition>:\boot\bcd /set {bootmgr} integrityservices enable
    
    bcdedit /store <Boot partition>:\boot\bcd /set {<Identifier>} device partition=<Windows partition>:
    
    bcdedit /store <Boot partition>:\boot\bcd /set {<Identifier>} integrityservices enable
    
    bcdedit /store <Boot partition>:\boot\bcd /set {<identifier>} recoveryenabled Off
    
    bcdedit /store <Boot partition>:\boot\bcd /set {<identifier>} osdevice partition=<Windows partition>:
    
    bcdedit /store <Boot partition>:\boot\bcd /set {<identifier>} bootstatuspolicy IgnoreAllFailures
    
  4. 从故障排除 VM 中分离修复的 OS 磁盘。 然后,从 OS 磁盘创建 VM。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。