방금 전체 데비안 패키지 세트를 업데이트하고 설치했는데 특정 fstab 파일 구성으로 인해 오류가 발생했습니다. 2개의 드라이브가 있는데 동시에 마운트하지 않으며 둘 다 동일한 마운트 지점( /etc/fstab
조각)을 갖습니다.
UUID=xxxx-xxxx /media/strontium vfat user,rw,exec,nofail 0 2
UUID=yyyy-yyyy /media/strontium vfat user,rw,exec,nofail 0 2
그러나 설치 후 systemd는 이에 대해 불평합니다.
[518052.191024] systemd-fstab-generator[28811]: Failed to create mount unit file /run/systemd/generator/media-strontium.mount, as it already exists. Duplicate entry in /etc/fstab?
실제로 나는 드라이브를 마운트하기 위해 systemd를 사용하고 싶지 않습니다. 나는 이전에 이것을 사용한 적이 sudo mount -a
있으며 이것은 내 파일을 반복하여 /etc/fstab
삽입된 모든 것을 설치했습니다.
이전처럼 내 드라이브를 수동으로 마운트할 수 있도록 시스템 마운트 기능을 끌 수 있습니까?
답변1
어쨌든 마운트 지점 디렉터리 이름이 시스템 파일 이름으로 변환되기 때문에 이러한 시스템 제한을 인식하지 못합니다. 가장 간단한 대답은 아마도 fstab에서 항목을 제거하고 필요할 때 설치할 작은 스크립트를 작성하는 것입니다.
#!/bin/bash
( mount -U xxxx-xxxx /media/strontium -t vfat -o rw,exec ||
mount -U yyyy-yyyy /media/strontium -t vfat -o rw,exec
) && echo ok
수정한 후에는 systemd가 변경 사항을 인식하는지 확인하는 것을 /etc/fstab
잊지 마십시오 .sudo systemctl daemon-reload
항목을 보존하려면 /etc/fstab
두 번째 마운트 지점을 첫 번째 마운트 지점으로 만드는 심볼릭 링크(예: )를 사용할 수 있습니다 ln -s /media/strontium /media/strontium2
. 마운트가 완료되면 링크가 따라가므로 평소와 같이 디렉토리에 표시됩니다. 이 경우 noauto
두 줄 모두에 옵션을 추가해야 합니다. 그렇지 않으면 systemd가 혼란스러워서 첫 번째 항목이라고 생각하는 항목을 즉시 언로드합니다.
심볼릭 링크 대신 실제 디렉토리를 사용한 다음 수동으로 수행할 수 있습니다.바인드 마운트원하는 위치에 이 디렉터리를 설치합니다.
mount --bind /media/strontium2 /media/strontium
이 번들 설치와 첫 번째 설치를 모두 제거해야 합니다.
과거에는 UUID가 있을 때 명시적으로 mount를 호출하는 udev 규칙을 추가할 수 있었습니다. 예를 들면 다음과 같습니다 /etc/udev/rules.d/92-my.rules
.
ACTION=="add", ENV{ID_FS_UUID}=="xxxx-xxxx", RUN+="/usr/bin/mount /dev/%k /media/strontium"
하지만 최근 systemd에서는 별도의 마운트 네임스페이스에서 실행되기 때문에 작동하지 않으므로 udevd
마운트를 수행하더라도 볼 수 없습니다. 아직 이 네임스페이스에 대한 이유를 모르지만 원칙적으로
/etc/systemd/system/systemd-udevd.service
두 줄로 구성된 파일을 생성하여 이 기능을 재정의 할 수 있습니다.
.include /usr/lib/systemd/system/systemd-udevd.service
MountFlags=shared
여전히 자동인 것을 원한다면 또 다른 접근 방식은 블록 장치에 대한 이벤트를 모니터링 udevd
하고 명시적인 마운트를 수행하는 것입니다. 예를 들어 영원히 실행하려면 다음을 수행하세요.
#!/bin/bash
# udevadm monitor outputs a stanza ending with a blank line
# UDEV [5291328.3] add /devices/pci0000:00/.../usb3/..../block/sdd (block)
# ACTION=add
# DEVNAME=/dev/sdd
stdbuf -o L udevadm monitor -u -p -s 'block/disk' |
awk -F= '
$0~/^ACTION=/{ action = $2 }
$0~/^DEVNAME=/{ name = $2 }
$0~/^ID_FS_UUID=/{ uuid = $2 }
$0~/^$/{ if(action=="add" && (uuid=="xxxx-xxxx"||uuid=="yyyy-yyyy")
system("sudo mount mount " name " /media/strontium -t vfat -o rw,exec")
uuid=""
}'