Kapitola 12. Dynamické uzly zařízení pomocí udev

Obsah

12.1. Tvorba pravidel
12.2. Automatizace pomocí NAME a SYMLINK
12.3. Regulární výrazy v klíčích
12.4. Výběr klíčů
12.5. Konzistentní pojmenování zařízení pro hromadné uchováváni dat

Abstrakt

Linuxové jádro 2.6 přineslo nové řešení v uživatelském prostoru umožňující používat v dynamickém adresáři /dev pro zařízení stálá a konzistentní označení: udev. Předchozí implementace /dev pomocí devfs již není podporována a byla nahrazena implementací založenou na udev.

Tradičně byly v linuxových systémech v adresáři /dev umístěny uzly (device nodes) pro všechny možné typy zařízení, bez ohledu na jejich skutečnou existenci. Adresář proto zabíral velké množství místa. Příkaz devfs přinesl významné zlepšení, neboť díky němu mají v adresáři /dev své uzly pouze ta zařízení, která skutečně existují.

Nový způsob vytváření uzlů přinesl příkaz udev. Ten porovná informace dostupné ze systému souborů sysfs s daty zadanými uživatelem ve formě pravidel. sysfs je nový souborový systém dostupný v jádře 2.6. Poskytuje základní informace o zařízeních připojených k systému. Souborový systém sysfs je připojený jako /sys.

Pravidla není nutno vytvářet. Pokud je k systému připojeno zařízení, je vytvořen příslušný uzel, Pravidla ovšem umožňují změnit jména uzlů. Lze tak nahradit nesrozumitelná jména jmény snadno zapamatovatelnými a dosáhnout konzistentních jmen zařízení, když je připojeno více zařízení stejného typu.

Dvě připojené tiskárny budou například, není-li určeno jinak, označeny jako /dev/lp0 a /dev/lp1. Které tiskárně bude přiřazen který uzel závisí na pořadí, v jakém jsou zapnuty. Jiným příkladem jsou externí zařízení pro ukládání dat, jako USB disky. Příkaz udev umožňuje přesně zvolit cesty vkládané do /etc/fstab.


12.1. Tvorba pravidel

Pravidla načítá udev ze souboru /etc/udev/udev.rules ještě předtím, než vytvoří uzly v adresáři /dev. Pokud odpovídá více pravidel, použije první z nich. Komentáře jsou v souboru uvozeny znakem hash (#). Pravidla jsou zapisována v následujícím formátu:

klíč, [klíč,...] NAME [, SYMLINK]

Každé pravidlo musí obsahovat alespoň jeden klíč, neboť pravidla jsou zařízením přiřazována právě pomocí těchto klíčů. Rovněž je nezbytné určit jméno (parametr name). To je totiž přiřazeno uzlu zařízení vytvořenému v adresáři /dev. Volitelný parametr symlink umožňuje vytvoření uzlů i na dalších místech. Pravidlo pro tiskárnu může vypadat například takto:


BUS="usb", SYSFS{serial}="12345", NAME="lp_hp", SYMLINK="printers/hp"

V příkladu jsou použity dva klíče — BUS a SYSFS{serial}. Tyto klíče říkají udev, aby porovnal sériové číslo obsažené v klíči se sériovým číslem zařízení připojeného na USB sběrnici. Pokud oba klíče souhlasí, přiřadí zařízení jméno lp_hp v adresáři /dev. Navíc na něj vytvoří symbolický odkaz /dev/printers/hp. Adresář printers se vytvoří automaticky. Tiskové úlohy bude možno posílat jak na /dev/printers/hp, tak i na /dev/lp_hp.