☰
磁盘实战 06|/etc/fstab 写错开不了机:UUID 挂载、mount -a 验证与救援模式恢复全流程
2026/10/8 6:43:40 网站建设 项目流程

给数据盘配开机自动挂载,我往/etc/fstab里抄了一行,把挂载点打错了一个字母。当时心想:小事,下次开机进系统改回来。

下次开机,屏幕黑底白字停在半路,最后蹦出几行英文和一个闪烁的光标,大意是进入紧急模式(emergency mode),按回车获得 shell。我的第一感受不是「怎么修」,而是「完了,机器是不是废了」。

后来这类故障处理多了,才知道它是新手友好度最高的重大故障之一:系统自己停下来等你修,数据一点没丢,修法也就五分钟。这篇讲怎么五分钟修好,以及怎么从一开始就不写错。

〇、先花两分钟:「挂载」是个什么动作

Linux 里没有 C 盘 D 盘。所有文件系统都要「嫁接」到唯一的目录树上才能访问——把/dev/sdb1(一个文件系统)接到/mnt/data(目录树上的一个空目录)上,这个对接动作就是挂载(mount)。嫁接之后,/mnt/data里放的就是 sdb1 的内容;拆下来(umount),目录变回空目录。

fstab 就是「开机自动挂载清单」:系统启动时逐行读它,按清单把各文件系统挂到各目录。所以它出错的后果也直白——清单里有一行挂不上,启动流程就卡住,进紧急模式等你处理。

看当前挂载关系的两条命令:

findmnt / # 看 / 挂在哪个设备上 lsblk -f # 看所有盘的文件系统、UUID、挂载点

怎么读:lsblk -f每个分区下面三行——FSTYPE(文件系统类型)、UUID(全局唯一编号)、MOUNTPOINTS。fstab 里就该用 UUID 认盘,原因见下节。

图示:fstab 六列、救援五步、两条预防验证命令

一、fstab 六个字段逐列讲

# <设备> <挂载点> <类型> <选项> <dump> <pass> UUID=xxxx-xxxx-xxxx-xxxx /data ext4 defaults 0 2 /swapfile none swap sw 0 0 UUID=yyyy-…-yyyy /boot/efi vfat umask=0077 0 2 tmpfs /tmp tmpfs defaults,noatime 0 0
列含义要点
设备用什么写 UUID=…,不写 /dev/sdb1(sdb 顺序随插拔变,UUID 跟着文件系统走,永不漂移)
挂载点接到哪目录必须已存在,且最好为空(挂上后原内容被遮住)
类型什么文件系统ext4 / xfs / vfat / swap / tmpfs,看lsblk -f的 FSTYPE
选项怎么挂defaults够用;想加就逗号连接(如defaults,noatime)
dump备份工具用基本永远 0(那个工具已淘汰)
pass开机 fsck 顺序根分区 1,其他 ext/xfs 写 2,swap 和 tmpfs 必须 0

UUID 从哪抄:lsblk -f或sudo blkid的输出里复制,整串连同 UUID= 前缀写进 fstab。手抄错一位的后果就是开不了机——所以复制粘贴,别手打。

二、救命习惯:改完 fstab,先跑 mount -a

这是本篇最值钱的一条命令:

sudo mount -a

怎么读:它按 fstab 的内容把所有还没挂载的条目立刻挂一遍。等同于把「下次开机要做的事」现在预演一遍:

  • 没有报错 → 清单健康,重启无忧;

  • 报错(比如挂载点不存在、UUID 错)→现在就知道,现在就能改,成本为零。

进阶一点的验证还有一条:

sudo findmnt --verify

怎么读:不真挂载,只做静态检查(字段数对不对、挂载点存不存在、选项拼错没有),比mount -a更安全——连「验证动作本身」都不会产生副作用。两个都用上,fstab 写错的概率趋近于零。

我那次事故如果有这个习惯,根本不会发生。这也是为什么它值得单独成节。

三、真开不了机了:救援五步

fstab 错导致卡紧急模式,开机后你会看到提示输入 root 密码(或按提示进 maintenance shell)。然后:

# 1. 想想错在哪(看最近的开机日志,fstab 相关错误一眼可见) journalctl -b -p err ​ # 2. 紧急模式里根分区通常只读,先改成可写 mount -o remount,rw / ​ # 3. 改回 fstab(vi/nano 都行;没网、没图形界面,就用最原始的方式) nano /etc/fstab ​ # 4. 验证一遍再走 mount -a ​ # 5. 重启 reboot

两个翻车点提前说:

  1. root 密码输不进去——Ubuntu 默认锁 root(C1 讲过),如果这台机器 root 没密码,紧急模式的密码提示会一直失败。绕法:开机在 GRUB 菜单选 recovery mode → root shell,或者用安装盘/U 盘启动后挂载原系统修(mount /dev/sda2 /mnt后改/mnt/etc/fstab);

  2. remount,rw报错——说明根分区本身有问题(比如 fsck 没过),这时先跑fsck处理它提示的问题再继续。

修完重启进系统后,记得回头把 journalctl 里那个报错对着 fstab 看一眼——知道自己错在哪一列,下次才不会再错。

四、和前后篇的关系

  • 设备怎么认(UUID)、类型哪来的(lsblk -f)都接自D2/D4;

  • 紧急模式里「root 锁定登不进」呼应C1(su/sudo 那篇的 root 锁定话题);

  • fstab 是 D 组的收尾:分区(D2)→ 文件系统(D4)→ 开机自动挂载(本篇),磁盘三板斧齐了。

速查表(文末收藏版)

看挂载关系 → findmnt / / lsblk -f fstab 认盘用 → UUID=整串(lsblk -f 或 sudo blkid 抄,复制别手打) 六列口诀 → 设备 挂载点 类型 选项 0 pass (根=1,其他 ext/xfs=2,swap/tmpfs=0) 改完必做 → sudo mount -a (真挂一遍,预演开机) (sudo findmnt --verify (静态检查,更安全) 卡紧急模式 → journalctl -b -p err 找元凶 → mount -o remount,rw / → nano /etc/fstab 改 → mount -a → reboot root 登不进 → GRUB 选 recovery mode,或 U 盘启动挂原盘改 /mnt/etc/fstab 挂载点必须 → 已存在、最好为空

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询