Ubuntu 自动挂载移动硬盘

根据实际情况,博主验证了,少部分情况下可能失效

虽然自动挂载通常很可靠,但有时也可能因为一些原因失败。这时,你可以检查以下几点:

文件系统驱动是否安装:如果你的移动硬盘是 NTFS 或 exFAT 格式,你需要确保系统安装了相应的驱动包。

对于 NTFS 格式:

bash 复制代码
sudo apt update
sudo apt install ntfs-3g

对于 exFAT 格式:

bash 复制代码
sudo apt update
sudo apt install exfat-fuse exfatprogs

查看设备和分区:使用 lsblkfdisk -l 命令来确认系统是否识别了你的移动硬盘

bash 复制代码
lsblk

你会看到类似 /dev/sdb 或 /dev/sdc 这样的设备,以及它的分区,例如 /dev/sdb1

手动挂载:如果自动挂载失败,你可以尝试手动挂载,这也能帮助你诊断问题。

创建一个挂载点:

bash 复制代码
sudo mkdir /mnt/mydisk

手动挂载分区:

bash 复制代码
sudo mount /dev/sdb1 /mnt/mydisk

请将 /dev/sdb1 替换为你实际的设备分区。

可能是 USB 驱动有问题,导致无法正常识别设备。可以尝试重新加载 USB 存储驱动模块:

bash 复制代码
# 卸载
sudo modprobe -r usb_storage
# 重新加载
sudo modprobe usb_storage
sudo blkid

自动挂在

::: details auto-mount-usb.sh

bat 复制代码
#!/bin/bash

log() {
    echo "[$(date '+%F %T')] $*"
}

udisksctl monitor | while read -r line; do
    case "$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]+$ ]]; then
                log "Detected new partition: $device"

                # 等待设备就绪(最多 5 秒)
                for i in {1..5}; do
                    if lsblk -no MOUNTPOINT "$device" &>/dev/null; then
                        break
                    fi
                    sleep 1
                done

                # 检查是否已经挂载
                if mount | grep -q "^$device "; then
                    log "$device is already mounted, skipping."
                else
                    log "Attempting to mount $device"
                    if udisksctl mount -b "$device" --no-user-interaction; then
                        log "$device mounted successfully."
                    else
                        log "Failed to mount $device."
                    fi
                fi
            else
                log "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]+$ ]]; then
                log "Device $device removed, attempting to unmount"
                if mount | grep -q "^$device "; then
                    if udisksctl unmount -b "$device" --no-user-interaction; then
                        log "$device unmounted successfully."
                    else
                        log "Failed to unmount $device."
                    fi
                else
                    log "$device was not mounted."
                fi
            fi
            ;;
    esac
done

:::

保存后执行:

bash 复制代码
sudo chmod +x /usr/local/bin/auto-mount-usb.sh

创建 systemd 服务

bash 复制代码
sudo nano /etc/systemd/system/auto-mount-usb.service

内容:

bash 复制代码
[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 并启用

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now auto-mount-usb.service

查看运行情况

bash 复制代码
systemctl status auto-mount-usb.service
# 实时日志:
journalctl -fu auto-mount-usb.service
相关推荐
前端世界2 小时前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器
Android系统攻城狮2 小时前
Linux Gstreamer深度解析之gst_audio_converter_new调用流程与实战(二十)
linux·运维·服务器·gstreamer音视频·音视频进阶
海宇服务3 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化供应商准入网关
运维·人工智能·架构·自动化
上海云盾-小余3 小时前
BGP 高防底层原理:TCP 异常流量识别与清洗机制
运维·网络·tcp/ip
言乐64 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
蓝速科技7 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
H_oRIZoN_8 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
小马同学-9 小时前
OpenStack 使用实战:Web 界面与 CLI 命令行实验
运维·云计算·openstack
网安老伯10 小时前
都2026年了,还在问网络安全怎么入门?看完这一篇你就懂了
运维·计算机网络·web安全·网络安全·wireshark·密码学·网络攻击模型
小祺先生10 小时前
mt7921 debian系统 如何安装驱动
运维·网络·debian