
このプロジェクトのためにサンプリングボックス/dev/sda1 /media auto nofail 0 0
、これまでヘッドレスコンピュータに接続すると、自動的にマウントされるUSBフラッシュドライブを使用しています。/etc/fstab を使用した自動マウントと自動再マウント。ただし、たとえばUSBフラッシュドライブを取り外して再挿入すると、これは信頼できないようです。
軽量で構成しやすいソリューションとは何ですか?/dev/sd*
すべてのデバイスはDebianに自動的にインストールできます/media/
?
2台目のフラッシュドライブを接続している場合は、無視するか、別のフォルダにインストールしてください。
/media2/
ドライブを取り外した後(正しいドライブがなくても
umount
)数分後に再度挿入する場合は、再インストールする必要があります。
ユースケースは、エンドユーザーがUSBフラッシュドライブを接続できるヘッドレスデバイスであり、ソフトウェアの許可なしに古いUSBフラッシュドライブを削除したかどうかにかかわらず、常に認識する必要があります。
答え1
@FelixJNさんのコメントに基づいて軽く修正しました。Andrea Fortunaによる素晴らしいガイド私のニーズに応じて、これが解決策です。
次のコンテンツでファイルを作成し、
/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
次の内容でファイルを作成します。
/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
次の内容でファイルを作成します
/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"
再起動ルール:
udevadm control --reload-rules systemctl daemon-reload
USBフラッシュドライブを挿入します。にインストールする必要があります
/media/
。