在基于 Debian 的 Linux 中手动触发自动挂载

在基于 Debian 的 Linux 中手动触发自动挂载

我已格式化闪存驱动器,因此需要卸载该设备。格式化完成后,有没有办法通过命令行触发自动挂载?

(我知道我可以重新插入 USB 闪存驱动器,但这似乎是一种廉价的做法;)并且手动安装似乎有点麻烦,因为需要手动 mkdir 安装目录。)

答案1

/usr/bin/udisks --mount /dev/sdc1

对我有用。根据https://help.ubuntu.com/community/AutomaticallyMountPartitions

答案2

这是我在 Ubuntu 18.04 上的解决方案:

udisksctl mount -b {device}

答案3

我觉得你需要跑

sudo partprobe

重新扫描所有设备的分区和文件系统。在我的 Xubuntu 12.04(基于 debian)上,这还会触发自动挂载。

答案4

正确答案2024 年确实要使用:

udisksctl mount -b {device}

但是当您不知道确切的设备路径时,它就不那么明显了,例如,当您将 ISO 映像复制到 pendrive 时(可能是在创建实时 Linux USB 驱动器时),它可能包含任意数量的分区,而您不知道其中哪一个udisk会挂载(如:您知道设备是什么/dev/sdd,但您需要挂载一个特定的分区,而不知道它是否/dev/sdd1/dev/sdd2)。

在查看源代码后,我发现你可以udisk通过重新授权设备来触发插入驱动器时发生的确切操作。我的意思是:

❯ lsblk -f
NAME   FSTYPE  FSVER            LABEL       UUID...
[...]
sdd
├─sdd1 iso9660 Joliet Extension EOS_202404  2024-04-20-15-57-10-00                              
└─sdd2 vfat    FAT16            ARCHISO_EFI 7156-9697

显然是 2 个分区。当然,您可以只挂载两个分区,然后看看您感兴趣的是哪一个,但您也可以检查 USB 设备地址:

❯ lsusb -tv
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/10p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    |__ Port 003: Dev 005, If 0, Class=Mass Storage, Driver=usb-storage, 480M
        ID 048d:1234 Integrated Technology Express, Inc. Chipsbank CBM2199 Flash Drive

因此,它连接到集线器的端口 #3,即端口 #1,即设备的端口路径为1-3。让我们重新授权它:

sudo echo 0 > /sys/bus/usb/devices/1-3/authorized
sleep 3 # or just wait a few seconds
sudo echo 1 > /sys/bus/usb/devices/1-3/authorized

您可以使用别名自动执行最后一步:

usb-reset='_usbreset() { sudo sh -c "echo 0 > /sys/bus/usb/devices/$1/authorized"; sleep 3; sudo sh -c "echo 1 > /sys/bus/usb/devices/$1/authorized"; unset -f _usbreset };_usbreset'

您还可以使用别名快速列出所有连接的端口及其设备的“idVendor:idDevice”字符串(如上例所示) lsusb048d:1234使用以下别名:

usb-paths='for d in /sys/bus/usb/devices/*; do [[ -e $d/idVendor ]] && echo -e "$d\t$(cat $d/idVendor):$(cat $d/idProduct)"; done'

我推荐别名,它是一种非常有用的工具,用于记录您容易忘记但肯定在某些时候会再次需要的东西。

相关内容