U 디스크 자동 마운트(헤드리스 컴퓨터)

U 디스크 자동 마운트(헤드리스 컴퓨터)

이 프로젝트를 위해샘플링 박스/dev/sda1 /media auto nofail 0 0, 지금까지 헤드리스 컴퓨터에 연결하면 자동으로 마운트되는 USB 플래시 드라이브를 사용하고 있습니다 ./etc/fstab을 사용하여 자동 마운트 및 자동 다시 마운트. 그러나 예를 들어 USB 플래시 드라이브를 제거했다가 다시 삽입하는 경우에는 이는 신뢰할 수 없는 것으로 보입니다.

가볍고 구성하기 쉬운 솔루션이란 무엇입니까?/dev/sd*모든 장치는 데비안에 자동으로 설치될 수 있습니다/media/?

  • 두 번째 플래시 드라이브를 연결하는 경우 무시하거나 다른 폴더에 설치하세요./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/.

관련 정보