一、先搞懂 Linux 启动流程,才能谈排查

IDC 机房里的服务器一旦起不来,运维的第一反应往往是重启,但盲目重启十有八九会把现场搞丢。排查启动故障前,先在心里过一遍完整启动链:

BIOS/UEFI 自检 → 引导加载器(GRUB2) → 内核 vmlinuz → initramfs → systemd → 目标单元

故障发生在哪一环,症状完全不同:黑屏无输出大概率是硬件或固件层;卡在 GRUB 界面是引导配置问题;内核 panic 是内核参数或驱动问题;进入系统后起不来服务则是 systemd 单元问题。按环节逐层定位,是最高效的思路。

二、GRUB 引导故障排查

2.1 常见症状:grub rescue >

出现 grub rescue> 提示符,说明 GRUB 找不到引导文件,常见原因:grub 配置文件损坏、/boot 分区被误格式化、磁盘顺序变化(加盘/换盘后 BIOS 引导顺序改变)。应急处理:

# 先用 ls 找到包含 /boot 的盘符grub rescue> ls(hd0) (hd0,msdos1) (hd0,msdos2)# 逐个试探哪个分区有 /boot/grubgrub rescue> ls (hd0,msdos1)/grub rescue> set root=(hd0,msdos1)grub rescue> set prefix=(hd0,msdos1)/boot/grubgrub rescue> insmod normalgrub rescue> normal

能进 GRUB 菜单后,进系统立即重新安装 GRUB:

grub2-install /dev/sdagrub2-mkconfig -o /boot/grub2/grub.cfg

2.2 修复被覆盖的 MBR/EFI 引导

装了双系统或者误装 Windows 引导后,Linux 引导丢失。用系统盘进入救援模式,chroot 后重新安装引导:

# UEFI 环境mount /dev/sda1 /boot/efigrub2-install --target=x86_64-efi --efi-directory=/boot/efigrub2-mkconfig -o /boot/grub2/grub.cfg

三、内核参数与单用户模式

3.1 忘记 root 密码或系统异常

在 GRUB 菜单按 e 编辑启动项,找到 linux16 开头的行,在末尾追加参数:

# 进入单用户模式重置密码(RHEL/CentOS 7+ 用 rd.break)rd.break# 然后依次执行mount -o remount,rw /sysrootchroot /sysrootpasswd roottouch /.autorelabel   # SELinux 开启时需要exitexit

Ubuntu/Debian 则是在内核参数行末尾加 singleinit=/bin/bash,同样可以重置密码或修复 fstab。

3.2 initramfs 缺失或损坏

启动时报 unable to find a medium containing a live file system 或卡在 switch_root,一般是 initramfs 与内核版本不匹配或文件损坏。进入救援模式后重建:

# 查看当前内核版本uname -r# 重建 initramfs(RHEL 系)mkinitrd -f /boot/initramfs-$(uname -r).img $(uname -r)# 或dracut -f /boot/initramfs-$(uname -r).img $(uname -r)# Debian/Ubuntu 系update-initramfs -u -k all

四、systemd 层面的启动问题

系统能进但很慢,或者部分服务起不来,用 systemd 自带的工具分析:

# 查看启动耗时排行systemd-analyze blame | head -20# 查看关键链路的等待时间systemd-analyze critical-chain# 查看启动失败的服务systemctl --failed# 看某个服务的完整启动日志journalctl -u nginx.service -b

实战中 90% 的"启动慢"问题都出在 network-online.target 等待、fstab 里挂载了不存在的网络盘、以及某个服务超时(默认 90 秒)。排查方向对了,几分钟就能定位。

五、救援模式实战(系统完全起不来时)

系统彻底起不来时,用同版本安装盘/ISO 启动,选择 Rescue 模式,把原系统挂载到 /mnt/sysimage 并 chroot:

# 救援环境内chroot /mnt/sysimage# 修复 fstab 错误挂载项vi /etc/fstab# 修复 GRUB(见上文)grub2-install /dev/sdagrub2-mkconfig -o /boot/grub2/grub.cfgexitreboot

没有安装盘怎么办?保留一个同版本的备用内核是 IDC 运维的基本素养——多装一个内核,即使当前内核损坏也能从 GRUB 高级选项里选旧内核启动,再回来修复。

六、常见启动故障速查表

故障现象可能原因首选排查手段
黑屏无 BIOS 界面内存/电源/主板故障硬件巡检、看面板告警灯
grub rescue> 提示符GRUB 配置损坏或 /boot 分区问题set root/prefix 后 normal 修复
卡在内核加载后无输出内核参数或驱动冲突追加 nomodeset 等参数尝试
kernel panic - not syncing根文件系统挂载失败检查 fstab、initramfs 重建
服务起不来导致进不了 multi-usersystemd 单元失败单用户模式 disable 该服务
启动极慢(90s 卡顿)网络等待或挂载超时systemd-analyze blame 定位

七、给 IDC 运维的三个建议

第一,改配置前先备份,/etc/fstab、grub.cfg、内核相关文件动之前 cp 一份,成本极低收益极大。第二,保留多内核,升级内核后先验证再清理旧内核。第三,测试机先演练,救援流程、密码重置、GRUB 修复这些操作,建议在测试机上完整跑一遍,别等生产故障时现学。启动故障不可怕,可怕的是没有预案。