Montaj komutlarının sırasını otomatikleştirme


9

Linux ile dizüstü bilgisayarıma bir cihaz (tablet, kamera, flash sürücü, harici sabit disk) bağladığımda genellikle aşağıdaki komut dizisini yazarım.

$ ls /dev/sd*
Diyelim ki cihazım / dev / sdc
isteğe $ sudo mkdir /media/my_flash
bağlı isteğe bağlı$ sudo chmod 777 /media/my_flash
$ sudo mount /dev/sdc /media/my_flash

Sonra bazı dosyaları kopyalayacağım ve

$ sudo umount /dev/sdc

Bu sıra bana dosyaların kopyalandığını ve kötü bir şey olmayacağını garanti ediyor.

Bana bu komut dizisini nasıl otomatikleştireceğimden bahseder misiniz? Bu yüzden sadece cihazı takacağım, hangi dizine monte edilmesi gerektiğini anlayacak, sonra biraz dosya aktarımı yapacağım ve sonra bana sinyal verecek (bir şekilde) cihazın fişini çekebilir miyim? Bunun için Linux işletim sisteminde bazı ayarlar var mı?

Yanıtlar:


6

Çıkarılabilir bir cihazın bağlantısına tepki veren sistem bileşeni, SHW tarafından belirtildiği gibi Udev'dir . Udev öğreticisi bile biraz ürkütücü olabilir; Size birkaç örnek göstereceğim.

İki adım söz konusudur: bir aygıt dosyasını (örn. /dev/sdc) Donanım aygıtıyla ilişkilendirme ve aygıtın dosya sistemine erişmek için bağlanması. Udev'in işi ilk adımdır, ancak bunun gibi harici bir komut çalıştırmasını söyleyebilirsiniz mount.

Bilinen çıkarılabilir cihazlar için, altında özel bir cihaz adı kullanmayı seviyorum /dev/removable(bu dizin adı kişisel bir kuraldır). Aşağıdaki udev kuralları (yerleştirilecek /etc/udev/rules.d/my_removable_disks.rules), her ikisi de bölüm 1'deki dosya sisteminin bir özelliği tarafından tanımlanan iki disk için bilinen adlara sahip sembolik bağlantılar oluşturur:

KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s UUID %N1", RESULT=="1234-5678", SYMLINK+="removable/foo"
KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s LABEL %N1", RESULT=="Joe's disk", SYMLINK+="removable/joe"

Eski udev sürümlerinin çağrı yerine ( /udev/lib/vol_id -u %N1UUID -liçin, etiket için) gerekebilir blkid. Eşleştirebileceğiniz daha fazla şey vardır, örneğin bir cihazın satıcısı ve seri numarası ile eşleştirmek ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="XYZZY12345PDQ97"(yerine PROGRAM==…, RESULT==…).

Sonra şu şekilde bir çizgi kullanabilirsiniz /etc/fstab:

/dev/removable/joe  /media/joe  vfat  noauto,user

Otomatik montajı tercih ederseniz , RUN="mkdir /media/foo && mount /dev/removable/foo /media/foo", udev hattına benzer bir şey ekleyebilirsiniz . umount /media/fooFişi prizden çekmeyi unutmayın .


Mükemmel çözüm için teşekkürler. Bazı harici sürücülerde LVM var, bu yüzden daha uzun övgü dizisi (VG aktivasyonu vb. Dahil), şimdi buna yedek komut dosyaları bile ekleyebilirim :).
Grzegorz Wierzowiecki

Sevgili okuyucu - mevcut ATTRS hakkında bilgi edinmek istiyorsanız, bunu cihazınızla deneyin:udevadm info --name=/dev/DEVICE --attribute-walk
Grzegorz Wierzowiecki

8

Bunu, bahsettiğiniz aynı bash komutlarını içeren bash betiğini "çalıştıracak" bir UDEV kuralları yazarak yapabilirsiniz. Bahsedilen cihazları her taktığınızda, UDEV bunu tanıyacak ve kurala göre davranmaya başlayacaktır.

Kural yazmak için bu bağlantıyı takip edebilirsiniz .


Oh güzel. Bunu henüz bilmiyordum - Bağlantıya yer işareti koyma ve repertuarıma ekleme.
Shadur

Lütfen daha spesifik olabilir misiniz? Dan hangisi paragraflar linke benimle alakalı?
xralf

Aradığım şey gibi görünüyor. Sadece bu günlerde okuyacak zamanım yok. Anlayacağım zamanda çalışacağım ve doğru cevabı yorumunuza yapıştıracağım. Teşekkürler
xralf

4

Günümüzde çeşitli otomatik montaj cinleri ve pmountkullanıcıların erişim /mediagerektirmeden çıkarılabilir aygıtları monte etmelerine izin veren komut vardır sudo.

Hem Gnome hem de KDE, bağlı olduklarında çıkarılabilir birimleri otomatik olarak bağlama seçeneğine sahiptir; hangi dağıtımı kurduğunuza bağlı olarak bu işlev varsayılan olarak 'açık' olabilir.

GNOME'da, bu özelliği yöneten seçenekler System -> Preferences -> Removable Media; KDE ile yeni bir deneyimim yok.


Pencere Yönetim Ortamında (KDE, GNOME gibi) bağımsız olarak yapmak istiyorum (X başlatılmamış gibi).
xralf

Sonra SHW tarafından yayınlanan bu bağlantıyı okumak ve hemen hemen hepsini okumak zorunda kalacaksınız.
Shadur
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.