最稳妥解法是拔掉问题硬盘或进recovery模式改/etc/fstab;nofail拼写错误会导致systemd反复重试超时卡启,需检查拼写、设备存在性、挂载点路径及文件系统类型,并推荐nofail与x-systemd.device-timeout配合使用。
直接拔掉问题硬盘或进 recovery 模式改 /etc/fstab 是最稳妥的解法。nofail 不是“忽略错误”,而是“挂载失败不报错、不阻断启动”——但前提是语法正确。如果把 nofail 写成 no-fail、nofaile 或拼错成其他非法选项,systemd 会当作无效挂载项处理,部分发行版(如 Ubuntu 22.04+、Debian 12)默认启用 systemd.mount-timeout,反复重试后卡在“A start job is running for dev-disk-by…”提示上。
开机长按 Shift(BIOS)或按 Esc(UEFI)调出 GRUB 菜单 → 选中带 (recovery mode) 的内核 → 按 e 编辑启动参数 → 找到以 linux 开头的行 → 在末尾加 systemd.unit=multi-user.target 和 rw init=/bin/bash → Ctrl+X 启动。此时 root 文件系统已挂为可写,执行:
mount -o remount,rw / nano /etc/fstab
重点检查这几处:
nofail 是否拼写正确(不能有下划线、连字符、大小写混用)lsblk 或 blkid | grep -i "your-uuid"
mkdir -p /mnt/data)ntfs 写成 ntfs-3g 在新内核可能不认)nofail 只影响挂载失败时是否中断启动流程;它不控制等待时长。真正决定“卡多久”的是 x-systemd.device-timeout=30(单位秒),默认值通常是 90 秒。如果你的设备响应慢或根本不存在,systemd 会等满 timeout 才放弃。所以仅加 nofail 不够,建议配套加超时:
# 错误写法(只写 nofail) UUID=xxx /mnt/usb vfat defaults,nofail 0 0推荐写法(nofail + 显式超时)
UUID=xxx /mnt/usb vfat defaults,nofail,x-systemd.device-timeout=10 0 0
注意:x-systemd.* 选项只在 systemd 系统生效(即绝大多数现代 Linux),SysVinit 发行版不识别。

即使写了 nofail,以下情况仍可能导致卡顿:
/var/log/extdisk 被 rsyslog 单元 Requires)auto 但没配 noauto,导致 systemd 自动创建挂载单元并参与启动顺序fsck 尝试自动修复并交互等待(加 errors=continue 或 x-systemd.automount 可缓解)_netdev 但网络未就绪,systemd 会等网络 target,此时 nofail 无效真正安全的做法是:非关键盘优先用 noauto + 用户手动挂载,或改用 x-systemd.automount 延迟到首次访问时再挂,避免启动期任何干扰。