Mount

U盤自動掛載(無頭電腦)

  • December 14, 2021

對於SamplerBox項目,到目前為止,我一直在使用/dev/sda1 /media auto nofail 0 0USB 快閃記憶體驅動器在插入無頭電腦時自動掛載,另請參閱Auto-mount and auto-remount with /etc/fstab。但這似乎不太可靠,例如,當 USB 快閃記憶體驅動器被移除,然後重新插入時。

Debian 中有/dev/sd*``/media/哪些輕量級且易於配置的解決方案可以自動掛載每個設備

  • 如果插入了第二個快閃記憶體驅動器,請忽略或安裝到另一個文件夾/media2/
  • 如果驅動器被移除(即使沒有正確的umount),然後在幾分鐘後重新插入,它應該再次安裝

案例是一個無頭設備,最終使用者可以在其上插入 USB 快閃記憶體驅動器,並且它應該始終被辨識(無論他們是否在未經軟體許可的情況下移除了以前的 USB 快閃記憶體驅動器)。

根據@FelixJN 的評論,我根據我的需要稍微修改了 Andrea Fortuna 的這個優秀指南,這裡是解決方案:

  1. 創建一個/root/usb-mount.sh包含此文件的文件(並添加 +x 權限):
#!/bin/bash
ACTION=$1
DEVBASE=$2
DEVICE="/dev/${DEVBASE}"
MOUNT_POINT=$(/bin/mount | /bin/grep ${DEVICE} | /usr/bin/awk '{ print $3 }')  # See if this drive is already mounted
case "${ACTION}" in
   add)
       if [[ -n ${MOUNT_POINT} ]]; then exit 1; fi          # Already mounted, exit
       eval $(/sbin/blkid -o udev ${DEVICE})                # Get info for this drive: $ID_FS_LABEL, $ID_FS_UUID, and $ID_FS_TYPE
       OPTS="rw,relatime"                                   # Global mount options
       if [[ ${ID_FS_TYPE} == "vfat" ]]; then OPTS+=",users,gid=100,umask=000,shortname=mixed,utf8=1,flush"; fi     # File system type specific mount options
       if ! /bin/mount -o ${OPTS} ${DEVICE} /media/; then exit 1; fi          # Error during mount process: cleanup mountpoint
       ;;
   remove)
       if [[ -n ${MOUNT_POINT} ]]; then /bin/umount -l ${DEVICE}; fi
       ;;
esac
  1. 創建一個包含以下內容的文件/etc/systemd/system/usb-mount@.service
[Unit]
Description=Mount USB Drive on %i

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/root/usb-mount.sh add %i
ExecStop=/root/usb-mount.sh remove %i
  1. 創建一個包含以下內容的文件/etc/udev/rules.d/99-local.rules
KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/systemctl start usb-mount@%k.service"
KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/systemctl stop usb-mount@%k.service"
  1. 重啟規則:
udevadm control --reload-rules
systemctl daemon-reload
  1. 插入 USB 快閃記憶體驅動器。它應該安裝到/media/.

引用自:https://unix.stackexchange.com/questions/681379