Saya memiliki sistem sid Debian (Wheezy) (dan pertanyaan yang sama untuk arch juga), tanpa lingkungan desktop (dan tidak ada Xorg sama sekali).
Saya dapat memasang kartu SD, stik USB, HDD eksternal secara manual dengan mount / umount dengan entri yang sesuai, /etc/fstab
tetapi ini menarik, dan untuk membatasi: jika saya ingin memasangkannya di /media/<LABEL>
setiap perangkat dengan <LABEL>
kebutuhan yang berbeda dengan entri sendiri, dan setiap <LABEL>
direktori perlu dibuat / dihapus secara manual /media/
juga).
Jadi, apa cara terbaik untuk memasangnya secara otomatis /media/<LABEL>
saat penyisipan (dan melepasnya dari sistem file segera setelah dicabut)?
Solusi ideal akan:
- mendeteksi ketika media removable terpasang-in (ditambahkan dalam
/dev/
sepertisdax
,sdbx
, ... olehudev
) - buat direktori
/media/
sesuai dengan labelnya (label media yang bisa dilepas) - pasang di direktori
/media/<LABEL>
dalam mode RW (jika sistem file didukung) - mendeteksi apakah media telah dicabut
- jika demikian, batalkan dari sistem file
- hapus direktori yang sesuai dari
/media/
(perangkat harus dipasang dalam mode sinkron sebelumnya, untuk menghindari kehilangan data saat panas dicabut karena caching)
Saya menemukan beberapa info tentang autofs
, HAL
, udisks
, udisks2
, dll, tetapi tidak jelas mana yang usang atau disukai, dan lagi pula, saya belum menemukan cara untuk mengkonfigurasi mereka dengan mudah pada sistem saya untuk melakukan itu, sampai sekarang ...
Minimalisme, keanggunan, KISS, * nix-minded, tidak ada file kebijakan XML gila yang tak tertahankan, dan terkini sangat dihargai.
sunting: mencoba membuat pertanyaan saya lebih jelas
sumber
Jawaban:
Ok, sudah lama, tapi saya masih akan menjawab pertanyaan saya dengan opsi terbaik yang saya temukan sampai sekarang.
Cara terbaik adalah membuat
udev
aturan, yang terkait dengan beberapa skrip (yang akan membuat / menghapus direktori dan me-mount / melepas perangkat yang bisa dilepas), dan dilampirkan kepartition
udev
jenis acara perangkat.1 - Membuat skrip tambah / hapus
Tambahkan script ini
storage-automount.sh
di/lib/udev/
dan set ke executable (sudo chmod +x /lib/udev/storage-automount.sh
):Tambahkan script ini
storage-autounmount.sh
di/lib/udev/
dan set ke executable (sudo chmod +x /lib/udev/storage-autounmount.sh
):2 - Membuat
udev
aturan untuk melampirkan skrip tersebut ke acaraDan akhirnya, tambahkan
udev
aturan/etc/udev/rules.d
, misalnya85-storage-automount.rules
:Dan itu saja.
Sekarang, ketika Anda mencolokkan perangkat penyimpanan, direktori akan dibuat
/media/
sesuai dengan nama partisi (saya tidak ingat tapi saya pikir itu berfungsi dengan partisi NTFS juga) dan partisi Anda akan dipasang ke dalamnya. R / W untuk pengguna jika Anda memilikiplugdev
grup di sistem Anda. Selain itu, perangkat dipasang dalam mode sinkron untuk membatasi risiko kehilangan data jika dicabut.Ketika perangkat dihapus, itu dilepas dan direktori dihapus dari
/media
.Juga, alat untuk memantau
udev
acara adalahudevadm monitor
, dengan opsi-opsi seperti--env
atau--property
:Ini diuji dan bekerja dengan baik pada Debian dan Arch, tetapi mungkin berfungsi pada semua distribusi yang bergantung
udev
.sumber
Anda mungkin ingin memeriksa
/dev/disk/by-uuid
direktori Anda saat drive-drive spesifik itu dicolokkan. Menggunakannyals -l
akan menunjukkan kepada Anda perangkat (misalnya/dev/sdb1
) bersama dengan cairannya. Setelah menemukan yang cocok, perbarui/etc/fstab
sesuai dengan Anda , ganti/dev/sd*
dengan/dev/disk/by-uuid/*
entri yang sesuai .Untuk perincian, lihat jawaban saya untuk Bagaimana saya mencegah USB flash drive mendapatkan nama perangkat Linux baru setelah bangun dari tidur? .
sumber
blkid
atau/dev/disk/by-uuid
direktori. Dan saya bisa memasangnya secara manual juga. Sekarang, saya sudah memilikinya/etc/fstab
, sebenarnya denganlabel
atau olehUUID
, keduanya bekerja dengan benar. Itu tidak terlalu membantu, karena mereka dipasang pada waktu boot saja (selama saya tidak menentukannoauto
). Tetapi jika saya menghapus mereka dan jika saya memasukkan kembali mereka saat sistem sedang berjalan, mereka tidak secara otomatis di-unmount / di-mout di direktori yang saya tentukan difstab
... Ini adalah masalah saya.sync
opsi masukfstab
) dan me-mount mereka secara otomatis (danuser
jugaroot
) ketika saya menghapus / memasukkannya. Itu sebabnya saya kira baikAutoFS
,HAL
,udisks
,udisks2
(atauhotplug
, mungkin ...?) Atau yang serupa terlibat ... Tapi tidak tahu apa yang saya hilang persis.hal
(antara lain disebutkan) harus mengurus unmount perangkat fs jika tidak dicolokkan lagi. Thesync
pilihan di/etc/fstab
digunakan dalam hal ini untuk sinkronisasi file dari perangkat tanpa caching, meskipun menghindari kehilangan data saat panas-mencabut (w / o unmount manual sebelum).Terima kasih atas petunjuknya. Saya menyederhanakan skrip mount dan unmount Anda seperti ini:
meningkat:
unmount:
File /etc/udev/rules.d/ saya terlihat seperti ini:
Ini sederhana dan harus menjadi kasus penggunaan biasa.
sumber