问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Azure虚拟机启动错误解决方案:这不是可启动磁盘

创作时间:
作者:
@小白创作中心

Azure虚拟机启动错误解决方案:这不是可启动磁盘

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/troubleshoot/azure/virtual-machines/windows/troubleshoot-guide-not-bootable-disk?view=azurermps-3.8.0

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

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

现象

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

原因

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

解决方案

流程概述

  1. 如果 VM 有最近的备份,可以尝试从备份还原 VM 以修复启动问题。
  2. 创建和访问修复 VM。
  3. 将分区状态设置为“活动”。
  4. 修复磁盘分区。
  5. 建议:在重新生成 VM 之前,请启用串行控制台和内存转储收集。
  6. 重新生成原始 VM。

注意:遇到此启动错误时,来宾 OS 无法运行。 需要在脱机模式下进行故障排除来解决此问题。

创建并访问修复 VM

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

将分区状态设置为活动

注意:此缓解仅适用于第 1 代 VM。 第 2 代 VM(使用 UEFI)不使用活动分区。

  1. 将系统磁盘附加到恢复 VM。
  2. 开始与恢复 VM 建立远程桌面连接。
  3. 转到“计算机管理”>“磁盘管理”。确保磁盘在磁盘管理控制台中标记为“联机”。请留意分配给附加系统磁盘的驱动器号。
  4. 标识启动分区和 Windows 分区。 如果 OS 磁盘上只有一个分区,则此分区既是启动分区,又是 Windows 分区。
  5. 如果 OS 磁盘包含多个分区,可以通过查看其中的文件夹来标识分区:
  • Windows 分区包含名为Windows的文件夹,此分区大于其他分区。
  • 启动分区包含名为Boot的文件夹。 此文件夹默认已隐藏。 若要查看该文件夹,必须显示已隐藏的文件和文件夹,并禁用“隐藏受保护的操作系统文件(推荐)”选项。 启动分区通常为 300 MB~500 MB。
  1. 以管理员身份运行以下命令以创建启动记录:
    bcdboot <Windows partition>:\Windows /S <windows partition>:
    
  2. 使用 DISKPART 工具检查 Windows 分区是否处于活动状态:
    1. 打开提升的命令提示符并打开 DISKPART 工具。
      diskpart
      
    2. 列出系统上的磁盘,并查找添加的磁盘,并继续选择新磁盘。 在此示例中,新磁盘为 Disk 1。
      list disk
      sel disk 1
      
    3. 列出该磁盘上的所有分区,然后继续选择要检查的分区。 通常,系统托管分区较小且大小约为 350 MB。 下图中,此分区为分区 1。
      list partition
      sel partition 1
      
    4. 检查分区的状态。 在我们的示例中,分区 1 未处于活动状态。
      detail partition
      
    5. 如果分区未处于活动状态,请更改活动标志,然后重新检查更改是否已正确完成。
      active
      detail partition
      
    6. 退出 DISKPART 工具。
      exit
      

修复磁盘分区

  1. 打开提升的命令提示符 (cmd.exe)。
  2. 使用以下命令在磁盘上运行 CHKDSK并修复错误:
    chkdsk <DRIVE LETTER>: /f
    
    添加“/f”命令选项将修复磁盘上的任何错误。 请确保将驱动器号>替换为<附加的 OS VHD 的字母。

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

若要启用串行控制台和内存转储收集,请执行以下步骤:

  1. 以管理员身份打开提升的命令提示符会话。
  2. 使用/ems 和/emssettings选项运行以下BCDEdit命令:
    启用串行控制台:
    bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /ems {<boot-loader-identifier>} ON
    bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
    
  3. 验 OS 磁盘上的可用空间是否大于 VM 上的内存大小 (RAM)。
  4. 如果 OS 磁盘上没有足够的空间,请更改创建内存转储文件的位置,并将该位置引用附加到 VM 且有足够的可用空间的任何数据磁盘。 若要更改位置,请替换为
    %SystemRoot%
    数据磁盘的驱动器号,如
    F:
    以下命令中的驱动器号。
  5. 若要启用 OS 转储文件,请运行以下加载、添加和卸载命令,以使用reg工具实现建议的配置:
    从损坏的 OS 磁盘加载注册表配置单元:
    reg load HKLM\<broken-system> <volume-letter-of-broken-os-disk>:\windows\system32\config\SYSTEM
    
    在 ControlSet001 上启用:
    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f
    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f
    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
    
    在 ControlSet002 上启用:
    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f
    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f
    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
    
    卸载损坏的 OS 磁盘:
    reg unload HKLM\<broken-system>
    

重新生成原始 VM

使用VM 修复命令的步骤 5重新装配 VM。

联系我们寻求帮助

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号