USB 디스크 자동 마운트 (작동 방식)


12

배경 : USB 디스크를 읽기 전용으로 마운트하려고하지만 디스크를 연결하면 우분투 설치가 rw 마운트됩니다.

디스크를 수동으로 마운트 해제하고 umount 및 mount 명령을 사용하여 읽기 전용으로 수동으로 다시 마운트 할 수 있지만 재미는 없습니다. 누군가가 전형적인 리눅스 시스템에서 USB 마운트가 어떻게 정확하게 자동으로 수행되는지 (udev? 역사적 배경도 좋습니다) 어떻게 디스크를 읽을 수 있도록이 과정을 조정할 수 있습니까?

감사.

편집 : 전혀 도움이되지 않으면 그놈을 사용하고 있습니다.
Edit2 : 서두르면 좀 더 많은 정보를 제공하는 것을 잊었습니다. 이것은 'mount'출력에서 디스크 모양입니다.

/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

Edit3 : 이것은 또한 자체 방식으로 회복 될 수 있습니다. 마운트 출력에는 다음이 있습니다.

gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)  

나는 이것이 위의 퓨즈 블럭 마운트와 관련이 있다고 생각했지만, 내가 찾은 것은 이것입니다.

Gvfs는 Gnome 가상 파일 시스템입니다. 기존 커널 vfs 위에 구축 된 가상 파일 시스템입니다. gvfs는 GIO 라이브러리 (VFS API)를 사용하여 파일, 장치, 원격 네트워크 위치 등에 액세스합니다. 위의 경우 ( 'gvfs-fuse-daemon') gvfs는 FUSE를 사용하여 파일 / 위치 / 장치를 마운트합니다. 이것은 기본적으로 노틸러스에서 원격 네트워크 연결을 마운트 할 때 발생합니다. FUSE를 사용하여 .gvfs 디렉토리의 위치 (내부?)를 마운트 한 다음 그놈 가상 파일 시스템 계층과 통신하여 새 마운트와 통신합니다.

기본적으로이 구조는 사용자가 새로운 위치를 동적으로 마운트하고 노틸러스를 통해 이들과 상호 작용할 수 있도록합니다.

참고로 : FUSE는 사용자 공간 파일 시스템으로, 사용자가 루트가 아닌 경우에도 사용자가 마운트를 실행할 수 있습니다)

그래서 어디로 날 떠나? LaCie 디스크는 fuseblk 유형으로 마운트됩니다. 이것은 퓨즈가 장착 된 블록 장치 일뿐입니다. 따라서 일부 데몬은 드라이브가 연결되었을 때 드라이브를 자동 감지 한 다음 계속 진행하여 퓨즈를 실행하여 블록 장치를 마운트합니다. 그래서 이것은 데몬이 무엇이며 어떻게 구성되어 있는지 (내 생각에는 내부 그놈 일 것입니다) 가장 중요한 질문입니다. 두 번째 질문은 시스템이 어떻게 새로 삽입 된 USB 디스크를 자동으로 감지했는지에 관한 것입니다.

연결:


/ media / LaCie 파일 시스템 및 / 또는 / dev / sdb1 장치에 대한 fstab 항목이 있습니까? 어쨌든 / dev / sdb1에 레이블이 지정되어 있습니까 (e2label / dev / sdb1)?
Tok

아니 fstab 항목이 없습니다. / media / LaCie에 마운트 될 때 레이블이 붙어 있다고 생각합니다. 알아 내기 위해 ntfslabel을 설치해야하지만 작업을 끝내려고합니다. LaCie로 데스크탑에 나타납니다.
fthinker

답변:


3

내 컴퓨터 에서이 작업을 시도했지만 작동합니다. :)

먼저 장치의 이름을 얻습니다.

ls -l /proc/disk/by-id/

제 경우에는 / proc / disk / by-id / usb-09a6_8001입니다.

이 줄을 / etc / fstab에 추가했습니다.

/dev/disk/by-id/usb-09a6_8001   /media/macle ext2 ro,users 0 2

그리고 그것은 작동하고 있습니다. 내 usbkey를 꽂을 때, 그것은 ro에 마운트되어 있으며 사용자가 소유하고 있습니다.


고마워 profy :) 그러나 내 질문의 주된 이유는 자동 마운트 및 USB 장치의 작동 방식을 이해해야 할 때마다 느끼는 극단적 인 좌절을 완화하는 것입니다. 이 복잡한 시스템의 배후에있는 마법을 해독하기 위해 여기에 있습니다. 게다가, fstab 및 usb 장치를 사용하는 것은 시작시 항상 연결되어 있지는 않기 때문에 약간 까다 롭습니다!
fthinker

1
어떻게 작동하는지 모르겠지만 udev 규칙에 의해 새로운 장치가 감지된다는 것을 확신합니다. /etc/udev/rules.d/ 및 /lib/udev/rules.d/를 살펴보십시오.
profy


2

Ulrich Dangel이 말했듯이 요즘 udisk는 참조가되어야합니다. 나는 그것이 어떻게 통보되는지 (udev-> dbus-> udisks?) 아직 알지 못하지만 수동으로 필요한 옵션으로 장치를 마운트하는 데 사용할 수 있습니다.

Udisk는 사용자가 볼륨으로 수행 할 수있는 작업을 확인하기 위해 polkit과 대화합니다. 여기에서 추측하고 있지만 명명 된 디스크 / 장치의 속성을 설정할 장소를 찾을 수 있다면 작동해야합니다.

udisksctl을 사용하면 사용자는 다음과 같은 필요한 옵션으로 장치를 마운트 할 수 있어야합니다.

udisksctl 마운트 -b / dev / sdxy -o ro / 마운트 포인트

그러나 나는 옵션을 어디에 둘 수 없습니다.

업데이트 : Ulrich 제안에 따라 Gnome 디스크 유틸리티로 이동하여 필요한 것을 얻었지만 그것이 가장 우아한 솔루션인지 아닌지 확실하지 않습니다. Cinnamon + Gnome3과 함께 Kororaa 17 (Fedora 17 기반)을 사용하고 "디스크"유틸리티로 이동하여 USB 드라이브의 마운트 옵션을 수정하고 "ro"를 추가하고 저장했습니다.

그것은 fstab에 항목을 추가합니다. 그놈 디스크 유틸리티에 저장했습니다.


알림을받는 방법을 확인해야한다는 것은 무엇을 의미합니까? 어떤 단계가 누락 되었습니까?
Ulrich Dangel

그리고 그것을하지 않습니다 udev→dbus→udisk하지만udev/uevent→udisk→dbus
울리히 DANGEL

나는 확실하지 않다는 것을 의미하고 그것을 확인하고 싶었지만 지금은 100 % 잘못되지 않았다는 것을 알았습니다.
tripledes

[strike] fstab에 추가 된 줄을 보여주십시오. fstab 줄이 @profy의 답변과 일치합니까? 즉 ro옵션으로.
반전

-1

커널이 하드웨어를 감지하는 방법에 관한 주제는 다음과 같습니다 .

요약해서 말하자면:

  • 커널은 지속적으로 PC 버스를 스캔하고 일반적으로 아래의 가상 파일 시스템에 장치를 매핑합니다 /sys/.
  • 커널은 udev에 새로운 하드웨어를 사용할 수 있다는 메시지를 보냅니다.
    • 장치에서 udev 규칙 처리
    • 장치를 심볼릭 링크 /dev/
    • 장치 드라이버로드
    • dbus를 통해 장치의 사용자 공간을 알립니다

이 시점에서 사용자 공간에서 장치를 사용할 수 있습니다. Gvfs와 FUSE는 모두 사용자 공간 파일 시스템입니다.


아니요, udev일반적으로 dbus타사 응용 프로그램이이를 통해 응용 프로그램에 알리지 않습니다 . 사용 qdbus --system하면 udev 이름이 표시되지 않습니다. 일반적으로 응용 프로그램은 자신을 구독 uevents하거나 자체 규칙을 제공합니다
Ulrich Dangel

@ulrich를 지적 해 주셔서 감사합니다. 내 요약은 중간 단계를 많이 제외하고 매우 기본적인 개요를 제공합니다. 자세한 내용은 링크 된 기사를 참조하십시오.
반전

2
버스를 모니터링하기 위해 일반적으로 폴링이 없기
때문에이
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.