Latar Belakang: Saya mencoba untuk memasang disk usb sebagai hanya baca tetapi instalasi ubuntu saya memasangnya saat saya mencolokkan disk.
Saya dapat meng-unmount disk secara manual dan remount secara manual sebagai hanya membaca dengan perintah umount dan mount tetapi itu tidak menyenangkan. Bisakah seseorang memberi saya penjelasan singkat tentang bagaimana tepatnya pemasangan usb secara otomatis dilakukan pada sistem linux yang khas (udev? Latar belakang sejarah juga bagus) dan mungkin bagaimana saya dapat mengubah proses ini agar saya dapat membaca disk ro?
Terima kasih.
Sunting: Saya menggunakan gnome jika itu membantu sama sekali.
Sunting2: Tergesa -gesa saya saya lupa untuk memberikan sedikit informasi lebih lanjut. Seperti inilah bentuk disk dari output 'mount'.
/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Sunting3: Ini juga mungkin relavent dengan caranya sendiri. Pada output mount saya juga memiliki yang berikut:
gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)
Saya pikir ini mungkin terkait dengan fuseblk mount di atas, tetapi apa yang saya temukan adalah ini.
Gvfs adalah sistem file virtual Gnome. Ini adalah sistem file virtual yang dibangun di atas kernel vfs yang sudah ada. gvfs menggunakan perpustakaan GIO (yang merupakan VFS API) untuk mengakses file, perangkat, lokasi jaringan jarak jauh, dll. Dalam hal ini di atas ('gvfs-fuse-daemon') gvfs menggunakan FUSE untuk me-mount file / lokasi / perangkat. Ini pada dasarnya adalah apa yang terjadi ketika Anda memasang koneksi jaringan jarak jauh di Nautilus. Ini akan menggunakan FUSE untuk me-mount lokasi (di dalam?) Direktori .gvfs, dan kemudian akan berkomunikasi dengan lapisan sistem file virtual gnome untuk berkomunikasi dengan mount baru.
Pada dasarnya struktur ini memungkinkan pengguna untuk secara dinamis me-mount lokasi baru dan berinteraksi dengan mereka melalui nautilus.
Hanya untuk referensi: FUSE adalah filesystem userspace, alias itu memungkinkan pengguna untuk menjalankan mount bahkan ketika pengguna itu tidak root)
Jadi, di mana itu meninggalkan saya? Yah disk LaCie sedang dipasang dengan tipe fuseblk. Ini hanya perangkat blok yang dipasang dengan sekering. Jadi beberapa daemon telah mendeteksi drive secara otomatis ketika dicolokkan dan kemudian melanjutkan dan menjalankan sekering untuk memasang perangkat blok saya. Jadi apa daemon ini, dan bagaimana cara mengonfigurasinya (tebakan saya adalah beberapa hal gnome internal) adalah pertanyaan yang paling penting. Pertanyaan kedua adalah bagaimana sistem secara otomatis mendeteksi disk usb yang baru saja dimasukkan, tapi saya pikir itu agak samping dan tingkat yang jauh lebih rendah di sini (baca: udev?).
Tautan:
sumber
Jawaban:
Saya mencoba melakukan ini di komputer saya dan berhasil :)
Pertama saya mendapatkan nama untuk perangkat saya:
Dalam kasus saya ini adalah / proc / disk / by-id / usb-09a6_8001
Saya menambahkan baris ini di / etc / fstab:
Dan itu berfungsi, ketika saya pasang usbkey saya, itu dipasang ro dan dimiliki oleh pengguna saya.
sumber
Saat ini solusi standar adalah sejauh yang saya tahu
udisk
daemon menyediakan api dbus serta antarmuka commandline . Ada juga beberapa bungkus udisks dan automounter yang tersedia.Biasanya Anda tidak mengonfigurasi
udisk
sendiri karena hanya melakukan apa yang diperintahkan sehingga Anda harus melihat ke Gnome. Mungkin Gnome Disk Utility memungkinkan Anda untuk memodifikasi / mengubah flag mount itu sendiri.sumber
Seperti yang dikatakan Ulrich Dangel, udis seharusnya menjadi rujukan saat ini. Saya belum melihat bagaimana ini diberitahukan (udev-> dbus-> udisks?), Tetapi secara manual dapat digunakan untuk memasang perangkat dengan opsi yang Anda butuhkan.
Udisk berbicara dengan polkit untuk melihat apa yang diizinkan pengguna dengan volume. Saya menduga di sini, tetapi jika kita dapat menemukan tempat untuk mengatur properti untuk disk / perangkat bernama itu seharusnya berfungsi.
Dengan menggunakan udisksctl, pengguna Anda harus dapat memasang perangkat dengan opsi yang Anda butuhkan, seperti ini:
udisksctl mount -b / dev / sdxy -o ro / mountpoint
Namun saya tidak tahu di mana menempatkan opsi.
UPDATE: Mengikuti saran Ulrich, saya pergi ke utilitas disk Gnome dan saya telah mencapai apa yang Anda butuhkan tetapi tidak yakin apakah itu solusi yang paling elegan atau tidak. Saya menggunakan Kororaa 17 (berbasis Fedora 17) dengan Cinnamon + Gnome3, pergi ke utilitas "Disk" dan memodifikasi opsi pemasangan untuk drive usb saya, menambahkan "ro" dan menyimpan.
Ini menambahkan entri ke fstab (di situlah saya tidak melihatnya sebagai solusi yang elegan, saya pikir itu harus tetap sebagai konfigurasi pengguna bukan sistem yang luas), saya pasang drive dan sudah terpasang secara otomatis pada titik mount yang dipilih dengan opsi Saya disimpan di utilitas disk Gnome.
sumber
udev→dbus→udisk
tapiudev/uevent→udisk→dbus
ro
opsi.Pada topik bagaimana kernel mendeteksi perangkat keras,
berikut adalah artikel yang sangat bagus tentang apa yang terjadi.Singkatnya:
/sys/
./dev/
Pada titik ini perangkat siap digunakan oleh userspace. Gvfs dan FUSE keduanya adalah filesystem userspace.
sumber
udev
biasanya tidak memberi tahu aplikasi melaluidbus
ini dilakukan oleh aplikasi pihak ketiga. Jika Anda menggunakan,qdbus --system
Anda tidak akan melihat nama udev. Aplikasi biasanya hanya berlangganan sendiriuevents
atau mengirim aturan mereka sendiri