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 udisks2
USB 자동 마운트 기능을 제공해야 합니다.
나는 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/fstab
systemd가 자동으로 설치 단위를 생성하는 방식을 사용하고 있습니다. 내 모든 디스크는 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.target
fstab 디스크 마운트를 트리거하려면 이 명령을 사용하는 것이 좋습니다.시스템 매뉴얼.)