Linux与Windows系统启动原理及故障排查
2026-02-11
运维
00
请注意,本文编写于 52 天前,最后修改于 5 天前,其中某些信息可能已经过时。

目录

第一部分:Linux 系统启动详解
一、Linux 启动六阶段总览
二、阶段详解与故障排查
阶段一:BIOS/UEFI 硬件自检(Pre-boot)
阶段二:Bootloader 引导加载
阶段三:Kernel 内核启动
阶段四:Init 系统初始化(systemd 时代)
阶段五:运行级别(Runlevel)/ Target
阶段六:用户登录
三、Linux 启动故障速查流程图
第二部分:Windows 系统启动详解
一、Windows 启动五阶段总览
二、阶段详解与故障排查
阶段一:预引导阶段(Pre-boot)
阶段二:引导阶段(Boot)
阶段三:载入内核阶段(Kernel Load)
阶段四:初始化内核阶段(Kernel Initialization)
阶段五:登录阶段(Logon)
三、Windows 启动故障专题:徽标转圈卡死
症状分级诊断
完整排查流程
四、Windows 与 Linux 启动对比
五、双系统启动问题
第三部分:通用故障排查工具箱
启动介质制作
日志分析
硬件诊断
速记

第一部分:Linux 系统启动详解

一、Linux 启动六阶段总览

展开代码
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 阶段一 │ → │ 阶段二 │ → │ 阶段三 │ │ BIOS/UEFI │ │ Bootloader │ │ Kernel │ │ 硬件自检 │ │ 引导加载 │ │ 内核启动 │ └─────────────┘ └─────────────┘ └─────────────┘ ↓ ↓ ↓ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 阶段四 │ → │ 阶段五 │ → │ 阶段六 │ │ init │ │ Runlevel │ │ Login │ │ 初始化系统 │ │ 运行级别 │ │ 用户登录 │ │ (systemd) │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘

二、阶段详解与故障排查

阶段一:BIOS/UEFI 硬件自检(Pre-boot)

详细流程:

顺序操作说明
1Power On电源按钮触发,主板供电
2POST (Power-On Self Test)检测 CPU、内存、显卡、键盘等关键硬件
3CMOS 读取加载 BIOS 设置(启动顺序、时间、硬件配置)
4设备初始化初始化硬盘控制器、USB 控制器等
5查找引导设备按 Boot Order 查找可启动设备

UEFI vs BIOS 差异:

特性传统 BIOSUEFI
分区表MBR(最大 2TB)GPT(最大 18EB)
启动方式16 位实模式32/64 位保护模式
安全启动不支持Secure Boot
文件系统不认识文件系统可读取 FAT32 中的 .efi 文件
启动速度

常见故障与排查:

故障现象可能原因解决方案
黑屏无显示,风扇转内存松动/显卡故障重新插拔内存,清理金手指
蜂鸣器长鸣内存检测失败更换内存插槽,单条测试
提示 "No bootable device"硬盘未识别/启动顺序错误进 BIOS 检查硬盘状态,调整 Boot Order
卡在 BIOS 界面USB 设备冲突/键盘故障拔掉所有 USB 设备,最小化启动
Secure Boot 阻止启动未签名引导程序关闭 Secure Boot 或导入密钥
RAID 卡初始化慢大容量硬盘检测耐心等待或关闭 RAID 卡 BIOS 延迟

排查命令(UEFI Shell):

bash
展开代码
# 进入 UEFI Shell 后查看设备 map -r # 查看所有存储设备映射 ls fs0:\ # 查看 EFI 分区内容 bcfg boot dump # 查看启动项配置

阶段二:Bootloader 引导加载

主流 Bootloader 对比:

Bootloader适用场景配置文件特点
GRUB2现代 Linux 主流/boot/grub/grub.cfg功能强大,支持 LVM、RAID、加密
GRUB Legacy旧系统/boot/grub/menu.lst简单,已逐步淘汰
systemd-bootUEFI 系统/boot/efi/loader/entries/*.conf轻量,与 systemd 集成
LILO古董级/etc/lilo.conf已废弃,不支持大硬盘
rEFInd多系统 Mac/PCrefind.conf图形化,自动发现 OS

GRUB2 启动流程:

展开代码
Stage 1: MBR (446 bytes) → 定位 Stage 1.5 ↓ Stage 1.5: core.img (文件系统驱动) → 读取 /boot ↓ Stage 2: /boot/grub/grub.cfg → 显示菜单,加载内核 ↓ 加载 vmlinuz + initramfs → 转交控制权给内核

GRUB2 关键文件:

文件作用
/boot/grub/grub.cfg主配置文件(自动生成,勿手动编辑)
/etc/default/grub用户自定义配置
/etc/grub.d/配置片段目录
/boot/vmlinuz-*Linux 内核镜像
/boot/initrd.img-*initramfs-*初始内存文件系统

常见故障与排查:

故障现象可能原因解决方案
进入 GRUB Rescue 提示符MBR 损坏、分区表错误、/boot 被删见下方 Rescue 修复
提示 "error: file not found"内核被删、UUID 变更手动指定正确分区,重新生成 grub.cfg
提示 "error: unknown filesystem"文件系统损坏、GRUB 不支持用 LiveCD 修复文件系统
启动菜单丢失grub.cfg 损坏从 LiveCD 重建配置
双系统 Windows 消失os-prober 未运行sudo update-grub 重新探测
启动极慢等待网络、磁盘检测编辑 /etc/default/grub 去掉 quiet splash 查看详细日志

GRUB Rescue 修复实战:

展开代码
# 进入 Rescue 后,先查看可用分区 ls # 输出:(hd0) (hd0,msdos1) (hd0,msdos2) (hd0,msdos3) # 逐个测试找到 /boot 分区 ls (hd0,1)/ # 查看根目录 ls (hd0,2)/boot/ # 找到 grub 目录 # 设置临时启动参数 set root=(hd0,2) set prefix=(hd0,2)/boot/grub insmod normal normal # 进入正常 GRUB 菜单 # 进入系统后永久修复 sudo update-grub sudo grub-install /dev/sda

从 LiveCD/USB 修复 GRUB:

展开代码
# 1. 用 LiveCD 启动,选择 "Try Ubuntu" # 2. 查看分区,确定根分区 sudo fdisk -l # 假设根分区是 /dev/sda2 # 3. 挂载根分区 sudo mount /dev/sda2 /mnt # 4. 挂载其他必要文件系统(UEFI 需要) sudo mount /dev/sda1 /mnt/boot/efi # UEFI 分区 sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys # 5. chroot 进入原系统 sudo chroot /mnt # 6. 重新安装 GRUB grub-install /dev/sda update-grub # 7. 退出并重启 exit sudo reboot

阶段三:Kernel 内核启动

内核启动详细流程:

展开代码
实模式 → 保护模式 → 长模式(64位) ↓ 解压内核 (vmlinuz → vmlinux) ↓ 初始化内存管理、调度器 ↓ 挂载 initramfs 为临时根文件系统 ↓ 执行 /init(通常是 systemd 或 init 脚本) ↓ 加载真正根文件系统驱动 ↓ 切换根文件系统 (switch_root) ↓ 执行 /sbin/init

initramfs (initrd) 详解:

特性initramfs旧 initrd
格式cpio 归档,可压缩块设备镜像
内存使用直接解压到 tmpfs,无缓存需要额外缓存
灵活性可动态生成固定大小
现代发行版✅ 全部使用❌ 已淘汰

initramfs 生成与调试:

展开代码
# 查看当前使用的 initramfs ls -la /boot/initramfs-$(uname -r).img # 手动重新生成(内核升级后) sudo update-initramfs -u -k all # 解压查看内容(调试用) mkdir /tmp/initrd && cd /tmp/initrd zcat /boot/initramfs-$(uname -r).img | cpio -idmv # 查看 initramfs 中的启动脚本 cat /tmp/initrd/init cat /tmp/initrd/scripts/local-premount/*

常见故障与排查:

故障现象可能原因解决方案
提示 "VFS: Unable to mount root fs"根分区 UUID 错误、文件系统驱动缺失检查 root=UUID= 参数,重建 initramfs 包含驱动
提示 "Unknown-block(0,0)"根分区未指定或错误GRUB 编辑启动项,指定正确 root 分区
提示 "ALERT! /dev/disk/by-uuid/xxx does not exist"磁盘未就绪、RAID 未初始化添加 rootdelay=10 参数等待
内核 Panic驱动 Bug、硬件故障、内存损坏查看堆栈信息,尝试旧内核启动
启动后进入 BusyBox/Initramfs 提示符根文件系统损坏、fstab 错误手动修复文件系统,检查 fstab
提示 "Out of memory" 后重启initramfs 太小、内存不足增加内存或精简 initramfs

内核参数调试:

展开代码
# 临时修改(GRUB 界面按 e 编辑) linux /vmlinuz-5.15.0 root=UUID=xxx ro nomodeset systemd.unit=rescue.target # 常用调试参数 nomodeset # 禁用内核显卡驱动(解决显卡冲突) init=/bin/bash # 直接进入 bash,不启动 init single # 单用户模式 emergency # 紧急模式,最小化启动 systemd.unit=rescue.target # systemd 救援模式 systemd.unit=emergency.target # systemd 紧急模式 rd.break # 在 initramfs 中暂停,可调试 rootdelay=10 # 等待 10 秒让磁盘就绪

阶段四:Init 系统初始化(systemd 时代)

传统 SysVinit vs 现代 systemd:

特性SysVinitsystemd
启动速度慢(串行)快(并行)
依赖管理手动编号(S01, K99)自动依赖解析
日志管理syslog内置 journald
服务控制service 命令systemctl 命令
兼容性旧系统现代发行版主流
配置文件/etc/init.d//etc/systemd/system/

systemd 启动流程:

展开代码
systemd (PID 1) │ ├─── basic.target # 基础系统初始化 │ ├─── sysinit.target │ │ ├─── local-fs.target # 挂载本地文件系统 │ │ │ ├─── systemd-fsck@.service # 文件系统检查 │ │ │ └─── remount-fs.service # 重挂载读写 │ │ ├─── swap.target # 激活 swap │ │ └─── systemd-tmpfiles-setup.service # 创建临时文件 │ │ │ └─── sockets.target / timers.target / paths.target │ ├─── sysinit.target 完成后 │ ├─── default.target (或 graphical.target) │ ├─── multi-user.target / graphical.target │ │ ├─── 网络服务 (NetworkManager, systemd-networkd) │ │ ├─── 系统服务 (cron, ssh, ntp) │ │ └─── 用户自定义服务 │ │ │ └─── getty.target # 登录终端 │ └─── 用户登录

systemd 关键命令:

展开代码
# 查看启动耗时(优化启动速度) systemd-analyze systemd-analyze blame # 查看各服务启动时间 systemd-analyze critical-chain # 查看关键路径 # 查看启动失败的服务 systemctl --failed # 查看服务状态 systemctl status sshd # 查看日志 journalctl -b # 本次启动日志 journalctl -b -1 # 上次启动日志 journalctl -u sshd # 特定服务日志 journalctl --since "1 hour ago" # 最近1小时 journalctl -f # 实时跟踪 # 进入不同目标 systemctl isolate rescue.target # 救援模式 systemctl isolate emergency.target # 紧急模式 systemctl isolate multi-user.target # 多用户文本 systemctl isolate graphical.target # 图形界面

常见故障与排查:

故障现象可能原因解决方案
启动极慢,卡在某个服务服务超时、网络等待、DNS 解析systemd-analyze blame 找 culprit,禁用或修复服务
提示 "A start job is running for..."依赖服务未完成、磁盘检查查看具体服务,添加超时配置或修复依赖
服务循环重启配置错误、依赖缺失journalctl -u 服务名 查看错误日志
无法进入图形界面显卡驱动、显示管理器故障切到 multi-user.target,重装驱动
fstab 错误导致启动失败磁盘未就绪、UUID 变更进入 emergency.target,修复 /etc/fstab
systemd 版本不兼容升级后服务文件语法变更systemctl daemon-reexec 或回滚

fstab 错误修复实战:

展开代码
# 启动时提示 "Welcome to emergency mode!" # 输入 root 密码进入 # 查看日志找错误 journalctl -xb | grep -i "fail\|error\|mount" # 检查 fstab cat /etc/fstab # 注释掉有问题的行(用 UUID 找不到的设备) # /dev/sdb1 /data ext4 defaults 0 0 # 或重新生成 UUID blkid /dev/sdb1 # 复制 UUID 到 fstab # 重新加载 systemctl daemon-reload mount -a # 重启 reboot

阶段五:运行级别(Runlevel)/ Target

传统 Runlevel vs systemd Target:

Runlevelsystemd Target说明
0poweroff.target关机
1rescue.target单用户/救援模式
2,3,4multi-user.target多用户文本模式
5graphical.target图形界面模式
6reboot.target重启

切换与配置:

展开代码
# 查看默认目标 systemctl get-default # 设置默认目标 sudo systemctl set-default multi-user.target sudo systemctl set-default graphical.target # 临时切换(不重启) sudo systemctl isolate rescue.target # 查看当前目标 systemctl list-units --type=target

阶段六:用户登录

登录方式对比:

方式进程配置文件
本地文本终端getty → login/etc/issue, /etc/motd, /etc/securetty
SSH 远程登录sshd/etc/ssh/sshd_config
图形界面GDM/SDDM/LightDM/etc/gdm3/custom.conf
自动登录配置 display manager修改 dm 配置文件

登录故障排查:

故障现象可能原因解决方案
密码正确但登录失败账户锁定、PAM 配置错误、磁盘满pam_tally2 --reset,检查 /var/log/secure
提示 "Login incorrect"用户名错误、键盘布局、Caps Lock检查用户名,尝试 root
SSH 连接被拒绝sshd 未启动、防火墙、端口错误systemctl status sshd,`ss -tlnp
图形界面循环登录家目录权限、显卡驱动、磁盘满chmod 700 ~,检查 ~/.xsession-errors
自动登录失效display manager 配置被覆盖重新配置 GDM/SDDM
sudo 提示不在 sudoers用户未加入 wheel/sudo 组usermod -aG sudo username

三、Linux 启动故障速查流程图

展开代码
启动失败 │ ├── 黑屏/无显示 ─────→ 检查硬件、BIOS、显卡 │ ├── 卡在 BIOS ───────→ 拔掉外设、重置 BIOS、检查硬盘 │ ├── GRUB Rescue ─────→ 修复引导、重建 grub.cfg │ ├── Kernel Panic ────→ 查看错误信息、尝试旧内核、检查硬件 │ ├── 进入 Initramfs ──→ 修复根文件系统、检查 fstab │ ├── 服务启动失败 ────→ systemd-analyze blame、journalctl │ └── 登录失败 ────────→ 检查 PAM、权限、磁盘空间

第二部分:Windows 系统启动详解

一、Windows 启动五阶段总览

展开代码
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 阶段一 │ → │ 阶段二 │ → │ 阶段三 │ │ 预引导阶段 │ │ 引导阶段 │ │ 载入内核阶段 │ │ Pre-boot │ │ Boot │ │ Kernel Load │ │ (POST+MBR) │ │ (Ntldr/BCD)│ │ │ └─────────────┘ └─────────────┘ └─────────────┘ ↓ ↓ ↓ ┌─────────────┐ ┌─────────────┐ │ 阶段四 │ → │ 阶段五 │ │ 初始化内核阶段 │ │ 登录阶段 │ │ Kernel Init │ │ Logon │ │ │ │ │ └─────────────┘ └─────────────┘

二、阶段详解与故障排查

阶段一:预引导阶段(Pre-boot)

详细流程:

顺序组件操作
1POST硬件自检,同 Linux BIOS
2BIOS/UEFI查找启动设备
3MBR (Legacy)读取主引导记录,定位活动分区
4GPT + UEFI读取 EFI 系统分区,加载 .efi 文件
5VBR (Volume Boot Record)加载分区引导扇区

MBR 结构详解:

区域大小内容
引导代码446 字节初始引导程序
分区表64 字节4 个主分区信息
结束标志2 字节0x55AA

UEFI 启动流程:

展开代码
UEFI 固件 → 读取 NVRAM 启动项 → 加载 \EFI\Microsoft\Boot\bootmgfw.efi ↓ 读取 BCD 存储 → 显示启动菜单

常见故障与排查:

故障现象可能原因解决方案
提示 "Operating System not found"MBR 损坏、活动分区错误修复 MBR:bootrec /fixmbr
提示 "Invalid partition table"分区表损坏bootrec /fixboot + bootrec /rebuildbcd
UEFI 找不到启动项ESP 分区损坏、BCD 丢失bcdboot C:\Windows /s S: /f UEFI
安全启动阻止未签名引导文件关闭 Secure Boot 或恢复微软证书
BitLocker 恢复密钥提示硬件变更、TPM 问题输入 48 位恢复密钥或暂停 BitLocker

修复命令(Windows RE):

展开代码
# 进入 WinRE:设置 → 更新与安全 → 恢复 → 高级启动 bootrec /fixmbr # 修复主引导记录 bootrec /fixboot # 修复引导扇区(可能提示拒绝访问,先选磁盘) bootrec /scanos # 扫描 Windows 安装 bootrec /rebuildbcd # 重建 BCD 存储 # UEFI 专用 diskpart list disk select disk 0 list partition select partition 1 # EFI 系统分区,通常是 100-500MB FAT32 assign letter=S exit bcdboot C:\Windows /s S: /f UEFI

阶段二:引导阶段(Boot)

关键组件:

组件作用位置
bootmgrWindows 启动管理器活动分区 /EFI 分区
BCD启动配置数据库\Boot\BCD 或 EFI\Microsoft\Boot\BCD
winload.exe加载操作系统内核C:\Windows\System32
ntdetect.com硬件检测(Legacy)活动分区

BCD 编辑命令:

展开代码
# 查看 BCD 配置 bcdedit /enum # 设置安全模式 bcdedit /set {default} safeboot minimal # 安全模式 bcdedit /set {default} safeboot network # 网络安全模式 bcdedit /deletevalue {default} safeboot # 取消安全模式 # 设置调试选项 bcdedit /set {default} bootlog Yes # 启用启动日志 bcdedit /set {default} nointegritychecks on # 禁用驱动签名强制 # 创建新启动项 bcdedit /copy {current} /d "Windows 10 Debug" bcdedit /set {guid} debug on

常见故障与排查:

故障现象可能原因解决方案
提示 "Windows failed to start"BCD 损坏、磁盘变更bootrec /rebuildbcd
启动菜单丢失BCD 被覆盖(多系统安装)bcdboot C:\Windows
提示 "0xc000000f"引导配置错误重建 BCD,检查磁盘连接
提示 "0xc0000225"无法访问启动设备检查磁盘模式(AHCI/IDE)、SATA 线
多系统菜单不显示超时设为 0、BCD 条目缺失bcdedit /timeout 10

阶段三:载入内核阶段(Kernel Load)

关键操作:

顺序操作说明
1winload.exe 加载从 BCD 指定的路径加载
2加载 ntoskrnl.exeWindows 内核
3加载 hal.dll硬件抽象层
4加载注册表 SYSTEM hiveHKEY_LOCAL_MACHINE\SYSTEM
5加载 boot-start 驱动磁盘控制器、文件系统驱动

常见故障与排查:

故障现象可能原因解决方案
提示 "Windows\System32\ntoskrnl.exe missing"内核文件损坏、磁盘错误运行 chkdsk /f,从备份恢复
提示 "hal.dll missing"HAL 不匹配、ACPI 问题尝试 bootrec /rebuildbcd,检查 BIOS 设置
蓝屏 0x7B (INACCESSIBLE_BOOT_DEVICE)磁盘控制器驱动缺失、SATA 模式变更改回 AHCI/IDE 模式,或注入驱动
蓝屏 0x50 (PAGE_FAULT_IN_NONPAGED_AREA)内存故障、驱动 Bug内存检测,安全模式卸载驱动

阶段四:初始化内核阶段(Kernel Initialization)

详细流程:

展开代码
内核初始化 │ ├── 创建 Hardware 注册表键(硬件枚举) │ ├── 复制 Control Set(CurrentControlSet ← Clone) │ ├── 加载 boot-start 驱动(Start=0) │ ├── 磁盘驱动 │ ├── 文件系统驱动 │ └── 总线驱动 │ ├── 加载 system-start 驱动(Start=1) │ ├── 启动 smss.exe(会话管理器) │ ├── 创建虚拟内存页面文件 │ ├── 启动 csrss.exe(Win32 子系统) │ └── 启动 wininit.exe │ └── 启动 services.exe(服务控制管理器) └── 启动 auto-start 服务(Start=2)

关键进程:

进程作用父进程
smss.exe会话管理器,创建第一个会话内核
csrss.exeWin32 子系统,管理控制台smss.exe
wininit.exe初始化 Windows,启动服务smss.exe
services.exe服务控制管理器(SCM)wininit.exe
lsass.exe本地安全认证子系统wininit.exe
winlogon.exe登录管理器smss.exe(第二个实例)

启动日志分析:

展开代码
# 启用启动日志(在 msconfig 或 bcdedit) bcdedit /set {default} bootlog Yes # 日志位置 C:\Windows\ntbtlog.txt # 分析(查找 FAILED) findstr /i "failed" C:\Windows\ntbtlog.txt

常见故障与排查:

故障现象可能原因解决方案
卡 Windows 徽标 + 转圈驱动冲突、服务超时、磁盘故障见下方专题排查
提示 "Preparing automatic repair"上次启动失败,自动修复等待或强制关机进 WinRE
黑屏只有鼠标显卡驱动、Explorer 未启动安全模式重装显卡驱动
提示 "Session Manager Initialization failed"注册表损坏、系统文件丢失sfc /scannow,系统还原
服务启动超时服务依赖循环、磁盘极慢安全模式禁用服务,换 SSD

阶段五:登录阶段(Logon)

详细流程:

展开代码
winlogon.exe 启动 │ ├── 启动 lsass.exe(安全子系统) │ ├── 显示登录界面(Ctrl+Alt+Del) │ ├── 用户输入凭据 │ ↓ ├── lsass 验证(本地 SAM / 域 AD / Azure AD) │ ↓ ├── 创建用户会话,加载用户配置文件 │ ├── HKEY_CURRENT_USER │ ├── C:\Users\<用户名> │ └── 启动文件夹程序 │ ├── 启动 Explorer.exe(桌面) │ └── 启动剩余 auto-start 服务

用户配置文件类型:

类型位置特点
本地配置文件C:\Users<用户名>默认,单台机器
漫游配置文件网络共享域环境,跨机器同步
强制配置文件.man 扩展名只读,重启还原
临时配置文件Temp 目录原配置文件损坏时 fallback

常见故障与排查:

故障现象可能原因解决方案
提示 "The User Profile Service failed the logon"配置文件损坏、NTUSER.DAT 锁定删除 C:\Users<用户名>.bak,重建
登录后黑屏/无桌面Explorer 未启动、Shell 键被改Ctrl+Shift+Esc 启动任务管理器 → 运行 explorer
提示 "Your account has been disabled"账户被禁用管理员账户启用,或进 WinRE 改注册表
域账户登录慢DNS 问题、DC 连接慢检查 DNS 指向,测试 nltest /dsgetdc
临时配置文件登录配置文件损坏、权限问题删除 .bak 文件夹,检查权限
启动项程序不启动组策略限制、注册表错误shell:startup 检查,gpresult /r

三、Windows 启动故障专题:徽标转圈卡死

症状分级诊断

展开代码
卡圈程度 可能原因 ───────────────────────────────────────────────────────── 刚出徽标就卡(< 5秒) → MBR/引导阶段问题 转几圈后卡(10-30秒) → 驱动/服务初始化问题 转很久后蓝屏 → 内核/驱动冲突 转圈但能动鼠标 → 显卡/Explorer 问题

完整排查流程

步骤一:尝试安全模式

展开代码
高级启动选项(开机时强制关机 3 次,或 Shift+重启) │ ├── 启用安全模式 ──→ 能进 → 软件/驱动问题 │ │ │ └── 1. 事件查看器查 Error │ └── 2. msconfig 禁用第三方 │ └── 3. 设备管理器回滚驱动 │ └── 安全模式也卡 ──→ 系统文件/硬件问题 │ └── 步骤二:命令提示符修复

步骤二:命令提示符深度修复

展开代码
# 进入 WinRE → 疑难解答 → 高级选项 → 命令提示符 # 1. 检查磁盘 chkdsk C: /f /r /x # 2. 系统文件检查 sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows # 3. 组件存储修复(Win8+) dism /image:C:\ /cleanup-image /restorehealth # 4. 查看启动日志 notepad C:\Windows\ntbtlog.txt # 5. 查看崩溃转储 dir C:\Windows\Minidump\*.dmp /s # 6. 离线注册表编辑 reg load HKLM\OfflineSystem C:\Windows\System32\config\SYSTEM regedit # 修改后卸载 reg unload HKLM\OfflineSystem

步骤三:驱动级排查(能进安全模式时)

展开代码
# 查看驱动加载状态 driverquery /v > C:\drivers.txt # 查看问题设备 pnputil /enum-devices /problem # 卸载问题驱动 pnputil /delete-driver oemXX.inf /uninstall /force # 禁止驱动自动安装(测试用) reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\DriverSearching" /v SearchOrderConfig /t REG_DWORD /d 0 /f

步骤四:服务与启动项隔离

展开代码
# 干净启动(msconfig 命令行版) reg add "HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\MSIServer" /ve /t REG_SZ /d Service /f # 禁用所有非微软服务(PowerShell) Get-Service | Where-Object {$_.StartType -eq 'Automatic' -and $_.DisplayName -notmatch 'Microsoft|Windows'} | Stop-Service -PassThru | Set-Service -StartupType Disabled

四、Windows 与 Linux 启动对比

特性WindowsLinux
引导程序bootmgr/BCDGRUB2/systemd-boot
配置文件BCD(二进制)grub.cfg(文本)
内核位置C:\Windows\System32\ntoskrnl.exe/boot/vmlinuz-*
初始内存盘无(直接加载)initramfs(必需)
初始化系统services.exe (SCM)systemd/init
服务管理注册表 + SCMsystemd unit 文件
日志系统Event Logjournald / syslog
单用户模式安全模式 / WinRErescue.target / single
修复工具WinRE、DISM、SFCLiveCD、chroot、fsck

五、双系统启动问题

现象:安装 Linux 后 Windows 消失,或反之

解决方案:

展开代码
# Linux 下恢复 Windows 启动项 sudo update-grub sudo grub-install /dev/sda # Windows 下恢复 Linux(使用 EasyBCD 或手动) # 或使用 Windows 安装盘修复: bootrec /scanos bootrec /rebuildbcd

第三部分:通用故障排查工具箱

启动介质制作

系统工具用途
LinuxRufus / Ventoy / dd制作 LiveUSB
WindowsMedia Creation Tool / Rufus制作安装/修复U盘
通用Hiren's BootCD PE多功能维护盘
通用Ultimate Boot CD (UBCD)硬件诊断

日志分析

系统关键日志查看工具
Linux/var/log/syslog, journalctlless, journalctl, dmesg
WindowsEvent Viewer, C:\Windows\Logseventvwr.msc, notepad

硬件诊断

组件Linux 工具Windows 工具
内存memtest86+Windows Memory Diagnostic
硬盘smartctl, badblockschkdsk, CrystalDiskInfo
CPUstress, prime95Prime95, Intel/AMD 官方工具
显卡glxgears, nvidia-smiFurMark, GPU-Z

速记

场景LinuxWindows
引导修复grub-install && update-grubbootrec /fixmbr /fixboot /rebuildbcd
单用户模式systemctl isolate rescue.targetbcdedit /set safeboot minimal
查看启动日志journalctl -bC:\Windows\ntbtlog.txt
系统文件修复fsck + pacman -Syusfc /scannow + DISM
驱动问题lsmod + modprobepnputil + devmgmt.msc
完全无法启动LiveCD chrootWinRE 命令提示符

本文作者:zzz

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!