Uディスク自動マウント(ヘッドレスコンピュータ)

Uディスク自動マウント(ヘッドレスコンピュータ)

このプロジェクトのためにサンプリングボックス/dev/sda1 /media auto nofail 0 0、これまでヘッドレスコンピュータに接続すると、自動的にマウントされるUSBフラッシュドライブを使用しています。/etc/fstab を使用した自動マウントと自動再マウント。ただし、たとえばUSBフラッシュドライブを取り外して再挿入すると、これは信頼できないようです。

軽量で構成しやすいソリューションとは何ですか?/dev/sd*すべてのデバイスはDebianに自動的にインストールできます/media/

  • 2台目のフラッシュドライブを接続している場合は、無視するか、別のフォルダにインストールしてください。/media2/

  • ドライブを取り外した後(正しいドライブがなくてもumount)数分後に再度挿入する場合は、再インストールする必要があります。

ユースケースは、エンドユーザーがUSBフラッシュドライブを接続できるヘッドレスデバイスであり、ソフトウェアの許可なしに古いUSBフラッシュドライブを削除したかどうかにかかわらず、常に認識する必要があります。

ベストアンサー1

@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
    
  2. 次の内容でファイルを作成します。/etc/systemd/system/[email protected]

    [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
    
  3. 次の内容でファイルを作成します/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"
    
  4. 再起動ルール:

     udevadm control --reload-rules
     systemctl daemon-reload
    
  5. USBフラッシュドライブを挿入します。にインストールする必要があります/media/

おすすめ記事