최근에 내가 한 일이 있습니다.이 접근법에 매우 만족합니다. 이것은 Ubuntu 12.04 + gentoo 용이지만 udev 및 autofs를 설치할 수있는 배포판이 작동해야한다고 생각합니다.
전제 조건 : udev + autofs를 설치해야합니다.
1 단계)
다음 "/etc/udev/rules.d/90-usbsd-auto.rules"파일을 작성하십시오 (물론 ".rules"로 끝나는 한 아무 이름이나 사용할 수 있습니다). :
# Add symlink /dev/usbdisks/<label> to /dev/sd[a-z][1-9]
# if partition has a label
# Add symlink /media/usb/<label> to /media/autousb/<label>
# for automounter support
ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
SYMLINK+="usbdisks/$env{ID_FS_LABEL_ENC}", MODE:="0660", \
RUN+="/bin/rm /media/usb/$env{ID_FS_LABEL_ENC}", \
RUN+="/bin/ln -sf /media/autousb/$env{ID_FS_LABEL_ENC} /media/usb/$env{ID_FS_LABEL_ENC}"
# Fallback: If partition has a NO label, use kernel name (sd[a-z][1-9])
ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
SYMLINK+="usbdisks/%k", MODE:="0660", \
RUN+="/bin/rm /media/usb/%k", \
RUN+="/bin/ln -sf /media/autousb/%k /media/usb/%k"
# Some FileSystems emit a "change" event when they are unmounted.
# UDEV seems to delete the device symlink in this case :-(
# So we need to re-create it here
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
SYMLINK+="usbdisks/$env{ID_FS_LABEL_ENC}", MODE:="0660"
# Fallback: If partition has NO label, use kernel name
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
SYMLINK+="usbdisks/%k", MODE:="0660"
# When device is removed, also remove /media/usb/<label>
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \
RUN+="/bin/rm /media/usb/$env{ID_FS_LABEL_ENC}"
# Fallback: If partition has no label, remove /media/usb/%k
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \
RUN+="/bin/rm /media/usb/%k"
수행 할 작업 : "/ dev / usbdisks / <...>"아래에 USB 저장 장치 파티션을위한 두 개의 심볼릭 링크를 만듭니다. 레이블이없는 경우 USB 스토리지 파티션의 레이블 또는 커널 이름을 사용합니다. 두 번째 심볼릭 링크는 "/ media / usb / <...>"에서 "/ media / autousb / <...>"로 연결됩니다. 이는 자동 마운터 지원을 위해 수행됩니다 (2 단계 참조).
참고 : 나는 원래 ID_FS_LABEL_ENC 변수에 규칙을 사용하지 않았습니다. 동일한 라벨을 사용하는 두 개의 USB 스틱을 연결하면 어떻게됩니까?
그러나 포스터는 특별히 USB 디스크의 레이블을 사용하기를 원했기 때문에 규칙을 적절히 수정했습니다.
udev가 이러한 규칙을 읽도록하려면 다음을 사용하십시오.
sudo udevadm control --reload-rules
이 udev 규칙 파일을 사용하면 모든 것이 USB 저장 장치 파티션을 자동 마운트하도록 설정됩니다. 지금은 장치가 (의도적으로) 자동 마운트되지 않습니다. 함께 사용하면 자동 마운트됩니다.
2 단계)
automedia / media / autousb / <...>를 자동 마운트하도록 설정 autofs : "/etc/auto.master"파일 (Ubuntu 12.04)에 다음 줄을 추가했습니다.
/media/autousb /etc/auto.usb --timeout=60
즉, 60 초 동안 활동이 없으면 AutoFS가 장치를 마운트 해제합니다. 취향에 따라 더 적게 또는 더 많이 사용하고 싶을 수도 있습니다.
젠투에서는 "/etc/autofs/auto.master"를 수정해야합니다.
/media/autousb /etc/autofs/auto.usb --timeout=60
이제 다음 내용으로 "auto.usb"를 만들었습니다.
#!/bin/bash
key=${1}
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/${key})
if [ "${fstype}" = "vfat" ] ; then
echo "-fstype=vfat,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
exit 0
fi
if [ "${fstype}" = "ntfs" ] ; then
echo "-fstype=fuse.ntfs-3g,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
exit 0
fi
if [ "${fstype}" = "ext4" ] ; then
echo "-fstype=ext4,sync,nocheck :/dev/usbdisks/${key}"
exit 0
fi
exit 1
이 auto.usb는 실행 가능해야하므로 autofs는 이것을 (bash) 스크립트로 사용합니다. 예를 들어
sudo chmod 0755 /etc/auto.usb
수행 할 작업 :이 스크립트는 AutoFS (/ usr / sbin / automount)에 USB 저장 장치 파티션을 마운트하는 방법을 알려줍니다.
스크립트는 먼저 "/ sbin / blkid"를 사용하여 어떤 종류의 파일 시스템이 파티션에 있는지 확인합니다.
그러면 스크립트는 장치 파티션에 따라 올바른 마운트 옵션을 제공합니다.
참고 : "vfat"(아마도 USB 스틱에 가장 일반적), "ntfs"및 "xfs"파일 시스템에 대한 샘플 코드가 포함되어 있습니다. 물론 더 많은 파일 시스템을 지원하도록 이것을 확장하는 것은 매우 쉽습니다.
3 단계) 선택 사항 ... "꺼내기"== USB 스틱 (또는 USB 스틱의 파티션)을 마운트 해제하려면 / sbin / usbeject 아래에 스크립트를 작성하십시오.
#!/bin/bash
killall -s SIGUSR1 /usr/sbin/automount
이 스크립트를 사용하면 "sudo usbeject"를 사용하여 마운트 된 모든 USB 장치 파티션을 마운트 해제 할 수 있습니다 (자동 마운트 해제를 지시하여).
물론 파티션이 어느 곳에서나 사용되지 않도록 할 수 있습니다. 그러면 60 초 시간 초과 후 자동 마운터가 파티션을 마운트 해제합니다.
여기서 실제 트릭은 "/ media / usb"에서 "/ media / autousb"로의 심볼릭 링크를 사용하는 것입니다.
- "/ media / usb"심볼릭 링크는 udev에 의해 생성되어 사용자에게 USB 저장 장치 파티션이있는 간단한 개요를 제공합니다
- Automedia는 / media / usb를 통해 파티션을 사용할 경우 요청시 파티션을 자동 마운트합니다.
- 스크립트 된 "auto.usb"파일을 사용하면 모든 종류의 파일 시스템을 지원할 수 있으며 또한 모든 종류의 명명 체계를 지원할 수도 있습니다.
- 이 방법은 파티션이 다른 파일 시스템 유형을 사용하더라도 다중 파티션이있는 USB 스틱을 지원합니다.