U 盘插上先跑 lsblk 认盘,mount 手动挂;开机自动挂就写 fstab 并加 nofail。命令均经 WSL2 实测。
一、先认盘:lsblk 与 blkid 分工
lsblk # 块设备树:NAME/SIZE/TYPE/MOUNTPOINTS
lsblk --fs # 直接带出 FSTYPE、LABEL、UUID 三列
sudo blkid /dev/sdb1 # 单个分区的 TYPE/LABEL/UUID
实测 lsblk 输出里 sdd 8:48 0 1T 0 disk 挂着 /,这就是系统盘;新插的 U 盘通常是 sdd 之后的第一个新名字。U 盘往往只有一个分区(sdb1),移动硬盘可能带多个分区,逐个看 SIZE 对号入座。认盘顺序建议:先 lsblk 看谁没挂载点,再 lsblk --fs 看文件系统与卷标,两者都是只读,随便跑。手册还给了 findmnt:查当前挂载表用 findmnt /mnt/usb 或 findmnt --source /dev/sdb1,输出比 mount 裸跑更结构化 [1]。
二、手动挂载:mount 一条命令,认 UUID 不认盘符
sudo mkdir -p /mnt/usb
sudo mount /dev/sdb1 /mnt/usb # 挂载
findmnt -no SOURCE,FSTYPE,SIZE,UUID /dev/sdb1 # 核对挂上了什么
实测挂载后 findmnt 返回 /dev/loop0 ext4 103.9M 970c8e29-...,与 blkid 报的 UUID 完全一致。盘符会漂:拔掉重插、多插一个 U 盘,sdb 可能变 sdc,所以 mount(8) 明确推荐用 UUID= 或 LABEL= 标签代替设备名 [2]。实测 mount LABEL=USBDEMO /mnt/usb 与 mount UUID=970c8e29-64fc-43ed-9cc7-2ec0d42fe270 /mnt/usb 都直接成功。
权限不对是 FAT 盘的常态:vfat 没有真正的 Unix 权限位,挂载时要用选项声明。实测 sudo mount -o iocharset=utf8,uid=1000,gid=1000,fmask=0133,dmask=0022 /dev/loop0 /mnt/usb 后,目录变 drwxr-xr-x huyuanwen:huyuanwen、文件变 -rw-r--r--,中文文件名也正常。uid/gid 默认取当前进程,umask/dmask/fmask 给掩码,iocharset=utf8 管文件名编码,这些都是 mount(8) 里 vfat 一节的正式选项 [2]。
三、开机自动挂:fstab 必须带 nofail
sudo cp /etc/fstab /etc/fstab.bak # 先备份,改坏能还原
echo 'UUID=970c8e29-64fc-43ed-9cc7-2ec0d42fe270 /mnt/usb ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
sudo mount -a # 立即验证整份 fstab
fstab 行共六字段:设备、挂载点、类型、选项、dump、fsck 顺序 [3]。nofail 的官方定义是”设备不存在时不报错” [3],对 U 盘是关键保险:不写它,开机时盘没插,挂载失败可能把启动流程拖进紧急模式。实测把这条写进 fstab 后 systemctl daemon-reload,systemd 自动生成 mnt-usb.mount 单元,单元的 Mount 段里 Options 原样带出 defaults,nofail;随后把模拟盘拆掉再跑 mount -a,退出码 0,没有报错拖尾。末位 fsck 填 2 表示开机自检该分区,填 0 跳过。改完一定用 mount -a 验证,别直接重启赌运气。
四、临时挂载与自动触发:systemd-mount 与 x-systemd.automount
systemd-mount /dev/sdb1 # 不给挂载点,自动挂到 /run/media/...
systemd-mount /dev/sdb1 /mnt/usb # 指定挂载点
systemd-mount --unmount /mnt/usb # 卸载并清掉临时单元
不想碰 fstab 又要比手动 mount 体面,systemd-mount 是中间档:实测 systemd-mount --no-pager /dev/loop0 /mnt/usb 起 mnt-usb.mount 单元成功,--unmount 即停。两个实测坑:fstab 里曾有同挂载点条目、删掉后立刻 systemd-mount,会报 Unit mnt-usb.mount was already loaded or has a fragment file,先 systemctl daemon-reload 再来;临时挂载重启即消失,要持久还得回 fstab。进阶写法是在 fstab 选项里加 x-systemd.automount:实测生成 mnt-usb.automount 单元(状态 Triggers: mnt-usb.mount),盘插好前访问目录不报错,插好后再访问即自动挂载。
五、卸载与拔盘:target is busy 这样处理
sudo umount /mnt/usb # 正常卸载
sudo fuser -m /mnt/usb # 谁占着这个挂载点
sudo umount -l /mnt/usb # 懒卸载:先从目录树摘掉,占用进程结束再真正分离
实测有进程停在挂载点里时,umount 报 umount: /mnt/usb: target is busy.,退出码 32;fuser -m 列出占用进程号;umount -l 立即让挂载点从 findmnt 消失,umount(8) 对手动卸载默认还会尝试自动清除关联的 loop 设备 [4]。懒卸载适合”非摘不可”的场景,但占用它的进程还在读写,用完尽快收尾。写完文件习惯 umount 再拔盘;ext4 日志完整,拔前不卸载有数据丢进日志没落盘的风险,FAT 类没有日志,损失更直接。
六、NTFS 与 exFAT:能不能挂,看内核
Ubuntu 24.04 实测:mount -t ntfs3 失败(unknown filesystem type 'ntfs3',WSL 内核 6.6.114.1 未编译该驱动),裸 mount 自动回退到 ntfs-3g,findmnt 显示 FSTYPE 为 fuseblk;显式 ntfs-3g /dev/loop0 /mnt/usb 成功,默认权限 drwxrwxrwx。exfat 在同一内核直接报 unknown filesystem type,装好 exfatprogs 也只解决格式化,挂载仍要内核支持:主线内核 5.4 起内置 exfat,WSL 内核没有,modprobe exfat 报 module not found。NTFS 只读报错、Windows 快速启动留下的”卷不干净”,换 ntfs-3g 挂载通常就能写。
**排错速查**
| 现象 | 原因 | 处理 | | — | — | — | | 插了盘 lsblk 没新条目 | USB 存储服务没起 | sudo systemctl restart systemd-udevd,再拔插(文档口径) | | mount 报 unknown filesystem type | 内核缺该文件系统驱动 | 换 ntfs-3g;exfat 需换内核或装对应模块 | | NTFS 挂上只读 | 卷带 Windows 休眠残留 | sudo ntfs-3g /dev/sdb1 /mnt/usb(实测可写) | | U 盘目录 777 或文件不可执行 | FAT 无权限位,默认掩码所致 | 挂时加 uid/gid/fmask/dmask(实测) | | umount: target is busy | 有进程工作目录在里面 | fuser -m 找到再收尾,或 umount -l(实测) | | 重启后 fstab 条目把启动卡进紧急模式 | 没写 nofail | 补 nofail 再 mount -a 验证(实测) | | systemd-mount 报 unit already loaded | 旧 fstab 残留单元 | systemctl daemon-reload 后重试(实测) |
**常见提问**
must be superuser to use mount(退出码 32);udisks2 是桌面会话里的自动挂载服务,服务器默认没有,手动挂载就是标准做法(udisks2 桌面行为为文档口径,未实测)。**实测记录**:WSL2 Ubuntu 24.04.4 LTS(内核 6.6.114.1-microsoft-standard-WSL2,util-linux 2.39.3),2026-10-30。U 盘以 losetup 回环设备模拟(ext4/vfat/exfat/ntfs 各一块镜像)。已验证:lsblk/blkid/findmnt 输出、UUID 与 LABEL 挂载、vfat 权限选项、fstab+nofail 与 systemd 生成单元、拆盘后 mount -a 退出码 0、systemd-mount 与 automount、busy umount 退出码 32、umount -l、ntfs-3g 挂载写权限、非 root 挂载被拒。测试用回环镜像与临时安装的 dosfstools/exfatprogs/ntfs-3g 均已删除、purge 并 autoremove,/etc/fstab 已还原并 diff 校验。
**局限性**:本环境用回环设备模拟 U 盘,未接真实 USB 硬件,插拔识别(udev 事件)与 USB 供电类故障未实测;WSL 内核缺 ntfs3 与 exfat 驱动,这两个文件系统的内核路径基于文档口径;真实重启进紧急模式的对照、桌面环境 udisks2 自动挂载行为均未实测。
参考资料
- [1] mount(8) — Debian bookworm 手册页(Debian mount(8))
- [2] mount(8) – Linux manual page (man7.org)(man7 mount(8))
- [3] fstab(5) — Debian bookworm 手册页(Debian fstab(5))
- [4] umount(8) — Debian bookworm 手册页(Debian umount(8))
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。