- Windows 启动过程分为多个阶段(启动前、启动管理器、操作系统加载器和内核),每个阶段出现故障时都会表现出不同的症状。
- Startup Repair、BOOTREC、BCDEDIT 和 RegBack 等工具可以修复损坏的 MBR、引导扇区、BCD 和注册表单元。
- 启动日志 Ntbtlog.txt 由 boot.ini 或 BCDEDIT 激活,记录已加载和已跳过的驱动程序,是诊断故障的关键。
- 结合启动日志、事件查看器、SFC/DISM 和内存转储,可以更轻松地找到阻止 Windows 启动的驱动程序或更新。
当 Windows 系统拒绝启动并卡在黑屏、重启循环或蓝屏界面时通常的反应是惊慌失措。但除了典型的自动化工具之外,还有一种非常强大的资源可以帮助我们了解发生了什么:启动日志文件或 启动日志尤其是众所周知的 Ntbtlog.txt.
这些日志详细记录了系统启动期间哪些驱动程序和组件加载(或加载失败)并结合其他实用程序,例如启动修复, BOOTREC, DISM 或者 Windows 注册表本身,可以让你找到许多启动问题的根源,无论是在具有传统 BIOS 的计算机中,还是在具有 UEFI 的现代系统中(UEFI 中的启动过程).
Windows启动过程是怎样的?故障发生在哪个阶段?
开始复习之前 Ntbtlog.txt 将命令粘贴到控制台了解 Windows 启动过程的组织方式以及每个阶段激活的组件至关重要。这有助于确定错误是发生在启动初期(固件/BIOS)、启动管理器、操作系统加载程序,还是 Windows 内核启动时。
一般来说,现代Windows系统的启动周期分为四个主要阶段。 这些情况在传统的 BIOS 机器和 UEFI 固件系统中都会出现,尽管涉及的文件和路径略有不同:
- 第一阶段 – 启动前固件(BIOS 或 UEFI)执行 POST(开机自检),初始化基本硬件,并查找有效的系统磁盘。在 BIOS 系统中,读取 MBR/PBR;在 UEFI 系统中,加载固件,并查找 Windows 启动管理器 EFI 应用程序。
- 第二阶段 – Windows 启动管理器这时启动管理器就发挥作用了,它会查找启动配置并决定启动哪个系统。
- 第三阶段 – Windows 操作系统加载器系统充电器(
winload.exeowinload.efi)加载内核和标记为在启动时加载的驱动程序。 - 第四阶段 – Windows NT 内核内核(
ntoskrnl.exe)取得控制权,挂载系统注册表单元,加载驱动程序BOOT_START系统会话开始(Smss.exe),进而启动其余的服务和控制器。
每个阶段都有其独特的症状和错误信息。从常见的“Bootmgr 缺失”错误到诸如 INACCESSIBLE_BOOT_DEVICE 或者在 Windows 徽标出现后立即出现蓝屏,因此需要使用不同的工具进行诊断和修复。
| 相 | 舞台 | 带BIOS的设备 | 支持 UEFI 的设备 |
|---|---|---|---|
| 1 | 预引导 | MBR/PBR(启动代码) | UEFI固件 |
| 2 | Windows 启动管理器 | %系统驱动器%\bootmgr | \EFI\Microsoft\Boot\bootmgfw.efi |
| 3 | Windows操作系统加载器 | %SystemRoot%\System32\winload.exe | %SystemRoot%\System32\winload.efi |
| 4 | Windows NT 内核 | %SystemRoot%\System32\ntoskrnl.exe | (相同,但现在是在 UEFI 下) |
诊断启动故障的目标是“抓住”故障链中哪个环节出现了问题。从那里,我们可以决定是否应该查看启动日志文件、启动修复中的 SrtTrail.txt、内存转储、注册表,或者专注于启动代码(MBR、BCD、Bootmgr 等)。
BIOS 或固件故障:如何检测它们
如果电脑甚至不显示 Windows 徽标 如果屏幕一直黑屏,没有显示任何清晰的信息,或者甚至无法正常开机,那么问题通常出在固件本身或基础硬件上。
有几个非常简单的检查可以确定系统是否已通过 BIOS 阶段。 或者它卡在那里了:
- 断开所有外围设备 (例如 USB 设备、外置硬盘、打印机等)。有时固件会尝试从可移动设备启动,但会卡住。
- 观察硬盘活动指示灯如果在启动过程中指示灯完全不闪烁,则该过程可能尚未到达读取引导扇区的阶段。
- 尝试按下数字锁定键。如果键盘指示灯没有变化,通常表示系统在固件或主板级别完全冻结。
当系统在早期阶段出现冻结时,通常是由于硬件故障造成的。 (内存、主板、电源、故障硬盘……)而启动文件问题则不太常见,因此在这些情况下,分析…… Ntbtlog.txt 类似的东西甚至都不会生成。
启动管理器和加载程序(MBR、BCD、Bootmgr)中的错误
机器开机后,会先出现制造商的标志,然后屏幕会变成黑色,并带有一个闪烁的光标。 如果您收到“操作系统丢失”、“Bootmgr 丢失”或与 BCD 相关的错误等消息,则问题已经出在启动管理器(启动管理器/启动加载程序)阶段。
这个阶段的一些典型信息可以很清楚地表明情况如何。:
Boot Configuration Data (BCD) missing or corruptedBoot file or MBR corruptedOperating system missingBoot sector missing or corruptedBootmgr missing or corruptedUnable to boot due to system hive missing or corrupted
此时,最有效的办法是从外部 Windows 安装介质启动。 (使用 Microsoft 工具创建的 USB/DVD 或相同或更高版本的 ISO)并使用 Shift+F10 组合键或通过高级恢复选项打开命令提示符。
使用启动修复工具
Windows启动修复实用程序是您应该首先尝试的选项。因为它自动执行了许多检查:检查引导文件的完整性、尝试修复 BCD、修复损坏的引导扇区,并生成自己的日志来记录它所做的一切。
用户流程非常简单。 当您使用与已安装的 Windows 版本相同的安装介质启动时:
- 从 Windows 安装 U 盘/DVD 启动计算机,然后在初始窗口中单击 下一步 > 维修设备.
- 在选择屏幕上,输入 疑难排解.
- 访问 高级选项 > 启动修复 然后让工具分析系统。
- 完成后,使用向导程序本身关闭系统,然后尝试正常启动。
该工具执行的所有操作都会记录在文件中。 SrtTrail.txt,位于 %windir%\System32\LogFiles\Srt\Srttrail.txt虽然它不是那种风格的启动日志 Ntbtlog.txt是的,了解它检测到了什么以及它尝试采取了哪些措施是有用的。
使用 BOOTREC 修复 MBR 和引导扇区。
如果启动修复无法解决问题,下一步通常是使用该工具。 BOOTREC (看到 BOOTREC 指南) 在恢复环境的命令提示符下,此实用程序允许您重写 MBR、重建引导扇区并重新生成 BCD 数据库。
用于解决典型 MBR 和引导扇区问题的基本命令 分别是:
- 重写MBR (如果其他系统或第三方工具覆盖了它,则非常有用):
bootrec /fixmbr - 修复系统分区的引导扇区:
bootrec /fixboot
在某些情况下(尤其是在采用 FAT32 文件系统进行 EFI 分区的 UEFI 系统中) 运行程序时可能会出现令人头疼的“访问被拒绝”消息。 /fixboot在这种情况下,您需要检查系统分区是否已正确分配驱动器号,有时还需要将其标记为活动分区,或者通过复制启动文件来手动修复启动文件。 bootmgr 和内容 \EFI\Microsoft\Boot.
更正 BCD 仓库错误
当 BCD 损坏或指向不存在的设施时您会看到关于“启动配置数据”的更具体错误。这里,BOOTREC 和 BCDEDIT 协同工作(参见)。 使用 BCDEDIT 进行诊断).
从头开始再生 BCD 的典型步骤 这是:
- 扫描是否存在可检测到的 Windows 安装:
bootrec /scanos - 如果扫描后仍然无法启动,请备份 BCD 并重建它:
bcdedit /export C:\bcdbackupattrib C:\boot\bcd -r -s -hren C:\boot\bcd bcd.oldbootrec /rebuildbcd - 当被问及是否要将找到的安装添加到启动列表中时,回答“是”。
在某些情况下,会出现一条错误消息,提示“找不到请求的系统设备”。 尝试添加安装时,您需要在此处进行检查。 diskpart 系统分区已正确标记,已分配盘符,且未损坏。
替换 Bootmgr 文件
如果多次尝试后错误直接指向 bootmgr 受损您可以选择重命名故障副本,并从系统保留分区或安装介质中放置一个新副本。
总体思路是保留旧的。 bootmgr 安全且复制一个可用的版本 到系统所在的分区:
- 找到系统保留分区(通常在 FAT32 或 NTFS 格式中没有盘符,在现代 Windows 系统中大约 100 MB),并为其分配一个盘符。
diskpart如有必要。 - 在该分区中,使用以下命令列出隐藏文件和系统文件:
attrib -r -s -h - 在系统驱动器上执行相同的操作(例如,
C:)查看bootmgr现有的。 - 更改名称
bootmgr例如,损坏:ren C:\bootmgr bootmgr.old - 复制
bootmgr从系统保留分区到 Windows 驱动器根目录的“健康”分区。 - 重启后检查是否能启动。
恢复系统注册表子树
当错误表明系统 hive 无法加载时 如果出现“系统注册表单元丢失或损坏”的错误信息,则问题从纯粹的启动问题转变为注册表问题。在这种情况下,通常需要从有效的备份中恢复注册表子树(您可以查看相关技术)。 使用 RegScanner 改进注册表).
从 WinRE 恢复环境或 ERD 修复磁盘进行修复 您可以复制以下内容 C:\Windows\System32\config\RegBack a C:\Windows\System32\config覆盖损坏的文件(SYSTEM、SOFTWARE 等)。如果仍然无法启动,则需要恢复完整的系统备份,然后仅恢复必要的注册表单元。
内核阶段:徽标显示后出现蓝屏、循环和崩溃。
如果您已经看到 Windows 徽标,甚至是旋转的“齿轮”图标,请告诉我。但如果突然出现蓝屏、卡死或黑屏,问题很可能出在内核阶段或该阶段加载的驱动程序中。
该阶段的一些典型失败症状是众所周知的。:
- 启动画面结束后立即停止代码(例如,
0x00000C2,0x0000007B等)。 - 的错误
INACCESSIBLE_BOOT_DEVICE停止标识符为 0x7B,这意味着访问启动磁盘时出现问题。 - 旋转的圆点轮一直停留在“系统繁忙”状态。
- Windows徽标出现后屏幕变黑,没有任何提示信息。
在这种情况下,恢复方案是基于有限的方式逐步实施的。 然后使用事件查看器、启动日志、内存转储和注册表等工具进行诊断。
尝试安全模式和最后一次正确配置
安全模式之所以成为经典,是因为它只加载最基本的功能。 这样一来,Windows 就可以启动,但会忽略掉可能导致问题的大部分第三方驱动程序和服务。
从高级启动选项 您可以尝试:
- 安全模式
- 带网络的安全模式
- 上次成功配置 (如果您的版本支持此功能)
如果球队能够以任何一种方式取得进展首先建议的做法之一是打开…… 事件查看器 并查看症状出现前后一段时间的系统和应用程序日志,复制相关事件以便冷静分析。
从头开始,找出冲突的服务和司机。
当问题指向第三方服务或控制器时 (例如杀毒软件、备份软件、特殊存储驱动程序等),使用该工具执行“干净启动”非常有用。 msconfig.
在系统设置中,您可以选择“选择性启动”。 逐步禁用非关键服务,尤其是那些非微软提供的服务,直到找到导致启动失败的服务。找到后,您可以永久禁用它,恢复“正常启动”。
如果问题出在驱动程序签名上(尤其是在具有安全启动或签名要求的 x64 系统中)另一种方法是从“禁用强制使用已签名驱动程序”选项开始,并按照微软针对此类问题的特定文章中的指导方针,分析哪个驱动程序需要签名或导致冲突。
INACCESSIBLE_BOOT_DEVICE 错误 (STOP 0x7B)
错误 INACCESSIBLE_BOOT_DEVICE 它是最令人恐惧的之一 因为这意味着 Windows 无法访问它应该从中启动的驱动器:存储驱动程序不足、第三方过滤器、BIOS 中 SATA/RAID 控制器模式的更改等。
处理此错误的更高级方法涉及在注册表中过滤第三方驱动程序。 来自恢复环境:
- 使用与 Windows 版本相同或更高版本的 ISO 镜像启动进入 WinRE。
- 打开注册表编辑器,加载系统注册表单元,并为其指定一个临时名称,例如: 测试.
- 转到关键:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class - 查找条目 的UpperFilters y LOWERFILTERS 指的是非微软提供的驱动程序。
- 对于每个可疑驾驶员,清除相应筛选值的内容。
- 在蜂巢中寻找其他类似情况,小心地进行改造,完成后卸下蜂巢。
- 以正常模式重启系统,并检查 0x7B 错误是否消失。
如果问题是在安装 Windows 更新后立即出现的可能需要删除待处理的软件包或撤销更新操作。 DISM更改注册表中的值(例如,服务) TrustedInstaller甚至重命名文件,例如 pending.xml en WinSxS 解除进程阻塞。
在 Windows 中启用启动日志记录
至此,本文的主角——档案库——就派上了用场。 Ntbtlog.txt该文件是经典的 Windows 启动日志;它记录了启动期间加载(或失败)的驱动程序和组件,例如,它可以帮助您检测是哪个特定的驱动程序阻止了系统启动。
默认情况下未启用启动日志。但激活它非常简单,主要有两种方式:通过 boot.ini 在较旧的系统中或使用 bcdedit 在 Windows 10 及更高版本等现代系统中,将其与以下技术结合使用非常有用: 使用 BootTrace 进行分析.
在基于 boot.ini 的系统(Windows XP 及类似系统)上启用 BootLog
在较旧的计算机上,启动配置文件是 boot.ini它位于 Windows 安装所在驱动器的根目录(通常位于 )。 C:)并被标记为隐藏的系统文件。
要编辑它,必须先显示受保护的系统文件。 从文件夹选项中查找 boot.ini 然后用记事本打开它。你会看到类似这样的一行(尽管参数不同):
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=»Microsoft Windows XP Professional» /noexecute=optin /fastdetect
要启用启动日志记录,只需添加修饰符即可。 /BOOTLOG 在那行的末尾结果类似于:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=»Microsoft Windows XP Professional» /noexecute=optin /fastdetect /BOOTLOG
文件保存后,系统将在每次启动时开始生成引导记录。此外,在紧急情况下,可以通过高级启动菜单逐个启用日志记录:在 Windows 启动前按 F8 键,然后选择“启用启动日志记录”选项。
生成的文件始终称为 Ntbtlog.txt 它保存在 Windows 文件夹中,通常在 C:\Windows准备用记事本打开,检查哪些驱动程序已正确加载,哪些未正确加载。
在 Windows 10 及更高版本中使用 BCDEDIT 启用和禁用启动日志
在采用 BCD 的现代系统(Windows Vista 及更高版本,包括 Windows 10)中启动配置不再由……管理 boot.ini但是有了启动配置数据存储和该工具 bcdedit.
要在特定系统上启用启动日志记录 您需要知道 BCD 中该加载器的标识符 (ID)。这可以通过在具有管理员权限的命令提示符中运行以下命令来获取:
bcdedit
在“Windows 启动加载程序”块中,您会看到一个名为“标识符”的行。 这可能类似于 {current} 或者使用不同的 GUID。使用该 ID,您可以像这样激活 BootLog:
bcdedit /set {ID} bootlog Yes
要停用它,只需将值更改为“否”即可。:
bcdedit /set {ID} bootlog No
下次重启后,如果启用了日志记录,Windows 将生成该文件。 Ntbtlog.txt 沿指定路线 它包含了启动过程中涉及的控制器和模块的所有必要信息,这对于诊断各种突发故障非常有帮助。
解读 Ntbtlog.txt 和其他启动日志
虽然乍看之下 Ntbtlog.txt 它看起来像是一个简单的行列表。关键在于理解我们要寻找的模式。在这个文件中,你会看到一些条目,它们指示控制器是否已成功加载或已跳过。
诀窍在于找到在崩溃或重启发生之前出现故障的驱动程序。……或者那些明显不属于微软且可能导致冲突的组件(例如杀毒软件驱动程序、磁盘加密、备份解决方案等)。将这些信息与事件查看器事件以及(如果可用)内存转储结合起来,可以大大缩小问题范围。
在许多情况下,内存转储会明确指向特定的驱动程序文件。 (例如, \Windows\System32\drivers\stcvsm.sys (缺失或损坏)。此类情况的一般建议如下:
- 查看该控制器提供的功能以及它对于启动是否至关重要。
- 如果是非必要的第三方驱动程序,请通过 WinRE 加载注册表中的系统配置单元来禁用它。
- 运行系统文件检查器(
sfc)如果怀疑系统文件损坏,则在离线模式下运行。 - 如果怀疑存在大范围的注册表损坏或最近安装了多个驱动程序/服务,请重命名旧的注册表单元(添加以下内容):
.old到名字C:\Windows\System32\config并恢复备份RegBack然后尝试正常启动。
有时,尤其是在 Windows 重大更新之后,使用以下方法修复时会出现问题: DISM 它来自原始图像版本如果用于恢复的 ISO 文件与已安装的版本不完全匹配, DISM 它返回错误 0x800f081f(“找不到源文件”)。在这种情况下,建议检查以下方面: dism /get-wiminfo 图片的确切版本(install.wim o install.esd)并找到一个与要修复的系统版本实际对应的 ISO 文件。
简而言之,启动寄存器就像 Ntbtlog.txt启动修复 SrtTrail、内存转储和日志 DISM y SFC 它们构成了一个信息“生态系统”。 此工具可让您重现每次启动过程中发生的情况:哪些程序被加载,哪些程序被跳过,哪些文件损坏,以及哪些更改(驱动程序、更新、杀毒软件或各种实用程序)导致启动过程失败。通过将这些工具与 MBR、BCD、Bootmgr、RegBack 和干净启动修复技术相结合,恢复无法启动的 Windows 系统(无需完全重装系统)的成功率远比最初想象的要高。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。


