# 系统起不来时的救援 ## 场景 改完 fstab、升级内核、误删文件后,机器卡在 `emergency mode` 或者 grub 菜单进不去系统。 ## 前置条件 - 有控制台 / 带外(iDRAC、iLO、VM 控制台) - 知道 root 密码(重置时不需要) - 有安装 ISO 或救援盘 ## 配置 ### 情况一:fstab 写错 → emergency mode 登录后: ```bash mount -o remount,rw / cat /etc/fstab # 找到写错的那一行,注释掉 vi /etc/fstab mount -a reboot ``` ### 情况二:忘记 root 密码 在 grub 菜单按 `e` 编辑启动项,在 `linux` 那行末尾加: ```text rd.break ``` 按 `Ctrl+X` 启动,进入后: ```bash mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel # SELinux 开启时必须 exit reboot ``` ### 情况三:grub 损坏 / 进不了系统 用安装 ISO 启动 → 选「救援模式」: ```bash chroot /mnt/sysimage grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg exit reboot ``` ### 情况四:文件系统损坏 ```bash fsck -y /dev/mapper/vg-root ``` XFS 不能用 fsck,用 `xfs_repair`: ```bash xfs_repair /dev/mapper/vg-root ``` ## 验证 正常启动,`systemctl --failed` 没有失败单元,`df -h` 挂载都在。 ## 回滚 救援操作本身是在修,没有回滚。动手前尽量先备份关键配置: ```bash cp /etc/fstab /etc/fstab.bak ``` ## 坑 - **fstab 改完不 `mount -a` 验证**,重启就进 emergency mode。 - SELinux 开启时 `rd.break` 重置密码要 `touch /.autorelabel`,否则登录不了。 - XFS 用 `fsck` 修不了,得用 `xfs_repair`。 - 用 ISO 救援时 `chroot` 前要先 `mount` 根分区,否则改的是救援系统。 - 强行断电导致的损坏,先备份数据再做修复。 - 内核升级后起不来,可以在 grub 里选旧内核先救急。