Linux(Debian)에서 USB 드라이브를 자동으로 마운트하는 방법은 무엇입니까?

Linux(Debian)에서 USB 드라이브를 자동으로 마운트하는 방법은 무엇입니까?

Linux에서 USB 드라이브가 자동으로 마운트되는 방식은 새 릴리스마다 바뀌는 것 같습니다(다행히 저는 Debian을 사용하고 있으므로 2년마다 며칠만 낭비합니다). usbmount, udisks, udisks2, udisks-glue, pmount, 사용자 정의 udev 규칙이 있었는데 아마도 더 많은 것을 잊어버렸을 것입니다. (얼핏 보면 명명된 항목이 하나 이상 afuse존재하는 것으로 보이지만 잘 문서화되어 있지 않습니다.) 이 중 어느 것도 더 이상 작동하지 않습니다(적어도 나에게는).

데비안에서 USB 드라이브를 자동 마운트하는 "현재" 방법은 무엇입니까? 다음 udev규칙을 사용했지만 스트레치에서 버스터로 업데이트한 이후 작동이 중지되었습니다.

SUBSYSTEM=="usb", DRIVERS=="usb-storage", ACTION=="add", \
RUN+="mkdir /media/usb%n; mount -o gid=plugdev,umask=002,fmask=111,users /dev/%k%n /media/usb%n"

또한: 제가 놓쳤을 수도 있는 새 버전으로 업데이트한 후에도 안정적으로 작동할 수 있는 안정적인 솔루션은 무엇입니까?

답변1

당신은 만들 수 있습니다systemd.mount그리고systemd.automount유닛 파일. 예는 다음과 같습니다.

/dev/sdb1아래에 설치하려면 파일을 /mnt/mountpoint만듭니다 mnt-mountpoint.mount.

sudo nano /etc/systemd/system/mnt-mountpoint.mount

참고: 유닛 파일의 이름은 dir-sub-dir.mount마운트 지점에서 추출됩니다 /dir/sub-dir ( /media/mountpoint이 이름의 장치를 마운트해야 하는 경우 media-mountpoint.mount).

그런 다음 다음 줄을 붙여넣습니다.

[Unit]
Description=Mount sdb1

[Mount]
What=/dev/disk/by-uuid/UUID_here
Where=/mnt/mountpoint
Type=auto
Options=defaults

[Install]
WantedBy=multi-user.target

blkid대체할 uuid 입니다 .UUID_here/dev/sdb1

mnt-mountpoint.automount파일을 생성합니다 :

sudo nano /etc/systemd/system/mnt-mountpoint.automount

다음 줄을 포함합니다:

[Unit]
Description=Automount usb

[Automount]
Where=/mnt/mountpoint

[Install]
WantedBy=multi-user.target

USB를 연결한 다음 장치를 활성화하고 부팅합니다.

sudo systemctl daemon-reload
sudo systemctl enable --now  mnt-mountpoint.mount mnt-mountpoint.automount

답변2

업데이트 [2022-03-06]: apt install udisks2USB 자동 마운트 기능을 제공해야 합니다.

나는 Debian에서 nautilus, udisks2 및 libglib2.0-bin(gio 바이너리 포함)의 패키지 종속성을 조사했습니다. 이것 위에 짓고 이것 위에 짓고Archlinux USB 디스크 페이지나는 이제 믿는다:

  • 실제로 설치를 수행하는 가장 진보된 기술은 udisks2입니다. 자동 마운트의 차선책은 udisksctl unmount -b /dev/$DEVICE.
  • "표준" Debian Gnome 설치에서는 노틸러스가 바탕 화면의 아이콘을 제어합니다. USB 드라이브를 삽입하면 드라이브 아이콘이 나타나지만 아이콘을 클릭할 때까지 드라이브를 마운트할 수 없습니다.
  • 아마도 USB 자동 마운트 기능을 갖춘 최소 데스크톱을 위한 최선의 옵션은 다음과 같습니다.우디스키.

udiskie를 시작하기 위해 사용자 systemd 서비스를 추가했습니다.

[Unit]
Description=Udiskie automount daemon

[Install]
WantedBy=graphical-session.target

[Service]
ExecStart=/usr/bin/udiskie --verbose --use-udisks2 --automount --no-config --notify --tray --appindicator

답변3

Stretch에서 Buster(헤드리스 Raspberry Pi Zero W)로 업그레이드한 후에도 동일한 문제가 발생했습니다. 제 경우에는 /etc/fstabsystemd가 자동으로 설치 단위를 생성하는 방식을 사용하고 있습니다. 내 모든 디스크는 fstab에 지정되어 있으며 Stretch의 핫플러그에 자동으로 마운트됩니다. 버스터에서 실패한 모든 것. (단, 재부팅 시 디스크는 정상적으로 마운트됩니다.)

문제의 범인은 다음과 같습니다.변화새로운 시스템 버전에서는:

    * The .device units generated by systemd-fstab-generator and other
      generators do not automatically pull in the corresponding .mount unit
      as a Wants= dependency. This means that simply plugging in the device
      will not cause the mount unit to be started automatically. But please
      note that the mount unit may be started for other reasons, in
      particular if it is part of local-fs.target, and any unit which
      (transitively) depends on local-fs.target is started.

다음 명령으로 확인 했습니다 systemctl show my-mount.mount. 장치가 목록에서 누락되었습니다 WantedBy=. ( local-fs.target스트레치에는 local-fs.target해당 장치가 있지만 dev-sdaX.device둘 다 나열됩니다.) 결과적으로 디스크를 삽입하면 my-mount.mount장치 시작이 트리거되지 않습니다.

그래서 나에게 도움이 된 해결책은 local-fs.target새 디스크가 삽입될 때마다 트리거되는 새로운 udev 규칙을 만드는 것이었습니다.

$ cat /etc/udev/rules.d/98-usb-disk-mount.rules 
ACTION=="add", KERNEL=="sd?[0-9]", SUBSYSTEM=="block", RUN+="/bin/systemctl start local-fs.target"

(참고: systemctl start local-fs.targetfstab 디스크 마운트를 트리거하려면 이 명령을 사용하는 것이 좋습니다.시스템 매뉴얼.)

관련 정보