Chcę zamontować dysk USB na /media
podstawie identyfikatora UUID dysku. Jak mogę użyć UUID dysku USB w pliku reguł udev i co to jest reguła udev, aby zamontować dysk USB z numerem UUID jako nazwą folderu.
blkid
Komenda wysyła UUID dysku ale dopiero po montażu.
Odpowiedzi:
Mimo że UUID nie są bezpośrednio dostępne dla udev, przynajmniej w Fedorze i Ubuntu są one ustawione jako zmienne środowiskowe (
ENV
). Możesz odczytać wszystkie zmienne środowiskowe urządzenia, dzwoniącudevadm info /dev/sdc
. Np. Dla NTFS na dysku zewnętrznym otrzymuję:Wszystko z
E:
przodu jest ustawione jako zmienna środowiskowa.Dopasowywanie do UUID
Możesz się z nim równać
ENV{ID_FS_UUID}=="4A6F2ABC1232FA37"
. Jako pierwszy filtr, z którym się dopasowuję,KERNEL=="sd?2"
upewniam się, że obsługuję tylko urządzenia blokowe z poprawnym numerem partycji. Pełna reguła wyglądałaby następująco:Komenda logger jest przydatna do stwierdzenia, że reguła jest faktycznie uruchomiona. Następnie sprawdź, czy reguła nie zawiera żadnych błędów składniowych
udevadm test /dev/sdc2
. Plik reguł powinien zostać wymieniony w danych wyjściowych, a obok niego nie powinien pojawić się komunikat o błędzie. Teraz można wywołać wszystkie zasady urządzenie, aby sprawdzić, czy reguła działa zgodnie z planem:sudo udevadm trigger /dev/sdc2
. Jeśli reguła jest zgodna, w dzienniku systemowym (/var/log/syslog
lub za pośrednictwemjournalctl -b
) znajdziesz komunikat dziennika niestandardowego .Edycja: ali_m wskazał, że zmienne środowiskowe są ustawione na podstawie poprzednich reguł, a zatem są dostępne tylko wtedy, gdy
.rules
plik ma wystarczająco wysoką kolejność leksykograficzną . Począwszy od „60” powinno wystarczyć. Osobiście zaczynam moje reguły od „zz” (jeśli to możliwe), aby odróżnić je od reguł predefiniowanych w skrócie.Używanie UUID w
RUN
poleceniu i gdzie indziejUdev ma dość potężną składnię zmiennych i podstawiania atrybutów . W szczególności każde wystąpienie
$env{ID_FS_UUID}
zostanie zastąpione identyfikatorem UUID dysku. Aby zamontować urządzenie pod,/media/
UUID
możesz użyć tej reguły:Prawdopodobnie chcesz zamiast tego skonfigurować udiski, specjalizuje się w obszarze problemów, który chcesz rozwiązać. Zobacz https://wiki.archlinux.org/index.php/udisks#udisks2:_mount_to_.2Fmedia jako punkt początkowy.
Moim faktycznym przypadkiem użycia do montowania urządzeń z udev zamiast
/etc/fstab
lub udisks jest montowanie systemów plików zfs, które mają pewne osobliwości, co sprawia, że nie pasują one do zwykłych narzędzi.źródło
.rules
nazwa pliku musi zaczynać się od liczby> 60 .Przyszło mi do głowy szorstkie rozwiązanie. Ustaw cooreponding wpis fstab, który jest identyfikowany przez UUID. I zgodnie z regułami udev, wykonuj
mount -a
za każdym razem, gdy dodawane jest nowe urządzenie sd *.źródło