跳过Linux启动时损坏分区的fsck检查,应将/etc/fstab中对应行pass字段改为0并执行systemctl daemon-reload;临时方案为GRUB启动参数添加fsck.mode=skip;ext4脏位需用e2fsck在未挂载状态下清除。

Linux 启动时跳过损坏分区的自动检查,核心是阻止 fsck 在挂载前对该分区执行检测。只要检测失败(如设备不存在、UUID 错误、文件系统损坏),systemd 就会中止启动并进入 emergency mode。跳过的关键不在于“绕过挂载”,而在于让系统彻底忽略对该分区的 fsck 调用。
修改 /etc/fstab 中的 pass 字段(推荐永久方案)
这是最稳妥、通用且长期有效的做法,适用于 ext4、xfs、btrfs 等主流文件系统。
- pass 字段是每行第六列,控制该分区是否参与开机 fsck:0 表示跳过,1 专用于根分区,2+ 表示需检查的普通分区
- 找到出问题的那行(例如挂载
/data或/home的行),把末尾数字改成0:
原:UUID=abcd1234 /data ext4 defaults 0 2
改后:UUID=abcd1234 /data ext4 defaults 0 0 - 修改前先备份:
sudo cp /etc/fstab /etc/fstab.bak - 改完务必验证语法:
sudo mount -a—— 若无报错,说明 fstab 格式正确;若有错,立即修正,否则重启可能失败 - ⚠️关键一步:运行
sudo systemctl daemon-reload,否则 systemd 仍按旧缓存执行检查
启动时临时跳过(适合快速验证或应急)
无需改动系统文件,但每次重启都需手动操作,仅限单次生效。
- 开机进 GRUB 菜单,按
e编辑启动项 - 定位到以
linux开头的行,在行末添加空格后输入:fsck.mode=skip - 按
Ctrl+X或F10启动 —— 此次将完全跳过所有 fsck 检查 - 若已卡在 emergency shell 且根分区已 remount 为读写,可临时注释掉 fstab 中对应行的整行,或把其 pass 值改为 0 后执行
systemctl daemon-reload && exit
清除 ext4 分区的“脏位”标记(针对异常断电后必做)
即使设了 pass=0 或加了 fsck.mode=skip,如果 ext4 分区被内核标记为 needs checking(如因强制关机),仍可能触发强制检查。
- 需在未挂载状态下清除该状态,推荐使用 Live 环境(如 UOS/Ubuntu 安装盘的“试用模式”)
- 用
sudo fdisk -l或lsblk -f找到目标分区(如/dev/nvme0n1p2) - 运行:
sudo dumpe2fs -h /dev/nvme0n1p2 | grep -i "file system state",若输出含not clean,说明脏位存在 - 执行修复清除:
sudo e2fsck -f -y /dev/nvme0n1p2(-f强制检查,-y自动确认)
避免常见误区
有些操作看似能“跳过检查”,实则无效甚至有害:
- 把 GRUB 中的
ro改成rw—— 这只影响根分区挂载权限,和 fsck 完全无关 - 仅修改 fstab 却不执行
systemctl daemon-reload—— systemd 不会重新读取,设置无效 - 对已挂载的分区直接运行
fsck—— 极大概率导致二次损坏,必须卸载或进 Live/救援环境 - 误以为
fsck.mode=skip能解决挂载失败 —— 它只跳过“检查”,不解决 UUID 错、设备缺失、文件系统类型不匹配等挂载层面的问题


















