이 프로젝트를 위해샘플링 박스/dev/sda1 /media auto nofail 0 0
, 지금까지 헤드리스 컴퓨터에 연결하면 자동으로 마운트되는 USB 플래시 드라이브를 사용하고 있습니다 ./etc/fstab을 사용하여 자동 마운트 및 자동 다시 마운트. 그러나 예를 들어 USB 플래시 드라이브를 제거했다가 다시 삽입하는 경우에는 이는 신뢰할 수 없는 것으로 보입니다.
가볍고 구성하기 쉬운 솔루션이란 무엇입니까?/dev/sd*
모든 장치는 데비안에 자동으로 설치될 수 있습니다/media/
?
두 번째 플래시 드라이브를 연결하는 경우 무시하거나 다른 폴더에 설치하세요.
/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/
.