fstab中uuid错误导致开机卡在emergency mode,需通过grub添加systemd.unit=emergency.target进入emergency shell,重挂载根为可写,用blkid核对并修正fstab,再mount -a验证后重启。

电脑开机后没进Windows桌面,直接卡在黑底白字的急救模式(Emergency Mode)界面,连输入密码都进不去图形界面,说明系统启动流程在某个环节严重出错,必须手动干预才能恢复。
确认当前所处模式类型
先看清屏幕顶部是否显示 【emergency mode】 或 【initramfs】 提示。如果是前者,属于 systemd 系统的紧急模式;如果是后者,大概率是 initramfs 阶段挂载根文件系统失败——两者处理路径完全不同,不能混用命令。
按 Ctrl+Alt+F2 切换到 tty2 终端(部分系统需先输 root 密码),再执行 systemctl get-default。若返回 multi-user.target 或 graphical.target,说明默认目标正常,问题出在服务依赖链上;若返回空或报错,则默认目标已被破坏。
修复 fstab 错误挂载项
绝大多数急救模式触发原因,是 /etc/fstab 里写了已不存在、格式错误或 UUID 变更的磁盘挂载项。系统尝试挂载失败后自动进入 emergency mode 等待人工干预。
执行 cat /etc/fstab 查看所有挂载行,重点检查含 ext4、xfs、ntfs 的行,以及末尾为 1 或 2 的 fs_passno 字段(表示需 fsck 检查)。
找到可疑行(比如挂载了已拔掉的U盘、RAID阵列失效、或 Windows 分区被误标为 Linux 格式),用 nano /etc/fstab 编辑,把整行前面加 # 注释掉。这一步必须做,否则每次重启都会重蹈覆辙。
【注:不要直接删除 fstab 文件!】 否则可能导致根分区无法识别,系统彻底无法启动。
强制退出并重启系统
方法一:退出当前 shell 并触发正常启动
输入 exit,系统会自动尝试继续启动流程。如果 fstab 已修正且无其他阻塞服务,将直接进入登录界面。
方法二:跳过 emergency mode 强制进入 multi-user
在急救模式提示符下输入:systemctl default
这条命令会绕过当前 emergency 状态,强制加载默认 target。
方法三:临时禁用所有挂载等待(仅限排查)
执行:systemctl mask local-fs.target
再输入 exec /sbin/init。此操作会跳过所有本地文件系统挂载检查,适合快速验证是否为 fstab 单一问题——但不可长期使用,下次重启前务必取消屏蔽:systemctl unmask local-fs.target。
验证修复效果
第一步:重启测试
输入 reboot -f 强制重启,观察是否跳过急救界面直接进入登录屏。若仍进入 emergency mode,说明还有未注释的错误挂载项或磁盘硬件异常。
第二步:检查磁盘状态
成功进入系统后,立即打开终端,运行:sudo blkid 对照 /etc/fstab 中的 UUID 是否匹配;sudo systemctl list-units --failed 查看是否有启动失败的服务残留。
第三步:修复已损坏的文件系统(如必要)
若 blkid 显示某分区 UUID 为空或类型异常,可能是 ext4 超级块损坏。先卸载该分区:sudo umount /dev/sdXN,再执行:sudo e2fsck -y -b 32768 /dev/sdXN
其中 -b 32768 指定使用备份超级块(适用于 4KB block size 的常见情况)。











