Jak używać UDEV do wykrywania i zarządzania urządzeniami w Linux

Jak używać UDEV do wykrywania i zarządzania urządzeniami w Linux

Udev (przestrzeń użytkownika /Dev) to podsystem Linux do dynamicznego wykrywania i zarządzania urządzeniami, ponieważ wersja jądra 2.6. To wymiana Devfs I Hotplug.

Dynamicznie tworzy lub usuwa węzły urządzenia (interfejs do sterownika urządzenia, który pojawia się w systemie plików, tak jakby był zwykłym plikiem, przechowywanym pod /Dev katalog) w czasie rozruchu lub jeśli dodasz urządzenie do lub usuniesz urządzenie z systemu. Następnie propaguje informacje o urządzeniu lub zmienia się w jego stanie na przestrzeń użytkownika.

Jego funkcją jest 1) dostarczenie aplikacji systemowych z zdarzeniami urządzeń, 2) Zarządzaj uprawnieniami węzłów urządzeń i 3) może tworzyć przydatne symlinki w /Dev katalog w celu uzyskania dostępu do urządzeń, a nawet zmieniają nazwy interfejsów sieciowych.

Jeden z zalet Udev jest to, że może używać trwałych nazw urządzeń, aby zagwarantować spójne nazywanie urządzeń w ramach ponownego uruchamiania, pomimo ich kolejności odkrycia. Ta funkcja jest przydatna, ponieważ jądro po prostu przypisuje nieprzewidywalne nazwy urządzeń na podstawie kolejności odkrycia.

W tym artykule dowiemy się, jak korzystać Udev do wykrywania i zarządzania urządzeniami w systemach Linux. Zauważ, że większość, jeśli nie wszystkie nowoczesne dystrybucje Linux z głównym nurtem Udev W ramach domyślnej instalacji.

Naucz się podstaw UDEV w Linux

Udev Demon, Systemd -devd (Lub Systemd -devd.praca) komunikuje się z jądrem i odbiera urządzenie Uevents bezpośrednio od niego za każdym razem, gdy dodajesz lub usuwasz urządzenie z systemu lub urządzenie zmienia jego stan.

Udev opiera się na zasadach - jego zasady są elastyczne i bardzo potężne. Każde odebrane zdarzenie urządzenia jest dopasowane do zestawu reguł odczytanych z plików znajdujących się w /lib/udev/reguły.D I /run/udev/reguły.D.

Możesz pisać niestandardowe pliki reguł w /etc/udev/reguły.D/ katalog (pliki powinny zakończyć się .zasady rozszerzenie) w celu przetworzenia urządzenia. Zauważ, że pliki reguł w tym katalogu mają najwyższy priorytet.

Aby utworzyć plik węzła urządzenia, Udev musi zidentyfikować urządzenie za pomocą niektórych atrybutów, takich jak etykieta, numer seryjny, jego główny i niewielki numer używany, numer urządzenia magistrali i wiele więcej. Informacje te są eksportowane przez Sysfs system plików.

Za każdym razem, gdy podłączysz urządzenie do systemu, jądro wykrywa i inicjuje, a katalog o nazwie urządzenia jest tworzony pod /sys/ katalog, który przechowuje atrybuty urządzenia.

Głównym plik konfiguracyjnym dla UDEV jest /etc/udev/udev.conf, i aby kontrolować zachowanie środowiska wykonawczego Demon UDEV, możesz użyć Udevadm pożytek.

Aby wyświetlić otrzymane jądro wydarzenia (Uevents) I Wydarzenia Udev (który UDEV wysyła po przetwarzaniu reguły), uruchom Udevadm z poleceniem Monitor. Następnie podłącz urządzenie do systemu i obserwuj, z terminalu, w jaki sposób zdarzenie urządzenia jest obsługiwane.

Poniższy zrzut ekranu pokazuje fragment DODAĆ zdarzenie po podłączeniu dysku flash USB z systemem testowym:

$ Udevadm Monitor 
Monitoruj zdarzenia urządzenia w Linux

Aby znaleźć nazwę przypisaną do dysku USB, użyj narzędzia LSBLK, które odczytuje Sysfs system plików i Udev db Aby zebrać informacje o przetworzonych urządzeniach.

 $ lsblk 
Wypisz urządzenia blokowe w Linux

Ze wyjścia poprzedniego polecenia dysk USB jest nazwany SDB1 (Absolutna ścieżka powinna być /dev/sdb1). Aby zapytać atrybuty urządzenia z bazy danych UDEV, użyj Polecenie Info.

$ UDEVADM Info /Dev /SDB1 
Zapytanie atrybuty UDEV DB w Linux

Jak pracować z zasadami UDEV w Linux

W tej sekcji krótko omówimy, jak napisać Udev zasady. Reguła obejmuje oddzieloną przecinki listę jednej lub więcej par kluczowych. Reguły pozwalają na zmianę nazwy węzła urządzenia z nazwy domyślnej, modyfikuj uprawnienia i własność węzła urządzenia, uruchomienie programu lub skryptu, gdy węzeł urządzenia jest tworzony lub usuwany, między innymi.

Napiszemy prostą regułę, aby uruchomić skrypt po dodaniu urządzenia USB i po usunięciu z systemu działającego.

Zacznijmy od utworzenia dwóch skryptów:

$ sudo vim /bin /device_added.cii 

Dodaj następujące wiersze w device_added.cii scenariusz.

#!/bin/bash echo „Urządzenie USB dodane o $ (data)” >>/TMP/Scripts.dziennik 

Otwórz drugi skrypt.

$ sudo vim /bin /device_reMoved.cii 

Następnie dodaj następujące wiersze do Device_Removed.cii scenariusz.

#!/bin/bash echo „Urządzenie USB usunięte z $ (data)” >>/TMP/Scripts.dziennik 

Zapisz pliki, zamknij i uczyń oba skrypty wykonywalne.

$ sudo chmod +x /bin /device_added.sh $ sudo chmod +x /bin /device_reMoved.cii 

Następnie utwórzmy regułę, aby wywołać wykonywanie powyższych skryptów, nazywanych /etc/udev/reguły.D/80 TEST.zasady.

$ vim/etc/udev/reguły.D/80 TEST.zasady 

Dodaj w nim te dwie następujące zasady.

Podsystem == „USB”, Action == "Add", env devType == "usb_device", run+= "/bin/device_addeded.sh „subsystem ==„ USB ”, Action ==„ Usuń ”, env devType ==„ USB_Device ”, run+=”/bin/device_reMoved.cii" 

Gdzie:

  • "==": jest operatorem do porównania dla równości.
  • "+=": jest operatorem, który dodał wartość do klucza, który zawiera listę wpisów.
  • Podsystem: pasuje do podsystemu urządzenia zdarzenia.
  • DZIAŁANIE: pasuje do nazwy akcji wydarzenia.
  • Env devType: pasuje do wartości właściwości urządzenia, typ urządzenia w tym przypadku.
  • URUCHOMIĆ: Określa program lub skrypt do wykonania w ramach obsługi wydarzeń.

Zapisz plik i zamknij go. Następnie jako root, powiedz Systemd -devd W celu ponownego załadowania plików reguł (to również ponownie załaduje inne bazy danych, takie jak indeks modułu jądra), uruchamiając.

$ sudo Udevadm Control -RELOAD 

Teraz podłącz napęd USB do swojego komputera i sprawdź, czy device_added.cii Skrypt został wykonany. Przede wszystkim plik Skrypty.dziennik powinien być utworzony pod /TMP.

$ ls -l /tmp /scenariusze.dziennik 
Sprawdź dziennik skryptów po dodaniu USB

Wtedy plik powinien mieć wpis, taki jak „Urządzenie USB usunięte w date_time”, Jak pokazano na zrzucie ekranu.

$ cat /tmp /scenariusze.dziennik 
Sprawdź dziennik skryptów po usunięciu USB

Aby uzyskać więcej informacji na temat pisania reguł UDEV i zarządzania UDEV, skonsultuj się Udev I Udevadm odpowiednio ręczne wpisy, uruchamiając:

$ man udev $ man udevadm 
Streszczenie

Udev jest niezwykłym menedżerem urządzeń, który zapewnia dynamiczny sposób konfigurowania węzłów urządzeń w /Dev informator. Zapewnia, że ​​urządzenia są skonfigurowane, gdy tylko zostaną podłączone i odkryte. Propaguje informacje o przetworzonym urządzeniu lub zmianach w jego stanie, do miejsca użytkownika.

Jeśli masz jakieś pytania lub przemyślenia na ten temat, skorzystaj z formularza opinii.