开机卡在 emergency mode 通常是 /etc/fstab 中 UUID 错误或设备不存在所致;需通过 GRUB 添加 systemd.unit=emergency.target 进入 emergency shell,重挂载根为可写,用 blkid 核对并修正 fstab,再 mount -a 验证后重启。

开机卡在 emergency mode,多数情况是 /etc/fstab 中某行 UUID 错误或对应设备不存在,系统无法按预期挂载分区。修复核心思路是:绕过正常启动流程,进入可编辑环境,修正 fstab 后重启。
进入 recovery shell(关键第一步)
重启时在 GRUB 菜单按 e 编辑启动参数,在以 linux 开头的行末尾添加 systemd.unit=emergency.target 或更常用的 rd.break(RHEL/CentOS)或 init=/bin/bash(部分 Debian/Ubuntu 变体)。推荐用 systemd.unit=emergency.target,它会进入带完整工具链的 emergency shell,且 root 文件系统默认以只读挂载。
按 Ctrl+X 或 F10 启动进入 emergency 模式,提示符出现后先执行:
-
mount -o remount,rw /—— 重新挂载根文件系统为可写 -
lsblk -f或blkid—— 查看当前实际设备及其正确 UUID
定位并修正错误的 fstab 条目
用 cat /etc/fstab 查看内容,重点关注报错信息中提到的挂载点(如 /home、/data),或发现 UUID 格式明显异常(如含空格、长度不对、或与 blkid 输出不匹配)的行。
用编辑器打开修正(推荐 nano /etc/fstab,若无 nano 可用 vi):
- 确认每行第 1 列(UUID=xxx)是否真实存在于
blkid输出中 - 检查第 2 列挂载点路径是否存在(
mkdir -p /mnt/data可补建目录,但 fstab 错误通常不因目录缺失触发 emergency) - 临时排除可疑行:在行首加
#注释掉,保存退出
验证 fstab 并安全重启
修正后不要直接 reboot,先做两步验证:
-
mount -a—— 尝试挂载所有 fstab 中未注释的条目;若无报错,说明语法和设备均正常 -
systemctl daemon-reload—— 通知 systemd 重新读取配置(非必需但稳妥)
确认无误后执行:
-
exec /sbin/init或reboot -f—— 强制重启,走正常启动流程
预防建议
今后修改 fstab 前养成习惯:
- 用
blkid复制 UUID,避免手动输入错误 - 新增条目前先
mkdir -p /挂载点并mount -U "xxx" /挂载点手动测试一次 - 保留一份干净的 fstab 备份:
cp /etc/fstab /etc/fstab.bak - 考虑用设备名(如
/dev/disk/by-label/)替代 UUID,对可插拔设备更友好(但系统盘仍推荐 UUID)










