针对停止错误 7B 或 Inaccessible_Boot_Device 的高级疑难解答

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

             适用于:Windows 10

Inaccessible_Boot_Device停止错误的原因

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

  • 与存储堆栈相关的筛选器驱动程序丢失、损坏或行为不当
  • 文件系统损坏
  • 对 BIOS 中的存储控制器模式或设置的更改
  • 使用与安装 Windows 时使用的存储控制器不同的存储控制器
  • 将硬盘移动到具有不同控制器的其他计算机
  • 有故障的主板、存储控制器或硬件故障
  • 在异常情况下,TrustedInstaller 服务未能提交新安装的更新是由于基于组件的存储损坏
  • 启动分区中损坏的文件 (例如,运行diskpart>list 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
    

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

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

    注意

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

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

  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. 卸载配置单元。 若要执行此卸载,请突出显示 “脱机”“组件”“配置单元”,然后选择“ 文件>卸载配置单元”。

    注册表编辑器的屏幕截图,其中选择了“脱机”“属性”。

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

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

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

  10. 如果 中的数据 HKEY_LOCAL_MACHINE\OfflineSystemHive\Select\Default1,请展开 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
    • 磁盘
    • VOLMGR
    • PARTMGR
    • VOLSNAP
    • 体积

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

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

    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 下,并指定为 Default

    • \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 下的条目。

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

    注意

    可能有多个条目。

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

    注意

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

运行 SFC 和 Chkdsk

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

  • chkdsk /f /r OsDrive:
    

    chkdsk 命令输出的屏幕截图。

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

    SFC scannow 命令输出的屏幕截图。