停止错误 7B 或 Inaccessible_Boot_Device 的高级问题排查

本文提供用于排查“停止错误 7B:Inaccessible_Boot_Device”的步骤。 在对计算机进行某些更改或在计算机上部署 Windows 之后立即发生此错误。

适用于:Windows 10

Inaccessible_Boot_Device停止错误的原因

以下任一因素都可能导致停止错误:

  • 与存储堆栈相关的缺失、损坏或行为不当的筛选器驱动程序
  • 文件系统损坏
  • 对 BIOS 中的存储控制器模式或设置的更改
  • 使用与安装 Windows 时使用的存储控制器不同的存储控制器
  • 将硬盘移动到具有不同控制器的其他计算机
  • 有故障的主板或存储控制器,或硬件故障
  • 在异常情况下,TrustedInstaller 服务提交新安装的更新失败是因为基于组件的存储损坏
  • 启动分区中损坏的文件(例如,运行>diskpartlist vol命令时标记为 SYSTEM 的卷损坏)
  • 如果在启动分区的条目之前有一个空的 GPT 条目

排查此错误

按照以下步骤在 Windows 恢复模式(WinRE)启动计算机。

  1. 使用 已安装版本的 Windows 安装介质启动系统。
  2. 在“安装 Windows”屏幕上,选择“下一步”>“修复计算机”
  3. “系统恢复选项”屏幕上,选择“下一步>命令提示符”。

验证启动磁盘是否已连接且可访问

步骤 1

在 WinRE 命令提示符处,运行 diskpart,然后运行 list disk

应显示附加到计算机的物理磁盘的列表,如下所示:

  Disk ###  Status         Size     Free     Dyn  Gpt

  --------  -------------  -------  -------  ---  ---

  Disk 0    Online         **size*  GB      0 B        *

如果计算机使用统一可扩展固件接口(UEFI)启动接口,则GPT列中将有一个星号(*)。

如果计算机使用基本输入/输出系统(BIOS)接口,则列中不会有星号 Dyn

步骤 2

list disk如果命令正确列出 OS 磁盘,请在其中list voldiskpart运行该命令。

list vol 生成类似于以下显示的输出:

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info

  ----------  ---  -----------  -----  ----------  -------  ---------  --------

  Volume 0         Windows RE   NTFS   Partition    499 MB  Healthy

  Volume 1     C   OSDisk       NTFS   Partition    222 GB  Healthy    Boot

  Volume 2         SYSTEM       FAT32  Partition    499 MB  Healthy    System

注意

如果包含 OS 的磁盘未在输出中列出,则必须与 OEM 或虚拟化制造商联系。

验证启动配置数据库的完整性

检查启动配置数据库(BCD)是否具有所有正确的条目。 若要执行此步骤,请在 WinRE 命令提示符下运行 bcdedit

验证 BCD 条目:

  1. 检查具有 {bootmgr} 标识符的 Windows 启动管理器部分。 确保设备和路径条目指向正确的设备和启动加载程序文件。

    如果计算机基于 UEFI,则下面是示例输出:

    device                  partition=\Device\HarddiskVolume2
    path                    \EFI\Microsoft\Boot\bootmgfw.efi
    

    如果计算机基于 BIOS,下面是示例输出:

    Device                partition=C:
    

    注意

    此输出可能不包含路径。

  2. 具有 {default} 标识符的 Windows 启动加载程序,确保设备路径osdevicesystemroot 指向正确的设备或分区、winload 文件、OS 分区或设备以及 OS 文件夹。

    注意

    如果计算机基于 UEFI,则 {bootmgr} 和 {default} 的路径参数中指定的文件路径值包含 .efi 扩展名。

    bcdedit 输出的屏幕截图,其中包含 Windows 启动加载程序的详细信息。

如果任何信息错误或缺失,建议创建 BCD 存储的备份。 为此,请运行 bcdedit /export C:\temp\bcdbackup。 此命令在 C:\temp\ 中创建名为 bcdbackup 的备份。 若要还原备份,请运行 bcdedit /import C:\temp\bcdbackup。 此命令使用 bcdbackup 中的设置覆盖所有 BCD 设置。

备份完成后,运行以下命令以进行更改:

bcdedit /set *{identifier}* option value

例如,如果 {default} 下的设备出错或缺失,请运行以下命令来设置它: bcdedit /set {default} device partition=C:

如果要完全重新创建 BCD,或者收到一条消息,指出“无法打开启动配置数据存储”。系统找不到指定的文件, “运行 bootrec /rebuildbcd

如果 BCD 具有正确的条目,请检查 winloadbootmgr 条目是否存在于正确的位置,该位置位于 bcdedit 命令的指定路径中。 默认情况下,BIOS 分区中的 bootmgr 位于 SYSTEM 分区的根目录中。 若要查看该文件,请运行 Attrib -s -h -r

如果文件缺失,并且想要重新生成启动文件,请执行以下步骤:

  1. 将 SYSTEM 分区下的所有内容复制到另一个位置。 或者,可以使用命令提示符导航到 OS 驱动器、创建新文件夹,然后从 SYSTEM 卷复制所有文件和文件夹,如下所示:

    D:\> Mkdir  BootBackup
    R:\> Copy *.* D:\BootBackup 
    
  2. 如果你使用的是 Windows 10,或者在 Windows 预安装环境命令提示符处使用 Windows 10 ISO 进行故障排除,则可以使用 bcdboot 命令重新创建启动文件,如下所示:

    Bcdboot <**OSDrive* >:\windows /s <**SYSTEMdrive* >: /f ALL
    

    例如,如果为字母 R 分配 <System Drive> 了 (WinRE 驱动器),并且 <OSdrive> 是字母 D,我们将使用以下命令:

    Bcdboot D:\windows /s R: /f ALL
    

    注意

    命令 的 ALL 部分 bcdboot 将所有启动文件(UEFI 和 BIOS)写入各自的位置。

如果没有 Windows 10 ISO,请格式化分区并从具有类似 Windows 内部版本的另一台工作计算机复制 bootmgr 。 若要执行格式设置和复制,请执行以下步骤:

  1. 启动 记事本
  2. 按 Ctrl+O。
  3. 导航到系统分区(在此示例中为 R)。
  4. 右键单击分区,然后设置其格式。

如果在安装Windows 更新后出现此问题,请进行故障排除

运行以下命令来验证 Windows 更新安装和日期:

Dism /Image:<Specify the OS drive>: /Get-packages

运行此命令后,会看到 “安装挂起 ”和 “卸载挂起 ”包:

Dism 输出挂起更新的屏幕截图。

  1. 运行 dism /Image:C:\ /Cleanup-Image /RevertPendingActions 命令。 将 C:替换为计算机的系统分区。

    Dism 输出还原挂起的屏幕截图。

  2. 导航到 OSdriveLetter:\Windows\WinSxS,然后检查 pending.xml 文件是否存在。 如果这样做,请将其重命名为 pending.xml.old

  3. 若要还原注册表更改,请在命令提示符处键入 regedit 以打开 注册表编辑器

  4. 选择HKEY_LOCAL_MACHINE,然后转到“文件>加载配置单元”。

  5. 导航到 OSdriveLetter:\Windows\System32\config,选择名为 COMPONENT 的文件(无扩展名),然后选择“ 打开”。 出现提示时,输入新配置单元的名称 OfflineComponentHive

    注册表编辑器的屏幕截图,其中打开了“加载 Hive”窗口。

  6. 展开HKEY_LOCAL_MACHINE\OfflineComponentHive并检查 PendingXmlIdentifier 密钥是否存在。 创建 OfflineComponentHive 密钥的备份,然后删除 PendingXmlIdentifier 密钥。

  7. 卸载配置单元。 若要执行此操作,请突出显示 OfflineComponentHive,然后选择“ 文件>卸载”配置单元

    选择了“脱机”的注册表编辑器的屏幕截图。

    注册表编辑器的屏幕截图,其中选择了“卸载 Hive”选项。

  8. 选择HKEY_LOCAL_MACHINE,转到文件>加载 Hive,导航到 OSdriveLetter:\Windows\System32\config,选择名为 SYSTEM 的文件(无扩展名),然后选择“打开”。 出现提示时,输入新配置单元的名称 OfflineSystemHive

  9. 展开 HKEY_LOCAL_MACHINE\OfflineSystemHive,然后选择“ 选择 ”键。 检查默认值的数据

  10. 如果数据为 HKEY_LOCAL_MACHINE\OfflineSystemHive\Select\Default 1,请展开 HKEY_LOCAL_MACHINE\OfflineHive\ControlSet001。 如果为 2,请展开 HKEY_LOCAL_MACHINE\OfflineHive\ControlSet002,依此等。

  11. 展开 Control\Session Manager。 检查 PendingFileRenameOperations 密钥是否存在。 如果这样做,请备份 SessionManager 密钥,然后删除 PendingFileRenameOperations 密钥。

验证启动关键驱动程序和服务

检查服务

  1. 按照“在安装Windows 更新后出现此问题时进行故障排除”部分中的步骤 1-10。 (步骤 11 不适用于此过程。

  2. 展开“服务” 。

  3. 确保服务存在以下注册表项:

    • ACPI
    • DISK
    • VOLMGR
    • PARTMGR
    • VOLSNAP

    如果存在这些键,请检查每个键以确保其具有名为 Start 的值,并将其设置为 0。 如果不是,请将值设置为 0

    如果其中任一键不存在,则可以尝试使用 RegBack 中的 hive 替换当前注册表配置单元。 若要执行此步骤,请运行以下命令:

    cd OSdrive:\Windows\System32\config
    ren SYSTEM SYSTEM.old
    copy OSdrive:\Windows\System32\config\RegBack\SYSTEM OSdrive:\Windows\System32\config\
    

检查上下筛选器驱动程序

检查计算机上是否有任何非Microsoft上下筛选器驱动程序,以及它们是否存在于另一台类似的工作计算机上。 如果它们确实存在,请删除上下筛选器驱动程序:

  1. 展开 HKEY_LOCAL_MACHINE\OfflineHive\ControlSet001\Control

  2. 查找任何 UpperFiltersLowerFilters 条目。

    注意

    这些筛选器主要与存储相关。 在注册表中展开 Control 键后,可以搜索 UpperFiltersLowerFilters

    你可能会在以下一些注册表项中找到这些筛选器驱动程序。 这些条目位于 ControlSet,并指定为默认值

    • \Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}
    • \Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318}
    • \Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}
    • \Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}

    注册表编辑器的屏幕截图,其中显示了 ControlSet 下的条目。

    如果 UpperFilters 或 LowerFilters 条目是非标准项(例如,它不是 Windows 默认筛选器驱动程序(如 PartMgr),请删除该条目。 若要删除它,请在右窗格中双击它,然后仅删除该值。

    注意

    可能有多个条目。

    这些条目可能会影响我们,因为 Services 分支中可能有一个条目,其 START 类型设置为 0 或 1,这意味着它在启动过程启动或自动部分加载。 此外,引用的文件丢失或损坏,或者其命名方式可能与条目中列出的文件不同。

    注意

    如果某个服务设置为 0 或 1对应于 UpperFiltersLowerFilters 条目,请将服务设置为在服务注册表中禁用(如“检查服务”部分的步骤 2 和步骤 3 中所述),而不删除筛选器驱动程序条目会导致计算机崩溃并生成0x7b停止错误。

运行 SFC 和 Chkdsk

如果计算机仍未启动,可以尝试 chkdisk 在系统驱动器上运行进程,然后运行系统文件检查器。 通过在 WinRE 命令提示符处运行以下命令来执行这些步骤:

  • chkdsk /f /r OsDrive:
    

    chkdsk 命令输出的屏幕截图。

  • sfc /scannow /offbootdir=OsDrive:\ /offwindir=OsDrive:\Windows
    

    SFC 扫描命令输出的屏幕截图。