fstab 中 UUID 写错导致开机 emergency mode 的快速修复流程

12次阅读

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

fstab 中 UUID 写错导致开机 emergency mode 的快速修复流程

开机卡在 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+XF10 启动进入 emergency 模式,提示符出现后先执行:

  • mount -o remount,rw / —— 重新挂载根文件系统为可写
  • lsblk -fblkid —— 查看当前实际设备及其正确 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/initreboot -f —— 强制重启,走正常启动流程

预防建议

今后修改 fstab 前养成习惯:

  • blkid 复制 UUID,避免手动输入错误
  • 新增条目前先 mkdir -p /挂载点mount -U "xxx" /挂载点 手动测试一次
  • 保留一份干净的 fstab 备份:cp /etc/fstab /etc/fstab.bak
  • 考虑用设备名(如 /dev/disk/by-label/)替代 UUID,对可插拔设备更友好(但系统盘仍推荐 UUID)
text=ZqhQzanResources