Jessie Lite에서 다양한 USB 스틱 파일 시스템 자동 마운트


18

내 Raspberry Pi 2를 재부팅하지 않고 핫 플러그하는 것처럼 USB 스틱 fat32ntfs를 즉석에서 자동 마운트 할 수 있기를 원합니다 . jessie-litentfs-3g가 설치되어 있습니다.

fstab모든 장치의 UUID를 찾아야하므로 UUID를 넣는 것은 옵션이 아닙니다. 다른 파일 형식의 다른 USB 장치를 꽂고 자동으로 마운트하고 싶습니다. 이게 가능해?

또한 한 번은 usbmount프로그램에서 거의 일하게되었습니다 . 오류가 발생하기 전에 잠시 드라이브에 액세스 할 수 있습니다 transport endpoint is not connected. 프로그램을 다시 설치했지만 오류가 없어도 다시는 그 지점에 도달하지 못했습니다.

답변:


15

많은 연구 끝에 usbmount 관련 문제를 해결할 수 있습니다.

usbmount에 ntfs 추가

  1. 로 usbmount를 설치하십시오 sudo apt-get install usbmount.
  2. 함께 NTFS 드라이버 패키지 ntfs-3g 를 설치하십시오 sudo apt-get install ntfs-3g.

  3. 로 usbmount 파일을 열어 지정된 파일 시스템을 마운트하도록 usbmount를 구성하십시오 sudo nano /etc/usbmount/usbmount.conf.

여기에라는 줄이 FILESYSTEMS=""있습니다. 이 줄에 지정된 파일 시스템 만 usbmount를 통해 마운트되므로 다음과 같이 변경합니다.FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"

usbmount가 NTFS 파일 시스템을 마운트 하도록하려면 ntfsfuseblk 를 라인 에 추가하십시오 . NTFS 장치는 때때로 ntfs-3g 패키지에서 fusblk 로 표시 되므로 두 장치가 동일합니다. 나는 왜 그런지 정말로 모른다.

또한 구성 에 fuseblk 를 추가하지 않으면 분리 된 NTFS 장치가 자동으로 마운트 해제 되지 않습니다 . 장치는 마운트 된 상태로 유지되며 장치를 수동으로 마운트 해제 할 때까지 unmount /dev/sda1 -> 여기서 sda1은 다른 변수 일 수 있습니다 .

다음으로 중요한 라인은 FS_MOUNTOPTIONS=""입니다. 여기서 마운트 할 파일 시스템과 마운트 방법을 지정합니다.

우리는 다음과 같이 변경합니다. FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=007,gid=46 -fstype=fuseblk,nls=utf8,umask=007,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=007"

이를 통해 파일 시스템 vfat (fat32) ntfs-3g (NTFS) 및 fuseblk (NTFS 다시)가 마운트됩니다. 나는 대부분의 매개 변수가 동일하게 유지 될 수 있다고 생각합니다. 여기서도 ntfs-3g를 추가하고 (ntfs가 아닌 ntfs-3g 추가 ) 모든 NTFS 파일을 마운트 할 수 있도록 fuseblk를 추가하십시오 . 더 많은 파일 시스템을 위해로 시작하는 줄을 더 추가하십시오 -fstype=.

장치가 분리 될 때까지 NTFS 마운트를 유지하십시오

탑재 된 NTFS 드라이브에 몇 초 동안 만 액세스 할 수있는 경우 문제에 대한 해결책이 있습니다. 이 수정은 Christian Weinberger 에서 제공 합니다.

  1. 파일 만들기 usbmount.rules을/etc/udev/rules.d/sudo nano /etc/udev/rules.d/usbmount.rules.

이것은 내용입니다 :

KERNEL=="sd*", DRIVERS=="sbp2",         ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
  1. 파일 만들기 usbmount @ .service 에서 /을 / etc / systemd / 시스템을 함께 sudo nano /etc/systemd/system/usbmount@.service.

이것은 내용입니다 :

[Unit]
BindTo=%i.device
After=%i.device

[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes

이제 재부팅하고 cat /etc/mtabUSB 장치가 마운트 된 폴더를 확인하십시오 . 기본적으로 이들은 / media / usbstick0에 마운트 됩니다.

출처:

기독교인 수정

왜 혼란 스러운가?


이 솔루션에는 몇 가지 단계가 더 필요합니다. 내 대답을 참조하십시오.
AbiusX

2

Untermoser의 답변은 정확하지만 일부 usbmount 기능이 손상됩니다.

NTFS를 활성화하기 위해 마운트 할 프로세스를 생성하기 위해 Systemd 장치를 사용하고 있기 때문에 환경 변수 $DEVPATH가 더 이상 usbmount add명령으로 전송되지 않아 symlink 작성 실패가 발생합니다.

이를 해결하려면 다음을 실행하십시오.

sed -i '/# Determine vendor/,/if/ s/\(.*vendor=\)/if [ -z "$DEVPATH" ]; then DEVPATH="$(udevadm info --query=path --name=\/$DEVNAME)"; fi\n\1/g' /usr/share/usbmount/usbmount

$DEVPATH사용할 수없는 경우 위의 명령이 다시 작성 됩니다.

usbmount에는 또 다른 버그가 usbmount remove있습니다. 마운트 포인트를 반복하며 usmount config에 정의 된 마운트 포인트가 마운트 해제됩니다. 그러나 일치하는 항목이 있지만 해당 목록에 없으면 나누기를 제거하고 아무 것도 수행하지 않습니다. usbmount가 첫 번째를보고 아무것도하지 않기 때문에 하나의 USB에 대해 여러 개의 마운트 포인트를 생성 할 경우 특히 중요합니다.

수정하려면 다음 변경이 필요합니다.

sed -i '/umount.d ||/,/break/ s/break.*//; /umount.d ||/,/done/ s/:/:\n\t\tbreak 2/' /usr/share/usbmount/usbmount

이렇게하면 내부 루프 내에서 브레이크가 이동합니다 (성공이 보장되고 2 단계가 중단됩니다).


1

최신 스트레치 (Lite)에서 동일하게 작업을 시도하고 Untermoser 및 AlbiusX의 답변이 vfat 드라이브를 마운트 해제하지 않는다는 것을 발견 한 사용자는 제공된 답변 외에도 이러한 추가 단계를 수행해야합니다. :

터미널에서 다음 명령을 실행하십시오.

sudo mkdir -p /etc/systemd/system/systemd-udevd.service.d/

필요한 폴더가 생성됩니다. 다음으로 여기에 conf 파일을 만드십시오 :

sudo nano /etc/systemd/system/systemd-udevd.service.d/shared-mount-ns.conf

이 파일 안에 다음 줄을 추가하십시오.

[Service] MountFlags=shared

이것은 공유 파일 시스템 네임 스페이스의 systemd-udevd의 기본 동작을 공유 네임 스페이스를 사용하도록 변경합니다. 이는 jessie의 udev 동작과 같습니다.

( /unix/330094/udev-rule-to-mount-disk-does-not-work/330156#330156에서 제공 )


그래서 이것은 모든 문제였습니다-오래된 문서를보고있었습니다. Linux raspberrypi 4.14.79-v7+참조 용으로 Pi에서 실행 중
ctietze
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.