table of contents
- bookworm-backports 1:4.26.3.1-3~bpo12+1
- testing 1:4.26.3.1-3
- unstable 1:4.27.0-1
UDEV(7) | udev | UDEV(7) |
NAZWA¶
udev - dynamiczne zarządzanie urządzeniami
OPIS¶
udev udostępnia oprogramowaniu systemowemu zdarzenia urządzeń, zarządza uprawnieniami węzłów urządzeń i może tworzyć dodatkowe dowiązania symboliczne w katalogu /dev/ lub zmieniać nazwy interfejsów sieciowych. Jądro zwykle nadaje nieprzewidywalne nazwy urządzeń w kolejności ich wykrycia. Znaczące dowiązania symboliczne lub nazwy urządzeń sieciowych zapewniają stały sposób identyfikacji urządzeń na podstawie ich właściwości lub aktualnej konfiguracji.
Demon udev, systemd-udevd.service(8), otrzymuje zdarzenia urządzeń (uevent) bezpośrednio z jądra, gdy tylko z systemu dodawane lub usuwane jest urządzenie, albo zmianie ulega jego status. Gdy udev otrzyma zdarzenie urządzenia, dopasowuje swój skonfigurowany zestaw reguł do różnych atrybutów urządzenia, aby go zidentyfikować. Reguły mogą zapewniać dodatkowe informacje o urządzeniu, służące do przechowania w bazie danych udev lub do tworzenia znaczących nazw dowiązań symbolicznych.
Wszelkie przetwarzane przez udev informacje o urządzeniach są przechowywane w bazie danych udev i wysyłane do potencjalnych subskrybentów zdarzeń. Dostęp do wszelkich przechowywanych danych i źródeł zdarzeń zapewnia biblioteka libudev.
PLIKI REGUٶ
Reguły udev są odczytywane z plików położonych w systemowych katalogach reguł /lib/udev/rules.d i /local/lib/udev/rules.d, ulotnych katalogów uruchomieniowych /run/udev/rules.d oraz lokalnego katalogu administracyjnego /etc/udev/rules.d. Wszystkie pliki reguł są sortowane i przetwarzane w kolejności leksykograficznej, bez względu na katalog, z którego pochodzą. Jednak pliki o identycznych nazwach zastępują się. Pliki z /etc/ mają najwyższy priorytet, pliki w /run/ mają pierwszeństwo nad plikami o tej samej nazwie w /usr/. Można w ten sposób przesłonić dostarczane przez system pliki reguł plikiem lokalnym, jeśli będzie taka potrzeba; dowiązanie symboliczne w /etc/ o tej samej nazwie jak plik reguł w /usr/lib/, wskazujące na /dev/null, zupełnie wyłączy dany plik reguł. Pliki reguł muszą kończyć się rozszerzeniem .rules; inne rozszerzenia są ignorowane.
Każdy wiersz w pliku reguł zawiera co najmniej jedną parę klucz-wartość. Wyjątkiem są puste wiersze i wiersze zaczynające się od znaku „#”, które są ignorowane. Występują dwa typy kluczy: dopasowujące i przypisujące. Jeśli wszystkie klucze dopasowujące pasują do swych wartości, reguła jest stosowana, a klucze przypisujące przypisują dane wartości.
Reguła dopasowująca może zmienić nazwę interfejsu sieciowego, dodać dowiązanie symboliczne wskazujące na węzeł urządzenia lub uruchomić podany program, w ramach obsługi zdarzenia.
Reguła składa się z listy jednego lub więcej wyrażeń klucz-operator-wartość, rozdzielonych przecinkiem. Każde wyrażenie daje różny efekt, w zależności od użytego klucza i operatora.
Operatory¶
"=="
"!="
"="
"+="
"-="
":="
Wartości¶
Wartości są zapisywane jako łańcuchy ograniczone cudzysłowami ("łańcuch"). Aby w wartości umieścić cudzysłów (") należy go poprzedzić odwrotnym ukośnikiem (\"). Wszystkie inne wystąpienia ukośników, po których następują dowolne znaki, nie stanowią sekwencji specjalnych. Oznacza to, że "\t\n" jest traktowane jako cztery znaki: odwrotny ukośnik, małe t, odwrotny ukośnik, małe n.
Łańcuch można poprzedzić małą literą e (e"łańcuch\n"), aby oznaczyć go jako korzystający z sekwencji języka C, zob. Sekwencje specjalne w języku C[1]. Na przykład e"łańcuch\n" jest przetwarzany jako 8 znaków: 7 małych liter i znak nowego wiersza. Można w ten sposób zapisać znaki specjalne tam, gdzie wymaga ich sterownik jądra.
Proszę zauważyć, że w żadnym wariancie łańcucha, znak NUL nie jest dozwolony.
Klucze¶
Do dopasowania właściwości urządzenia można posłużyć się następującymi kluczami. Niektóre dopasują również właściwości urządzenia nadrzędnego w sysfs, a nie tylko urządzenia, które wygenerowało zdarzenie. Jeśli w pojedynczej regule poda się wiele kluczy, które dopasują urządzenie nadrzędne, wszystkie te klucze muszą dopasować jedno i to samo urządzenie nadrzędne.
ACTION
DEVPATH
KERNEL
KERNELS
NAME
SYMLINK
SUBSYSTEM
SUBSYSTEMS
DRIVER
DRIVERS
ATTR{nazwa-pliku}
Końcowe odstępy w wartościach atrybutu są ignorowane, chyba że podana wartość dopasowania sama zawiera końcowe odstępy.
ATTRS{nazwa-pliku}
Końcowe odstępy w wartościach atrybutu są ignorowane, chyba że podana wartość dopasowania sama zawiera końcowe odstępy.
SYSCTL{parametr jądra}
ENV{klucz}
CONST{klucz}
"arch"
"virt"
"cvm"
Nieznane klucze nie będą dopasowane.
TAG
TAGS
TEST{ósemkowa maska trybu}
PROGRAM
Można w ten sposób korzystać tylko z bardzo szybko wykonywanych zadań pierwszego planu. Więcej szczegółów w opisie RUN.
Proszę zauważyć, że w jednej regule można podać wiele kluczy PROGRAM, a „=”, „:=” i „+=” mają takie samo znaczenie jak „==”.
RESULT
Większość wzorców obsługuje dopasowanie wzorcami wieloznacznikowymi powłoki (glob) oraz wzorce alternatywne. Obsługiwane są następujące znaki specjalne:
"*"
"?"
"[]"
"|"
Można przypisać następujące wartości kluczy:
NAME
SYMLINK
Zestaw znaków jakie mogą posłużyć do nazwania dowiązania symbolicznego jest ograniczony. Dozwolone znaki to „0-9A-Za-z#+-.:=@_/”, prawidłowe sekwencje znaku UTF-8 oraz kodowanie szesnastkowe „\x00”. Wszystkie pozostałe znaki są zastępowane znakiem „_”.
Można utworzyć wiele dowiązań symbolicznych, rozdzielając nazwy spacją. W przypadku, gdy wiele urządzeń rości sobie prawo do tej samej nazwy, dowiązanie zawsze wskazuje na urządzeń o najwyższym link_priority. Jeśli bieżące urządzenie zniknie, dowiązania są rozwiązywane ponownie i urządzenie z następnym najwyższym link_priority staje się właścicielem dowiązania. Jeśli nie poda się link_priority, kolejność urządzeń (oraz to, które z nich pozyska dowiązanie) jest niezdefiniowana.
Nazwy dowiązań nigdy nie mogą być w konflikcie z domyślnymi nazwami węzłów urządzeń jądra, ponieważ to doprowadziłoby to nieprzewidywalnego zachowania.
OWNER, GROUP, MODE
SECLABEL{moduł}
ATTR{klucz}
SYSCTL{parametr jądra}
ENV{klucz}
TAG
RUN{typ}
typem może być:
"program"
Jest to wartość domyślna, jeśli nie poda się typu.
"builtin"
Nazwa programu i kolejne argumenty są rozdzielone spację. Aby podać argumenty zawierające spacje, należy je ująć w pojedyncze cudzysłowy.
Można w ten sposób uruchamiać tylko bardzo szybkie zadania pierwszego planu. Uruchamianie procesu zdarzeń na dłuższy czas może zablokować wszelkie kolejne zdarzenia dla danego lub zależnego od niego urządzenia.
Proszę zauważyć, że uruchamianie programów, które uzyskują dostęp do sieci lub montują/odmontowują systemy plików nie jest dozwolone wewnątrz reguł udev, z powodu domyślnej piaskowicy, która jest wymuszona na systemd-udevd.service.
Uruchamianie demonów lub innych dłużej działających procesów nie jest dozwolone; procesy rozgałęzione, niezależnie od tego czy są oddzielone, są bezwarunkowo zabijane po zakończeniu obsługi zdarzenia. Aby aktywować dłużej działające procesy z poziomu reguł udev, należy zapewnić jednostkę usługi i wciągnąć ją z urządzenia udev za pomocą właściwości urządzenia SYSTEMD_WANTS. Więcej szczegółów w podręczniku systemd.device(5).
LABEL
GOTO
IMPORT{typ}
"program"
"builtin"
"file"
"db"
"cmdline"
"parent"
Można w ten sposób korzystać tylko z bardzo szybko wykonywanych zadań pierwszego planu. Więcej szczegółów w opisie RUN.
Proszę zauważyć, że w jednej regule można podać wiele kluczy IMPORT{}, a „=”, „:=” i „+=” mają takie samo działanie jak „==”. Klucz jest prawdziwy, jeśli import powiedzie się, chyba że jako operator zastosowane jest „!=”, co spowoduje, że klucz będzie prawdziwy, jeśli import zawiedzie.
OPTIONS
link_priority=wartość
string_escape=none|replace
static_node=
watch
nowatch
db_persist
log_level=poziom
Może być to przydatne przy debugowaniu zdarzeń dla określonych urządzeń. Proszę zauważyć, że dany poziom dziennika jest stosowany w momencie, gdy przetwarzany jest wiersz zawierający tę regułę. Zatem przy debugowaniu zaleca się podanie go we wcześniejszym miejscu np. w pierwszym wierszu 00-debug.rules.
Przykład debugowania przetwarzania uevent dla interfejsów sieciowych:
# /etc/udev/rules.d/00-debug-net.rules SUBSYSTEM=="net", OPTIONS="log_level=debug"
Pola ENV, GROUP, MODE, NAME, OWNER, PROGRAM, RUN, SECLABEL i SYMLINK obsługują proste podstawianie łańcuchów. Podstawiania RUN są przeprowadzane po przetworzeniu wszystkich reguł, zaraz przed wykonaniem programu, pozwalając na korzystanie z właściwości urządzenia ustawionych przez wcześniejsze dopasowane reguły. We wszystkich innych polach, podstawiania są przeprowadzane, gdy przetwarzana jest dana pojedyncza reguła. Dostępne podstawiania to:
$kernel, %k
$number, %n
$devpath, %p
$id, %b
$driver
$attr{plik}, %s{plik}
Jeśli atrybutem jest dowiązanie symboliczne, jako wartość zwracany jest ostatni element celu dowiązania symbolicznego.
$env{klucz}, %E{klucz}
$major, %M
$minor, %m
$result, %c
$parent, %P
$name
$links
$root, %r
$sys, %S
$devnode, %N
%%
$$
ZOBACZ TAKŻE¶
UWAGI¶
- 1.
- Sekwencje specjalne języka C
TŁUMACZENIE¶
Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
systemd 254 |