Ubuntu 自动挂载移动硬盘
根据实际情况,博主验证了,少部分情况下可能失效
虽然自动挂载通常很可靠,但有时也可能因为一些原因失败。这时,你可以检查以下几点:
文件系统驱动是否安装:如果你的移动硬盘是 NTFS 或 exFAT 格式,你需要确保系统安装了相应的驱动包。
对于 NTFS 格式:
sudo apt update
sudo apt install ntfs-3g
对于 exFAT 格式:
sudo apt update
sudo apt install exfat-fuse exfatprogs
查看设备和分区:使用 lsblk 或 fdisk -l 命令来确认系统是否识别了你的移动硬盘
lsblk
你会看到类似 /dev/sdb 或 /dev/sdc 这样的设备,以及它的分区,例如 /dev/sdb1
手动挂载:如果自动挂载失败,你可以尝试手动挂载,这也能帮助你诊断问题。
创建一个挂载点:
sudo mkdir /mnt/mydisk
手动挂载分区:
sudo mount /dev/sdb1 /mnt/mydisk
请将 /dev/sdb1 替换为你实际的设备分区。
可能是 USB 驱动有问题,导致无法正常识别设备。可以尝试重新加载 USB 存储驱动模块:
# 卸载
sudo modprobe -r usb_storage
# 重新加载
sudo modprobe usb_storage
sudo blkid
自动挂在
::: details auto-mount-usb.sh
#!/bin/bashlog() {echo "[$(date '+%F %T')] $*"
}udisksctl monitor | while read -r line; docase "$line" in*"Added /org/freedesktop/UDisks2/block_devices/"*)device_name=$(echo "$line" | awk -F'/' '{print $NF}')device="/dev/$device_name"if [[ $device_name =~ ^sd[a-z][0-9]+$ ]]; thenlog "Detected new partition: $device"# 等待设备就绪(最多 5 秒)for i in {1..5}; doif lsblk -no MOUNTPOINT "$device" &>/dev/null; thenbreakfisleep 1done# 检查是否已经挂载if mount | grep -q "^$device "; thenlog "$device is already mounted, skipping."elselog "Attempting to mount $device"if udisksctl mount -b "$device" --no-user-interaction; thenlog "$device mounted successfully."elselog "Failed to mount $device."fifielselog "Device $device_name is not a partition, skipping."fi;;*"Removed /org/freedesktop/UDisks2/block_devices/"*)device_name=$(echo "$line" | awk -F'/' '{print $NF}')device="/dev/$device_name"if [[ $device_name =~ ^sd[a-z][0-9]+$ ]]; thenlog "Device $device removed, attempting to unmount"if mount | grep -q "^$device "; thenif udisksctl unmount -b "$device" --no-user-interaction; thenlog "$device unmounted successfully."elselog "Failed to unmount $device."fielselog "$device was not mounted."fifi;;esac
done
:::
保存后执行:
sudo chmod +x /usr/local/bin/auto-mount-usb.sh
创建 systemd 服务
sudo nano /etc/systemd/system/auto-mount-usb.service
内容:
[Unit]
Description=Auto mount/unmount USB drives via udisksctl
After=network.target local-fs.target[Service]
ExecStart=/usr/local/bin/auto-mount-usb.sh
Restart=always
RestartSec=2
User=root[Install]
WantedBy=multi-user.target
重新加载 systemd 并启用
sudo systemctl daemon-reload
sudo systemctl enable --now auto-mount-usb.service
查看运行情况
systemctl status auto-mount-usb.service
# 实时日志:
journalctl -fu auto-mount-usb.service