深色模式
启动流程与排错
摘要:机器起不来先别慌,按"固件→引导→内核→服务"四段定位。本文梳理开机顺序,并给出卡在某阶段的排查入口。前提:有控制台/带外访问(云上 VNC)。
适用环境
bash
systemctl --version | head -1 # 确认用 systemd
ls /boot/grub2/grub.cfg 2>/dev/null || ls /boot/grub/grub.cfg 2>/dev/null1
2
2
一、理解四段启动
text
1) 固件层:BIOS(Legacy) 或 UEFI 做自检,找启动设备
2) 引导层:GRUB2 加载内核与 initramfs
3) 内核层:解压内核、挂根文件系统、启动 init
4) 用户层:systemd 按 target 拉起服务(默认 multi-user/graphical)1
2
3
4
2
3
4
二、查看启动耗时与失败服务
bash
systemd-analyze # 看内核/用户态/总耗时
systemd-analyze blame | head # 哪些服务最慢
systemctl --failed # 列出开机失败的服务(关键排错入口)1
2
3
2
3
三、GRUB 与内核参数
bash
# 编辑 /etc/default/grub 的 GRUB_CMDLINE_LINUX
# 例如加 "quiet" 关冗余、加 "systemd.unit=rescue.target" 进救援
grub2-mkconfig -o /boot/grub2/grub.cfg # 重新生成(路径按发行版)1
2
3
2
3
验证
- [ ] 能口述四段启动顺序
- [ ]
systemctl --failed无意外失败项 - [ ]
systemd-analyze能给出启动耗时
常见坑
- 改 grub 忘重新生成:只改
/etc/default/grub不执行 mkconfig 不会生效。 - fstab 挂了根起不来:挂载失败会进 emergency,救援模式下
mount -o remount,rw /修。 - UUID 变更:换了磁盘/克隆后 grub 的 root=UUID 对不上,需更新。
- mask 掉关键服务:
systemctl mask后连依赖它的服务都起不来,慎用。