0aa8fe6
这次没有正文改动。
这是 linux/系统起不来时的救援.md 的改动记录。后台每次保存都会留一份快照,
这里显示的是快照之间的差异,不会混入其他文章的改动。
还没有后台修改记录。
下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。
0aa8fe6
这次没有正文改动。
69302a9
@@ -0,0 +1,95 @@ +--- +tags: [救援模式, 系统修复, GRUB] +order: 95 +--- + +# 系统起不来时的救援 + +## 场景 + +改完 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 里选旧内核先救急。