배경: USB 디스크를 읽기 전용으로 마운트하려고 하는데 디스크를 삽입하면 ubuntu 설치 시 읽기-쓰기로 마운트됩니다.
umount 및 mount 명령을 사용하여 디스크를 수동으로 마운트 해제하고 읽기 전용으로 수동으로 다시 마운트할 수 있지만 이는 재미가 없습니다. 일반적인 Linux 시스템(udev? 역사적 배경도 좋을 것입니다)에서 USB 마운트가 자동으로 수행되는 방법과 디스크 ro를 읽을 수 있도록 이 프로세스를 조정할 수 있는 방법에 대해 누군가 나에게 간단한 설명을 줄 수 있습니까?
감사해요.
편집하다:도움이된다면 그놈을 사용하고 있습니다.
편집 2:서둘러서 더 많은 정보를 제공하는 것을 잊어버렸습니다. 이는 "마운트" 출력에서 디스크가 보이는 모습입니다.
/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
편집 3: 이것은 또한 그 자체로 관련이 있을 수 있습니다. 설치 출력에는 다음도 포함됩니다.
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를 사용하여 파일/위치/장치를 마운트합니다. 이는 기본적으로 Nautilus에 원격 네트워킹을 설치할 때 발생하는 현상입니다. FUSE를 사용하여 .gvfs 디렉터리 위치(내부?)를 마운트한 다음 gnome 가상 파일 시스템 계층과 통신하여 새 마운트와 통신합니다.
기본적으로 이 구조를 통해 사용자는 새 위치를 동적으로 마운트하고 노틸러스를 통해 상호 작용할 수 있습니다.
참고용으로만 사용하세요:FUSE는 사용자 공간 파일 시스템입니다. 즉, 사용자가 루트가 아니더라도 마운트를 실행할 수 있습니다.
그래서 내가 무엇을해야하니? 글쎄, LaCie 디스크는 fusionblk 유형을 사용하여 마운트되고 있습니다. 이것은 퓨즈가 설치된 블록 장치입니다. 따라서 일부 데몬은 드라이브가 연결되면 자동으로 드라이브를 감지한 다음 퓨즈를 실행하여 블록 장치를 마운트합니다. 따라서 이것은 어떤 데몬이고 어떻게 구성되어 있는지(내부 그놈 관련 내용인 것 같습니다)가 가장 중요한 질문입니다. 두 번째 질문은 시스템이 새로 삽입된 USB 디스크를 자동으로 감지하는 방법입니다. 하지만 제 생각에는 이는 약간 제쳐두고 훨씬 낮은 수준이라고 생각합니다(읽기: udev?).
링크:
답변1
컴퓨터로 해봤는데 잘 되더라구요 :)
먼저 장치에 이름을 지정합니다.
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
작동 중입니다. USB 키를 연결하면 사용자가 USB 키를 마운트하고 소유하게 됩니다.
답변2
내가 아는 한 현재 기본 솔루션은 다음과 같습니다.udisk
데몬이 제공하는 것데이터베이스 버스 인터페이스그리고명령줄 인터페이스. 더있다udiks 래퍼와 자동 설치 프로그램을 사용할 수 있습니다.
일반적으로 지시된 대로만 수행하므로 직접 구성하지 않으므로 udisk
Gnome을 살펴봐야 합니다. Gnome 디스크 유틸리티를 사용하면 설치 플래그 자체를 수정/변경할 수 있습니다.
답변3
Ulrich Dangel이 말했듯이 이제 udisk가 참조가 되어야 합니다. 어떻게 알림을 받는지는 보지 못했지만(udev->dbus->udisks?) 필요한 옵션을 사용하여 장치를 수동으로 설치하는 데 사용할 수 있습니다.
Udisks는 polkit과 통신하여 사용자가 볼륨에서 수행할 수 있는 작업을 알아냅니다. 추측이지만, 명명된 디스크/장치의 속성을 설정할 수 있는 위치를 찾을 수 있다면 제대로 작동할 것입니다.
udisksctl을 사용하면 사용자는 다음과 같이 필요한 옵션으로 장치를 설치할 수 있습니다.
udisksctl mount -b /dev/sdxy -o ro /마운트 지점
그런데 옵션을 어디에 넣어야 할지 모르겠네요.
고쳐 쓰다: Ulrich의 제안에 따라 Gnome Disk Utility를 사용하여 필요한 것을 구현했지만 이것이 가장 우아한 솔루션인지는 확실하지 않습니다. 저는 Kororaa 17(Fedora 17 기반)과 Cinnamon+Gnome3을 사용하고 있으며 "디스크" 유틸리티로 이동하여 USB 드라이브의 마운트 옵션을 수정하고 "ro"를 추가하고 저장했습니다.
fstab에 항목을 추가합니다(멋진 솔루션은 아니라고 생각합니다. 시스템 전체가 아니라 사용자가 구성할 수 있도록 유지해야 한다고 생각합니다). 드라이브를 연결하면 저장한 옵션을 사용하여 선택한 마운트 지점에 자동으로 마운트됩니다. 그놈 디스크 유틸리티에서.
답변4
커널이 하드웨어를 감지하는 방법에 대한 주제에 대해 무슨 일이 일어나고 있는지에 대한 매우 좋은 기사가 있습니다 .
간단히 말해서:
- 커널은 지속적으로 PC 버스를 스캔하고 장치를 일반적으로
/sys/
. - 커널은 새 하드웨어를 udev에 사용할 수 있음을 나타내는 메시지를 보냅니다.
- 장치의 udev 규칙 처리
- 장치를 다음에 심볼릭 링크하십시오.
/dev/
- 장치 드라이버 로드
- dbus를 통해 장치의 사용자 공간에 알림
이제 사용자 공간에서 장치를 사용할 준비가 되었습니다. Gvfs와 FUSE는 모두 사용자 공간 파일 시스템입니다.