展开代码┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 阶段一 │ → │ 阶段二 │ → │ 阶段三 │ │ BIOS/UEFI │ │ Bootloader │ │ Kernel │ │ 硬件自检 │ │ 引导加载 │ │ 内核启动 │ └─────────────┘ └─────────────┘ └─────────────┘ ↓ ↓ ↓ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 阶段四 │ → │ 阶段五 │ → │ 阶段六 │ │ init │ │ Runlevel │ │ Login │ │ 初始化系统 │ │ 运行级别 │ │ 用户登录 │ │ (systemd) │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘
详细流程:
| 顺序 | 操作 | 说明 |
|---|---|---|
| 1 | Power On | 电源按钮触发,主板供电 |
| 2 | POST (Power-On Self Test) | 检测 CPU、内存、显卡、键盘等关键硬件 |
| 3 | CMOS 读取 | 加载 BIOS 设置(启动顺序、时间、硬件配置) |
| 4 | 设备初始化 | 初始化硬盘控制器、USB 控制器等 |
| 5 | 查找引导设备 | 按 Boot Order 查找可启动设备 |
UEFI vs BIOS 差异:
| 特性 | 传统 BIOS | UEFI |
|---|---|---|
| 分区表 | 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 | 适用场景 | 配置文件 | 特点 |
|---|---|---|---|
| GRUB2 | 现代 Linux 主流 | /boot/grub/grub.cfg | 功能强大,支持 LVM、RAID、加密 |
| GRUB Legacy | 旧系统 | /boot/grub/menu.lst | 简单,已逐步淘汰 |
| systemd-boot | UEFI 系统 | /boot/efi/loader/entries/*.conf | 轻量,与 systemd 集成 |
| LILO | 古董级 | /etc/lilo.conf | 已废弃,不支持大硬盘 |
| rEFInd | 多系统 Mac/PC | refind.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
内核启动详细流程:
展开代码实模式 → 保护模式 → 长模式(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 秒让磁盘就绪
传统 SysVinit vs 现代 systemd:
| 特性 | SysVinit | systemd |
|---|---|---|
| 启动速度 | 慢(串行) | 快(并行) |
| 依赖管理 | 手动编号(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 vs systemd Target:
| Runlevel | systemd Target | 说明 |
|---|---|---|
| 0 | poweroff.target | 关机 |
| 1 | rescue.target | 单用户/救援模式 |
| 2,3,4 | multi-user.target | 多用户文本模式 |
| 5 | graphical.target | 图形界面模式 |
| 6 | reboot.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 |
展开代码启动失败 │ ├── 黑屏/无显示 ─────→ 检查硬件、BIOS、显卡 │ ├── 卡在 BIOS ───────→ 拔掉外设、重置 BIOS、检查硬盘 │ ├── GRUB Rescue ─────→ 修复引导、重建 grub.cfg │ ├── Kernel Panic ────→ 查看错误信息、尝试旧内核、检查硬件 │ ├── 进入 Initramfs ──→ 修复根文件系统、检查 fstab │ ├── 服务启动失败 ────→ systemd-analyze blame、journalctl │ └── 登录失败 ────────→ 检查 PAM、权限、磁盘空间
展开代码┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 阶段一 │ → │ 阶段二 │ → │ 阶段三 │ │ 预引导阶段 │ │ 引导阶段 │ │ 载入内核阶段 │ │ Pre-boot │ │ Boot │ │ Kernel Load │ │ (POST+MBR) │ │ (Ntldr/BCD)│ │ │ └─────────────┘ └─────────────┘ └─────────────┘ ↓ ↓ ↓ ┌─────────────┐ ┌─────────────┐ │ 阶段四 │ → │ 阶段五 │ │ 初始化内核阶段 │ │ 登录阶段 │ │ Kernel Init │ │ Logon │ │ │ │ │ └─────────────┘ └─────────────┘
详细流程:
| 顺序 | 组件 | 操作 |
|---|---|---|
| 1 | POST | 硬件自检,同 Linux BIOS |
| 2 | BIOS/UEFI | 查找启动设备 |
| 3 | MBR (Legacy) | 读取主引导记录,定位活动分区 |
| 4 | GPT + UEFI | 读取 EFI 系统分区,加载 .efi 文件 |
| 5 | VBR (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
关键组件:
| 组件 | 作用 | 位置 |
|---|---|---|
| bootmgr | Windows 启动管理器 | 活动分区 /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 |
关键操作:
| 顺序 | 操作 | 说明 |
|---|---|---|
| 1 | winload.exe 加载 | 从 BCD 指定的路径加载 |
| 2 | 加载 ntoskrnl.exe | Windows 内核 |
| 3 | 加载 hal.dll | 硬件抽象层 |
| 4 | 加载注册表 SYSTEM hive | HKEY_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 | 内存检测,安全模式卸载驱动 |
详细流程:
展开代码内核初始化 │ ├── 创建 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.exe | Win32 子系统,管理控制台 | 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 |
详细流程:
展开代码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 |
展开代码卡圈程度 可能原因 ───────────────────────────────────────────────────────── 刚出徽标就卡(< 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 |
|---|---|---|
| 引导程序 | bootmgr/BCD | GRUB2/systemd-boot |
| 配置文件 | BCD(二进制) | grub.cfg(文本) |
| 内核位置 | C:\Windows\System32\ntoskrnl.exe | /boot/vmlinuz-* |
| 初始内存盘 | 无(直接加载) | initramfs(必需) |
| 初始化系统 | services.exe (SCM) | systemd/init |
| 服务管理 | 注册表 + SCM | systemd unit 文件 |
| 日志系统 | Event Log | journald / syslog |
| 单用户模式 | 安全模式 / WinRE | rescue.target / single |
| 修复工具 | WinRE、DISM、SFC | LiveCD、chroot、fsck |
现象:安装 Linux 后 Windows 消失,或反之
解决方案:
展开代码# Linux 下恢复 Windows 启动项 sudo update-grub sudo grub-install /dev/sda # Windows 下恢复 Linux(使用 EasyBCD 或手动) # 或使用 Windows 安装盘修复: bootrec /scanos bootrec /rebuildbcd
| 系统 | 工具 | 用途 |
|---|---|---|
| Linux | Rufus / Ventoy / dd | 制作 LiveUSB |
| Windows | Media Creation Tool / Rufus | 制作安装/修复U盘 |
| 通用 | Hiren's BootCD PE | 多功能维护盘 |
| 通用 | Ultimate Boot CD (UBCD) | 硬件诊断 |
| 系统 | 关键日志 | 查看工具 |
|---|---|---|
| Linux | /var/log/syslog, journalctl | less, journalctl, dmesg |
| Windows | Event Viewer, C:\Windows\Logs | eventvwr.msc, notepad |
| 组件 | Linux 工具 | Windows 工具 |
|---|---|---|
| 内存 | memtest86+ | Windows Memory Diagnostic |
| 硬盘 | smartctl, badblocks | chkdsk, CrystalDiskInfo |
| CPU | stress, prime95 | Prime95, Intel/AMD 官方工具 |
| 显卡 | glxgears, nvidia-smi | FurMark, GPU-Z |
| 场景 | Linux | Windows |
|---|---|---|
| 引导修复 | grub-install && update-grub | bootrec /fixmbr /fixboot /rebuildbcd |
| 单用户模式 | systemctl isolate rescue.target | bcdedit /set safeboot minimal |
| 查看启动日志 | journalctl -b | C:\Windows\ntbtlog.txt |
| 系统文件修复 | fsck + pacman -Syu | sfc /scannow + DISM |
| 驱动问题 | lsmod + modprobe | pnputil + devmgmt.msc |
| 完全无法启动 | LiveCD chroot | WinRE 命令提示符 |
本文作者:zzz
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!