Memasang disk USB secara otomatis (Cara kerjanya)

12

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:

fthinker
sumber
apakah ada entri fstab untuk sistem file / media / LaCie dan / atau perangkat / dev / sdb1? Apakah / dev / sdb1 dilabeli pula (e2label / dev / sdb1)?
Tok
Tidak ada entri fstab. Saya percaya ini dilabeli karena dipasang di / media / LaCie. Saya perlu menginstal ntfslabel untuk mencari tahu, tetapi saya baru saja akan meninggalkan pekerjaan. Itu juga muncul di desktop saya sebagai LaCie.
fthinker

Jawaban:

3

Saya mencoba melakukan ini di komputer saya dan berhasil :)

Pertama saya mendapatkan nama untuk perangkat saya:

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

Dalam kasus saya ini adalah / proc / disk / by-id / usb-09a6_8001

Saya menambahkan baris ini di / etc / fstab:

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

Dan itu berfungsi, ketika saya pasang usbkey saya, itu dipasang ro dan dimiliki oleh pengguna saya.

profy
sumber
Terima kasih banyak :) Tapi tujuan utama pertanyaan saya adalah untuk mengurangi frustrasi ekstrem yang saya rasakan setiap kali saya dipaksa untuk memahami cara kerja automount dan perangkat usb. Saya di sini untuk menguraikan sihir yang ada di balik sistem yang kompleks ini. Selain itu, menggunakan perangkat fstab dan usb sedikit rumit karena tidak selalu dijamin terpasang saat start up!
fthinker
1
Saya tidak tahu cara kerjanya, tapi saya cukup yakin bahwa perangkat baru terdeteksi oleh aturan udev, lihat /etc/udev/rules.d/ dan di /lib/udev/rules.d/.
profy
2

Saat ini solusi standar adalah sejauh yang saya tahu udiskdaemon menyediakan api dbus serta antarmuka commandline . Ada juga beberapa bungkus udisks dan automounter yang tersedia.

Biasanya Anda tidak mengonfigurasi udisksendiri 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.

Ulrich Dangel
sumber
2

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.

tiga kali lipat
sumber
Apa yang Anda maksud dengan Anda harus melihat bagaimana pemberitahuannya? Langkah apa yang hilang?
Ulrich Dangel
Dan tidak udev→dbus→udisktapiudev/uevent→udisk→dbus
Ulrich Dangel
Maksud saya, saya tidak begitu yakin dan saya ingin memverifikasinya, tetapi sekarang saya melihat bahwa saya tidak 100% salah.
lipat
[serang] Tolong tunjukkan baris yang ditambahkan ke fstab. Saya ingin mengkonfirmasi apa yang saya pikirkan. [/ Serang] Jadi baris fstab cocok dengan jawaban @ profy? yaitu dengan roopsi.
invert
-1

Pada topik bagaimana kernel mendeteksi perangkat keras, berikut adalah artikel yang sangat bagus tentang apa yang terjadi .

Singkatnya:

  • kernel secara konstan memindai bus PC Anda dan memetakan perangkat ke sistem file virtual, biasanya di bawah /sys/.
  • kernel mengirim pesan bahwa perangkat keras baru tersedia untuk udev, yang:
    • memproses aturan udev pada perangkat
    • symlink perangkat ke /dev/
    • memuat driver perangkat
    • beri tahu ruang pengguna perangkat melalui dbus

Pada titik ini perangkat siap digunakan oleh userspace. Gvfs dan FUSE keduanya adalah filesystem userspace.

membalikkan
sumber
Tidak, udevbiasanya tidak memberi tahu aplikasi melalui dbusini dilakukan oleh aplikasi pihak ketiga. Jika Anda menggunakan, qdbus --systemAnda tidak akan melihat nama udev. Aplikasi biasanya hanya berlangganan sendiri ueventsatau mengirim aturan mereka sendiri
Ulrich Dangel
Terima kasih telah menunjukkannya pada @ulrich. Ringkasan saya memberikan garis besar yang sangat mendasar tidak termasuk banyak langkah di antaranya. Lihat artikel tertaut untuk detail berpasir.
invert
2
artikel ini juga salah karena biasanya tidak ada pemungutan suara yang terlibat untuk memantau bus
Ulrich Dangel