Uudid kurallarında UUID kullanın ve / media / $ UUID üzerindeki usb sürücüyü takın


9

USB sürücüyü monte etmek istiyorum /media diskin UUID değerini temel alır. Bir usb sürücünün UUID'sini udev kurallar dosyasında ve udev kuralının ne olduğunu USB sürücüsünü UUID numarasıyla klasör adı olarak kullanmak için nasıl kullanabilirim.

blkid komutu bir diskin UUID'sini çıkarır, ancak yalnızca takıldığında.

Yanıtlar:


9

UUID'lere udev tarafından doğrudan erişilemese de, en azından Fedora ve Ubuntu'da ortam değişkenleri olarak ayarlanır ( ENV ). Bir cihazın tüm ortam değişkenlerini arayarak okuyabilirsiniz. udevadm info /dev/sdc. Örneğin. harici bir sürücüdeki bir NTFS için şunu alıyorum:

$ udevadm info /dev/sdc2
P: /devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/host7/target7:0:0/7:0:0:0/block/sdc/sdc2
N: sdc2
[…]
E: ID_FS_TYPE=ntfs
E: ID_FS_USAGE=filesystem
E: ID_FS_UUID=4A6F2ABC1232FA37
[…]

Bir şey ile her şey E: önünde çevre değişkeni olarak ayarlanmış.

UUID'lere karşı eşleştirme

İle eşleşebilirsin ENV{ID_FS_UUID}=="4A6F2ABC1232FA37". İlk filtre olarak eşleşiyorum KERNEL=="sd?2" sadece doğru bölüm numarasına sahip blok cihazları kullandığımdan emin olmak için. Kuralın tamamı şöyle görünür:

KERNEL=="sd?2", ENV{ID_FS_UUID}=="4A6F2ABC1232FA37", RUN+="/usr/bin/logger --tag my-manual-usb-mount Mounting the device with UUID 4A6F2ABC1232FA37", RUN+="/usr/bin/mount [Your mount options here]"

Logger komutu, kuralın gerçekte çalıştırıldığını iddia etmek için kullanışlıdır. Daha sonra, kuralın herhangi bir sözdizimi hatası içermediğini kontrol etmelisiniz. udevadm test /dev/sdc2. Kural dosyanız çıktıda listelenmeli ve yanında hata mesajı görünmemelidir. Artık, kuralınızın planlandığı gibi çalışıp çalışmadığını kontrol etmek için cihazınız için tüm kuralları tetikleyebilirsiniz: sudo udevadm trigger /dev/sdc2. Kuralınız eşleşirse, sistem günlüğünde özel günlük iletisini bulacaksınız ( /var/log/syslog veya via journalctl -b ).

Düzenle: ali_m çevre değişkenlerinin önceki kurallara göre ayarlandığını ve bu nedenle yalnızca .rules dosyada bir yeterince yüksek sözlük bilgisi . "60" ile başlamak yeterli olmalı. Şahsen kuralları bir bakışta önceden tanımlanmış kurallardan ayırmak için (eğer mümkünse) "zz" ile başladım.

UUID’lerin RUN emir ve başka bir yerde

Udev oldukça güçlü bir değişkene ve özelliğe sahip ikame sözdizimi . Özellikle her oluşumunda $env{ID_FS_UUID} sürücünün UUID'si ile değiştirilecektir. Yani bir cihazı altına monte etmek /media/UUID bu kuralı kullanabilirsiniz:

KERNEL=="sd??", RUN+="/usr/bin/mkdir /media/$env{ID_FS_UUID}", RUN+="/usr/bin/mount $devpath /media/$env{ID_FS_UUID}"

Muhtemelen udisks'i yapılandırmak istersiniz, bununla birlikte, çözmek istediğiniz sorunlu alan için uzmanlaşmıştır. Görmek https://wiki.archlinux.org/index.php/udisks#udisks2:_mount_to_.2Fmedia bir başlangıç ​​noktası olarak.

Asıl kullanım durumum yerine udev'li cihazları monte etmek için /etc/fstab veya udisks, bazı olağandışı ifadelere sahip olan zfs dosya sistemlerini kullanmak, bunları olağan araçlara tam olarak sığdırmamaktır.


1
Bunu çözmem biraz zaman aldı: Çevre değişkenleriyle eşleşmek için kuralınız uygulanmalı sonra bu değişkenler ayarlandı. Bunu başarmak için, sizin .rules dosya adının bir sayı ile başlaması gerekiyor & gt; 60 .
ali_m

@ ali_m: Teşekkürler, bilgilerinizi cevaba ekledim.
Perseids

0

Aklımda zor bir çözüm var. UUID ile tanımlanan ilgili fstab girişini ayarlayın. Ve udev kurallarında, yürütmek mount -a her zaman yeni bir sd * cihazı eklendi.

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.