USB 플래시 드라이브가 분리되었을 때의 UDEV 규칙

USB 플래시 드라이브가 분리되었을 때의 UDEV 규칙

USB 스틱을 특정 폴더에 자동으로 마운트하는 규칙을 작성했지만, 플러그를 뽑으면 폴더가 마운트된 상태로 유지되고 ls거기에 있으면 다음과 같은 오류가 많이 표시됩니다.Directory bread (block: NNNN) failed

나는 사용하려고

SUBSYSTEM=="block", ACTION=="remove", RUN+="/bin/umount /media/disk"

작동하지 않습니다.

내 설치 규칙은 다음과 같습니다

SUBSYSTEM=="block", ACTION=="add", RUN+="/bin/mount -t vfat <options> /dev/%k /media/disk"

답변1

여기에는 두 가지 문제가 있습니다.

첫 번째는 udev 규칙이 충분히 정확하지 않다는 것입니다. 예, USB 플래시 드라이브의 삽입/제거를 시작할 수 있지만 부팅 시 하드 드라이브가 인식될 때 트리거될 수도 있습니다.

두 번째 질문은 더 심각할 수 있습니다.언제나드라이브 마운트 해제플러그를 뽑기 전에. 그렇지 않으면 드라이브와 시스템이 모두 영향을 받습니다. 나는 개인적으로 사람들이 이런 식으로 플래시 드라이브를 파괴하는 것을 보았습니다.

답변2

나는 웹에서 이러한 결함이 있는 접근 방식을 보았으며 이전 답변에서 언급했듯이 범위가 너무 일반적입니다. 또한 여러 개의 USB 장치가 연결되어 있으면 어떻게 될까요? 이 문제는 흔히 발생하며 해결책은 이미 존재합니다. 배포판에 대해 언급하지 않으셨기 때문에 어떤 스크립트를 패키징할 수 있는지 말씀드릴 수 없습니다. 어쨌든 언급하는 이유는 그것이 여러분에게 더 나은 방법을 보여줄 것이고 여러분은 언제든지 해당 부분을 빌릴 수 있기 때문입니다.

우선, 실제로 살펴보는 것을 고려해야 합니다 udisks. 전체 DE를 사용하는 경우 아마도 자체적으로만 사용해야 할 것입니다. WM에만 해당... 더 이상 사용되지 않는 HAL을 대체 udisks하고 udisks-glue.

그래도 사용하지 않기로 결정했다면 , 이름이 붙은 스크립트를 udisks확인해 보세요 . Gentoo에는 ebuild가 있습니다. 그렇지 않으면 소스 코드를 확인하세요udevuamGitHub 비트 버킷.

udevArch의 문서에는 훌륭한 USB 자동 마운트 예제가 많이 있다는 점을 언급할 가치가 있습니다.위키피디아

이러한 옵션 중 하나는 이를 수행하는 간단한 방법이며 완벽하게 구현되고 범위에 따라 다르며 부작용에 대해 테스트되었습니다.

답변3

당신은 행동을 찾고 있습니다 "precog".

rozcietrzewiacz가 말했듯이, 드라이브가 마운트된 상태에서 드라이브를 분리하는 것은 나쁜 생각입니다. 정의에 따르면 시스템은 드라이브가 제거될 때까지 드라이브가 제거되었음을 알 수 없습니다. 따라서 폴더를 분리하기 전에 자동으로 폴더를 탑재 해제할 수 없습니다. 그러므로,어떤 방식으로든(수동으로 또는 일부 안전한 제거 옵션을 사용하여) 드라이브를 마운트 해제하여 드라이브를 분리할 계획이라는 사실을 시스템에 알려야 합니다.

답변4

이는 Linux 커널에 여전히 결함이 있는 영역 중 하나입니다. 사용 중인 파일 시스템을 마운트 해제하는 기능이 부족합니다. 일부 프로세스가 여전히 해당 디스크에 파일을 열어둔 경우 해당 파일을 언로드할 수 없습니다.

관련 정보