Jak używać UDEV do wykrywania i zarządzania urządzeniami w Linux
- 3847
- 979
- Pani Janina Cieśla
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 MonitorMonitoruj 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.
$ lsblkWypisz 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 /SDB1Zapytanie 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.dziennikSprawdź 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.dziennikSprawdź 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.
- « 3 sposoby ustawienia statycznego adresu IP w RHEL 8
- Linuxbrew - menedżer pakietu Homebrew dla Linux »