Linux 中自动挂载 U 盘教程
Linux 中自动挂载 U 盘教程
如何在 Linux 中实现外部磁盘的自动挂载
想象这样的场景:你将一个外部 USB 或 SSD 磁盘连接到系统,作为额外的存储设备。这在以下情况下非常常见,例如你为树莓派设置媒体服务器或其他 Linux 系统。
在 Linux 中,通常需要在文件管理器中点击挂载选项,或使用挂载命令才能使用外部驱动器。这可能会带来不便,尤其是在系统启动时需要挂载磁盘的场景。例如,媒体存储在外部磁盘上,而媒体服务器无法读取,因为磁盘未被挂载。
幸运的是,你可以通过以下两种方法实现外部磁盘自动挂载:
- 配置
fstab
文件以在启动时挂载。 - 使用
udev
和autofs
实现更动态的设置。
接下来,我们逐一探讨这两种方法。
方法 1:通过
fstab
在启动时自动挂载
如果你希望外部磁盘在系统启动时自动挂载,可以通过 fstab
文件(文件系统表)来实现。这种方法适用于系统启动时已经连接的磁盘,我个人常用这种方法用于我的家庭实验室。
fstab
自动挂载步骤:
获取设备名称和 UUID 首先,连接你的 USB 驱动器,然后运行以下命令查看设备名称和 UUID:
1
sudo blkid
找到对应外部磁盘的行,例如:
1
/dev/sdb2: UUID="12ab345cd-1234-4166-8539-ff4ff3ff2ff1" TYPE="ntfs"
编辑
fstab
文件 使用你喜欢的文本编辑器编辑/etc/fstab
文件(需要超级用户权限):1
sudo nano /etc/fstab
在文件末尾添加如下内容:
1
UUID=12ab345cd-1234-4166-8539-ff4ff3ff2ff1 /media/hdd auto defaults,nofail,x-systemd.automount 0 2
替换 UUID 为你磁盘的实际值,并根据需要调整挂载点(例如
/media/hdd
)。重载 systemd 并重启系统 保存文件后,运行以下命令使配置生效:
1
sudo systemctl daemon-reload
然后重启系统。启动后,磁盘应会自动挂载到指定位置。
💡 提示:这种方法同样适用于双系统中自动挂载 Windows 分区。
方法 2:使用
udev
和 autofs
动态挂载
如果你希望外部磁盘仅在插入时自动挂载,而不是启动时挂载,可以使用
udev
规则和 autofs
实现动态挂载。
这种方法更适合经常更换 USB 驱动器或不希望它们在启动时挂载的情况。
udev
和
autofs
动态挂载步骤:
创建
udev
规则文件 在/etc/udev/rules.d/
目录下创建新规则文件:1
sudo nano /etc/udev/rules.d/usb_auto_mount.rules
添加以下内容:
1
2
3
4
5ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", ENV{ID_BUS}=="usb", \
SYMLINK+="usbdisks/%k", MODE:="0660", \
RUN+="/bin/ln -sf /media/hdd/%k /media/usb-sticks/%k"
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", ENV{ID_BUS}=="usb", \
RUN+="/bin/rm /media/usb-sticks/%k"解释:
ACTION=="add"
:触发规则,当检测到新设备(如 USB)。KERNEL=="sd*"
:匹配设备名以 "sd" 开头的设备(典型的存储设备)。ENV{DEVTYPE}=="partition"
:仅针对分区设备。SYMLINK+="usbdisks/%k"
:在/dev/usbdisks/
中为设备创建符号链接。RUN+
:在设备添加或移除时运行指定的命令。
重新加载 udev 规则
1
sudo udevadm control --reload-rules
配置
autofs
编辑auto.master
文件,指示autofs
挂载 USB 驱动器:1
sudo nano /etc/auto.master
添加如下行:
1
/media/hdd /etc/auto_mount.usb --timeout=60
然后创建对应的自动挂载映射文件:
1
sudo nano /etc/auto_mount.usb
添加以下内容:
1
2
3
4
5
6
7#!/bin/bash
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/${1})
if [ "${fstype}" = "vfat" ] ; then
echo "-fstype=ntfs,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
exit 0
fi
exit 1解释:
- 检测驱动器的文件系统类型(如 NTFS、FAT32)。
- 根据文件系统类型设置挂载选项。
测试设置 保存文件后,测试自动挂载功能。驱动器应在连接时挂载,并在闲置 60 秒后卸载。
提示
- 优先使用 UUID:在配置
fstab
时,建议使用 UUID,而不是/dev/sdX
,因为后者在重启时可能改变。 - 检查文件系统支持:确保你的系统支持 USB
驱动器的文件系统(例如安装
ntfs-3g
支持 NTFS 驱动器)。 - 测试配置:配置完成后务必进行测试,确保磁盘正常挂载。使用
journalctl
可帮助诊断问题。
结论
通过自动挂载功能,你可以极大地简化工作流程。我最近在为树莓派设置 DIY NAS(网络附加存储)时遇到了这个问题。驱动器未能在重启后自动挂载,导致备份进程中断。
通过本文的两种方法,你可以确保外部存储设备在无需人工干预的情况下始终可用。根据需求选择适合你的方法:fstab
适合启动时挂载,udev
更适合动态挂载。
💬 如果在配置外部磁盘自动挂载时遇到问题,请随时向我提问!