Ubuntu USB 硬盘自动挂载(懒人速成版)

目标:开机自动挂载,盘符不变,随便拔插不报错。


第一步:查 UUID

插入硬盘,终端输入: bash sudo lsblk -f 记下你要挂载硬盘的 UUID(那串长字符)。 ### 第二步:建目录 bash sudo mkdir -p /mnt/disk1 ### 第三步:改配置 备份一下(手残必备): bash sudo cp /etc/fstab /etc/fstab.bak 编辑文件: bash sudo nano /etc/fstab 直接复制下面这行,贴到文件最后,改掉 UUID 即可: fstab UUID=你的UUID /mnt/disk1 ntfs-3g defaults,nofail,uid=1000,gid=1000,umask=002 0 2 (如果你不是第一个用户,把 1000 改成 id 命令查出来的数字) ### 第四步:生效 不重启,直接生效: bash sudo mount -a

附:参数极简说明(不想看可以略过)

  • ntfs-3g:用这个,否则不能写。
  • nofail:必加!没插硬盘也能正常开机。
  • uid=1000:必加!否则硬盘只有 root 能写,你只是个过客。 完。

Ubuntu USB 移动硬盘自动挂载完全指南(基于 fstab)

适用场景:需要将 USB 移动硬盘固定挂载到指定目录(如 /mnt/disk1),并解决偶尔拔出硬盘导致系统启动卡顿或权限不足的问题。 适用系统:Ubuntu Desktop/Server


一、 前言

作为开发者,我们经常需要挂载大容量的 USB 机械硬盘来存储代码、镜像或数据。虽然 Ubuntu 的桌面环境会自动挂载,但挂载点不固定(比如每次变成 /media/user/UUID),这在写脚本、配置 Docker 或者编译项目时非常麻烦。 最优雅的解决方案是修改 /etc/fstab 文件,实现开机自动挂载,且挂载点固定。 本文记录了从获取 UUID 到编写稳健配置的全过程,特别是针对“可能偶尔拔掉硬盘”的场景做了特别优化。

二、 操作步骤

1. 获取硬盘 UUID

插入 USB 硬盘,在终端输入:

sudo lsblk -f
# 或者
sudo blkid

找到你的 USB 硬盘(通常是 /dev/sdb1/dev/sdc1),记下:

  • UUID(一串字符,这是硬盘的身份证)
  • FSTYPE(文件系统类型,通常是 ntfsext4

2. 创建挂载点

我们需要给硬盘安个固定的“家”:

sudo mkdir -p /mnt/disk1
sudo mkdir -p /mnt/disk2

3. 备份 fstab(非常重要!)

修改系统配置前,先备份,防手残:

sudo cp /etc/fstab /etc/fstab.bak

如果改错了导致进不去系统,恢复方法是进入 Recovery Mode 执行 mv /etc/fstab.bak /etc/fstab

4. 编辑配置文件

打开配置文件:

sudo nano /etc/fstab

在文件末尾添加以下内容(根据实际 UUID 替换):

# 移动硬盘 1 - 支持热插拔与读写
UUID=你的硬盘1_UUID  /mnt/disk1  ntfs-3g  defaults,nofail,uid=1000,gid=1000,umask=002  0  2
# 移动硬盘 2 - 支持热插拔与读写
UUID=你的硬盘2_UUID  /mnt/disk2  ntfs-3g  defaults,nofail,uid=1000,gid=1000,umask=002  0  2

注意

  1. 如果是 ext4 格式,将 ntfs-3g 改为 ext4,且通常不需要后面的 uid 等参数。
  2. uid=1000 需要确认你当前用户的 ID,输入 id 命令查看。如果你是唯一用户,通常是 1000。

5. 验证配置

无需重启,直接执行:

sudo mount -a
  • 如果没有任何输出:恭喜,配置成功!
  • 模拟拔盘测试:为了验证 nofail 生效,你可以拔掉硬盘后再执行 sudo mount -a。如果依然不报错,说明配置完美。

三、 参数详解(防止遗忘)

这条配置之所以稳健,关键在于参数的选择。让我们拆解一下: fstab UUID=xxxx /mnt/disk1 ntfs-3g defaults,nofail,uid=1000,gid=1000,umask=002 0 2 | 字段 | 含义 | 为什么这样写? | | :--- | :--- | :--- | | UUID=xxxx | 设备标识 | 用 UUID 而不是 /dev/sdb,防止插拔顺序改变导致盘符错乱(比如 A 盘变成了 B 盘)。 | | /mnt/disk1 | 挂载点 | 访问硬盘的入口,保持固定。 | | ntfs-3g | 文件系统 | ntfs-3g 是 Linux 下对 NTFS 格式读写最稳定的驱动。不要只写 ntfs,否则可能无法写入。 | | defaults | 默认选项 | 包含 rw(读写)、exec(执行)等标准配置。 | | nofail | 核心参数 | 开机时如果找不到这块盘(没插),系统忽略错误继续启动。没有这个参数,系统会卡在启动界面或进入救援模式。 | | uid=1000 | 用户 ID | 强制将硬盘文件的所有者设为当前用户。不加这个,硬盘里的文件属于 root,你只能看不能改。 | | umask=002 | 权限掩码 | 控制文件权限,设置为 002 保证当前用户有读写权限,其他人没有。 | | 0 | dump 开关 | 0 表示不使用 dump 备份。 | | 2 | 开机自检 | 2 表示开机时检查磁盘顺序(1 给根目录,2 给其他分区)。 |

四、 常见问题排查

1. 为什么我挂载后只能读不能写?

原因:没有加 uid=1000,gid=1000 参数。默认挂载的 NTFS 盘所有者是 root。 解决:在 fstab 的 options 里加上 uid=1000,gid=1000,然后重新 mount -a

2. 系统启动时提示 "A start job is running for dev-disk-by..."

原因:fstab 里配置了一个不存在的 UUID(比如以前的 Swap 分区),或者没有加 nofail解决

  1. 检查 /etc/fstab,注释掉没用的行(特别是 Swap 那一行)。
  2. 确保你的 USB 硬盘配置里包含了 nofail

3. 我拔了硬盘再插回去,怎么重新挂载?

方法:虽然 nofail 保证了开机不报错,但插回去后系统不会自动感知挂载。 执行 sudo mount -a 即可重新挂载所有 fstab 里定义的磁盘。

五、 总结

通过 UUID 挂载并配合 nofailuid 参数,我们可以得到一个挂载点固定、权限完全可控、且支持热插拔的 USB 存储方案。这是开发机上最稳妥的配置方式。 (保存日期:2023-XX-XX)