Saya memiliki sistem sid Debian (Wheezy) (dan sama untuk arch), tanpa lingkungan desktop (dan tidak ada Xorg sama sekali).
Saya dapat memasang kartu SD, stik USB, HDD eksternal dengan label ke direktori yang ditentukan /media/
secara manual dengan mount
/ umount
dan entri yang sesuai di /etc/fstab
, atau secara otomatis pada saat boot, tetapi ini menarik, untuk membatasi dan tidak cukup dinamis untuk kebutuhan saya: jika saya ingin mereka dipasang di /media/<LABEL>
, setiap perangkat dengan <LABEL>
kebutuhan yang berbeda entri sendiri, dan setiap <LABEL>
subdirektori perlu dibuat / dihapus secara manual /media/
juga).
Jadi, apa cara terbaik untuk me-mount mereka otomatis di /media/<LABEL>
di penyisipan (dan unmount mereka dari filesystem segera setelah mereka dicabut tidak peduli seberapa berisiko itu untuk data )?
Solusi ideal akan:
- mendeteksi ketika media removable terpasang-in (yaitu ketika ditambahkan dalam
/dev/
sebagaisdax
,sdbx
, ... olehudev
) - buat direktori
/media/
sesuai dengan labelnya (label media yang bisa dilepas) - pasang di direktori
/media/<LABEL>
dalamRW
mode (jika sistem file mendukungnya) denganflush
opsi (untuk avfat
) - mendeteksi apakah media telah dicabut
- jika demikian, lepaskan dari sistem file
- hapus direktori yang sesuai dari
/media/
(perangkat harus dipasang dalam mode sinkron oviously, untuk menghindari kehilangan data saat panas dicabut karena caching edit: sync
adalah terlalu banyak untuk vfat
removable media sehingga flush
telah dibuat sebagai kompromi , kurang aman daripada sync
, tapi kurang berisiko menurut kehidupan -Sepeda kenangan flash)
Saya menemukan beberapa info tentang autofs
, HAL
, udisks
, udisks2
, usbmount
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 ...
sumber
sync
, deamon dapat melepas perangkat dari fs jika mendeteksi bahwa ia telah dicabut tanpa kehilangan data. Semua distro desktop melakukan itu. Saya ingin itu di terminal.halevt
ini untuk . Tentang unmount, umumnya DE mengharapkan Anda mengeluarkan perangkat dari manajer file, sebelum mencabutnya secara fisik.fdisk -l
dan kemudianmount
- itu dua perintah, tapi OK, jika Anda ingin automatized, Anda harus menguraifdisk -l
output, dan kemudian meletakkannya dimount
- saya melakukan hal-hal seperti itu denganhead
,tail
,tr
,cut
, dll. tetapi pro biasanya melakukannya denganawk
atau, bahkan lebih baik, mencari data di tempat yang benar. Tentang penghapusan, setidaknya bagi saya ketika saya mount ke/mnt
, itu dilakukan secara otomatis. Tentang pemicu (saat Anda mencolokkan) saya tidak tahu, tapi tolong beri tahu kami ketika Anda menyelesaikan ini.Jawaban:
Saya pikir Anda sedang mencari
pmount
.Jika Anda ingin pemasangan otomatis saat pemasangan, lihat Menghitung tongkat USB di Debian .
Jika sistem Anda menggunakan udisks2 , itulah cara yang disukai untuk bereaksi terhadap penyisipan perangkat penyimpanan yang dapat dilepas. Lihat Arch Wiki untuk tips konfigurasi untuk Udisks.
Jika tidak, program yang bereaksi ketika perangkat baru muncul adalah udev , jadi pemasangan otomatis dipicu oleh aturan udev . The usbmount paket menyediakan aturan udev untuk secara otomatis me-mount perangkat penyimpanan USB dan beberapa orang lainnya. Panggilan
mount
dari aturan udev tidak berfungsi untuk sistem file FUSE (seperti ntfs-3g), jadi gunakan udisks jika Anda membutuhkannya.Anda tidak dapat menghapus media secara otomatis ketika media dihapus karena kausalitas tidak berfungsi seperti itu. Media harus dilepas sebelum dihilangkan. Untuk media baca-saja, Anda dapat melepaskan unmount setelah dihapus, meskipun ini mungkin membingungkan beberapa aplikasi jika mereka memiliki file yang terbuka pada sistem file yang tiba-tiba menghilang. Untuk media yang dapat ditulisi, jika Anda mencabut sistem file yang dipasang, kemungkinan besar korupsi data.
sumber
flush
opsi pemasangan yang dirancang khusus untukvfat
menghindari masalah itu: penulisan tidak dilakukan setelah setiap blok, tetapi segera setelah perangkat tampaknya tidak aktif. Dan kenangan kilat juga meningkatkan siklus hidup buntu mereka. Sekarang, jelas pengguna harus waspada untuk tidak mencabut perangkat saat file dibuka atau selama salinan (atau segera setelah). Tapi itu kompromi yang bagus./media/usb-*
, yang tidak sesuai dengan kebutuhan saya. Saya ingin dapat me-mount perangkat secara otomatis/media/<DEV_LABEL>
denganflush
parameter ketika mereka terdeteksi (jika mungkin dengan pembuatan dinamis direktori), dan untuk meng-unmount mereka dan menghapus direktori dari/media/
secara otomatis jika mereka tidak terdeteksi lagi. Risiko yang saya ambil terserah saya.usbmount
tidak mendukung NTFSjessie
lagi: bugs.debian.org/774149Inilah cara saya baru-baru ini melakukannya, dan saya cukup senang dengan pendekatan ini sekarang. Ini untuk Ubuntu 12,04 + gentoo, tapi saya kira ada distro, yang memungkinkan untuk menginstal udev dan autofs akan berfungsi.
Prasyarat: Anda harus menginstal udev + autofs.
Langkah 1)
Buat file "/etc/udev/rules.d/90-usbsd-auto.rules" berikut (tentu saja Anda dapat menggunakan nama apa pun asalkan diakhiri dengan ".rules"). :
Apa yang dilakukan ini: Ini menciptakan dua symlink, satu untuk partisi perangkat penyimpanan USB di bawah "/ dev / usbdisks / <...>". Ini akan menggunakan label partisi penyimpanan USB atau nama kernel, jika tidak ada label. Symlink kedua akan ditautkan dari "/ media / usb / <...>" ke "/ media / autousb / <...>" ini dilakukan untuk dukungan automounter (lihat langkah 2).
Catatan: Saya awalnya tidak menggunakan aturan dengan variabel ID_FS_LABEL_ENC, karena ini berbahaya menurut saya. Apa yang terjadi jika Anda mencolokkan dua stik USB yang menggunakan label yang sama?
Tapi poster itu secara khusus ingin menggunakan label disk USB, jadi saya memodifikasi aturannya.
Untuk memastikan udev membaca aturan ini, gunakan
Dengan file aturan udev ini semuanya sudah diatur untuk mengotomatiskan partisi perangkat penyimpanan USB. Perhatikan bahwa saat ini, perangkat TIDAK akan diotomatisasi (sengaja). Ini akan diautomatisasi setelah Anda menggunakannya
Langkah 2)
Setup autofs ke automount / media / autousb / <...>: Saya menambahkan baris berikut ke file "/etc/auto.master" saya (untuk Ubuntu 12.04):
Ini berarti bahwa AutoFS akan melepas perangkat setelah 60 detik tidak aktif. Anda mungkin ingin menggunakan lebih sedikit atau lebih, tergantung selera Anda.
Untuk Gentoo Anda harus memodifikasi "/etc/autofs/auto.master" jadi masuk akal untuk menggunakannya
Sekarang saya membuat "auto.usb" dengan konten berikut:
Auto.usb ini perlu dieksekusi, sehingga autofs menggunakan ini sebagai skrip (bash). Jadi misalnya
Apa yang dilakukan ini: Script ini akan memberi tahu AutoFS (/ usr / sbin / automount) bagaimana me-mount partisi perangkat penyimpanan usb.
Script pertama-tama akan menggunakan "/ sbin / blkid" untuk mencari tahu jenis sistem file apa pada partisi.
Skrip kemudian akan memberikan opsi pemasangan yang tepat tergantung pada partisi perangkat.
Catatan: Saya menyertakan kode sampel untuk "vfat" (mungkin yang paling umum untuk stik usb), "ntfs" dan "xfs" sistem file. Tentu saja cukup mudah untuk memperluas ini untuk mendukung lebih banyak sistem file.
Langkah 3) Opsional ... Untuk "mengeluarkan" == unmount stick usb Anda (atau partisi pada stick usb Anda), buat skrip di bawah / sbin / usbeject:
Dengan skrip ini, Anda dapat menggunakan "sudo usbeject" untuk meng-unmount semua partisi perangkat USB yang terpasang (dengan memerintahkan automount untuk meng-unmountnya).
Tentu saja Anda cukup memastikan bahwa partisi tidak digunakan di mana pun; automounter kemudian akan melepas partisi setelah batas waktu 60 detik ...
Trik sebenarnya di sini adalah dengan menggunakan symlink dari "/ media / usb" ke "/ media / autousb":
sumber
Ok, sudah lama, tapi saya masih akan menjawab pertanyaan saya dengan opsi terbaik yang saya temukan sampai sekarang. Untuk meringkas: membuat
udev
aturan, terkait dengan beberapa skrip (yang akan membuat / menghapus direktori dan membatalkan pemasangan perangkat yang dapat dilepas), dan dilampirkan keudev
jenis acara perangkat =partition
.1 - Membuat skrip tambah / hapus
Simpan skrip berikut
storage-automount.sh
ke/lib/udev/
dan buat ini dapat dieksekusi (sudo chmod a+x /lib/udev/storage-automount.sh
):Simpan skrip berikut
storage-autounmount.sh
ke/lib/udev/
dan buat ini dapat dieksekusi (sudo chmod a+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 membuatnya memiliki izin yang sama dengan aturan lain di direktori / dir itu
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
kelompok pada 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 bekerja pada semua distribusi yang bergantung
udev
.sumber
udev
?Saya pikir ini agak terlambat, tetapi saya akan memposting ini jika ada yang membutuhkannya:
Setelah memeriksa solusi di banyak tempat, saya menemukan solusi sederhana di Arch Wiki:
Tautan ke Arch Wiki .
Kita dapat menambahkan aturan udisks2 untuk mengubah direktori mount default dari
/run/media/$USER/
menjadi/media/<Label>
.Tambahkan aturan berikut
/etc/udev/rules.d/
dengan nama seperti99-udisks2.rules
:ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"
Kemudian kita bisa menginstal alat sederhana seperti Udiskie untuk automount.
sumber
Silakan lihat halaman ArchWiki Udev . Anda tidak seharusnya mengeksekusi
mount
dari aturan Udev atau dari skrip yang dieksekusi oleh aturan Udev.Namun, seperti yang ditunjukkan dalam proyek udev-media-automount , cukup mudah untuk melakukannya dengan memanggil unit Systemd dari aturan Udev, yang kemudian memanggil skrip yang melakukan pemasangan. Tidak seperti udisks2 dan solusi lain, udev-media-automount diarahkan pada kasus sederhana di mana Anda ingin memasang sesuatu sebagai
root
pengguna tanpa harus menunggu lingkungan desktop atau "sesi pengguna" untuk hadir. Tampaknya persis seperti apa yang diminta OP, dan saya merasa fungsional dan mudah dimengerti.sumber
Saya menemukan cara untuk melakukan ini dengan mengedit file / etc / fstab. Entri sederhana terlihat seperti:
/dev/sdb1 /media/robot/hdd1 ntfs defaults 0 0
<file system> <mount point> <type> <options> <dump> <pass>
sumber
/etc/fstab
hanya dipasang secara otomatis saat boot.