启动错误 - 这不是可启动磁盘

本文提供了解决磁盘无法在 Azure 虚拟机 (VM) 中启动的问题的步骤。

症状

使用启动诊断查看 VM 的屏幕截图时,会看到屏幕截图显示一条提示,并显示消息“这不是可启动磁盘。 请插入可启动软盘,然后按任意键重试...。

图 1

消息的屏幕截图。

原因

此错误消息表示 OS 启动进程找不到活动系统分区。 此错误还可能意味着启动配置数据 (BCD) 存储中缺少引用,从而阻止它找到 Windows 分区。

解决方案

进程概述

提示

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

  1. 创建和访问修复 VM。

  2. 将“分区状态”设置为“活动”。

  3. 修复磁盘分区。

  4. 建议:在重新生成 VM 之前,请启用串行控制台和内存转储收集。

  5. 重新生成原始 VM。

    注意

    遇到此启动错误时,来宾 OS 无法正常运行。 你将在脱机模式下进行故障排除以解决此问题。

创建和访问修复 VM

  1. 使用 VM 修复命令 的步骤 1-3 准备修复 VM。
  2. 使用远程桌面连接连接到修复 VM。

将“分区状态”设置为“活动”

第 1 代 VM 应首先验证保存 BCD 存储的 OS 分区是否标记为 活动。 如果有第 2 代 VM,请跳到 修复磁盘分区,因为 状态 标志在以后的一代中已弃用。

  1. (cmd.exe) 打开提升的命令提示符。

  2. 输入 diskpart 以启动 DISKPART 工具。

  3. 输入 列表磁盘 以列出系统上的磁盘并标识附加的 OS VHD。

  4. 找到附加的 OS VHD 后,输入 sel disk # 以选择磁盘。 请参阅图 2,其中磁盘 1 是附加的 OS VHD。

    图 2

    diskpart 窗口显示 list disk 和 sel disk 1 命令的输出。磁盘 0 和磁盘 1 显示在表中。磁盘 1 是所选磁盘。

  5. 选择磁盘后,输入 列表分区 以列出所选磁盘的分区。

  6. 标识启动分区后,输入 sel partition # 以选择分区。 通常,启动分区的大小约为 350 MB。 请参阅图 3,其中分区 1 是启动分区。

    图 3

    diskpart 窗口显示列表分区和 sel partition 1 命令的输出。分区 1 是所选磁盘。

  7. 输入“详细信息分区”以检查分区的状态。 请参阅图 4,其中分区为 “活动:否”,或图 5,其中分区为“活动:是”。

    图 4

    当分区 1 设置为 Active No 时,带有详细信息分区命令输出的 diskpart 窗口。

    图 5

    当分区 1 设置为“活动是”时,带有详细信息分区命令输出的 diskpart 窗口。

  8. 如果分区为 “非活动”,请输入 “活动 ”以更改 “活动” 标志。

  9. 通过键入 详细信息分区检查状态更改是否已正确完成。

    图 6

    当分区 1 设置为“活动是”时,带有详细信息分区命令输出的 diskpart 窗口。

  10. 输入 exit 以关闭 DISKPART 工具并保存配置更改。

修复磁盘分区

  1. (cmd.exe) 打开提升的命令提示符。

  2. 使用以下命令在磁盘上运行 CHKDSK () 并修复错误:

    chkdsk <DRIVE LETTER>: /f

    添加“/f”命令选项将修复磁盘上的所有错误。 请确保将驱动器号>替换为<附加的 OS VHD 的字母。

若要启用内存转储收集和串行控制台,请运行以下脚本:

  1. 打开提升的命令提示符会话 (以管理员身份运行) 。

  2. 运行以下命令:

    启用串行控制台

    bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON

    bcdedit /store <VOLUME LETTER WHERE THE BCD FOLDER IS>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200

  3. 验证 OS 磁盘上的可用空间是否与 VM 上的内存大小 (RAM) 相同。

    如果 OS 磁盘上没有足够的空间,则应更改将创建内存转储文件的位置,并将其引用为附加到 VM 且具有足够可用空间的任何数据磁盘。 若要更改位置,请将“%SystemRoot%”替换为驱动器号 (例如以下命令中数据磁盘的“F:”) 。

启用 OS 转储的建议配置

加载损坏的 OS 磁盘

REG LOAD HKLM\BROKENSYSTEM <VOLUME LETTER OF BROKEN OS DISK>:\windows\system32\config\SYSTEM

在 ControlSet001 上启用:

REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f

REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f

REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f

在 ControlSet002 上启用:

REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f

REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f

REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f

卸载损坏的 OS 磁盘:

REG UNLOAD HKLM\BROKENSYSTEM

重新生成原始 VM

使用 VM 修复命令的步骤 5 重新组合 VM。

联系我们寻求帮助

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