udev a kamarádi... Středisko UN*Xových technologií
udev a kamarádi úvod Zařízení v Linuxu typicky adresář /dev tři typy zařízení znakové blokové síťové nejsou přítomny tvoří vazbu mezi userspace (programy) a kernelspace (jádro) unifikují přístup k HW (vše je soubor) rozlišení pomocí major/minor čísla kernel-source/documentation/devices.txt
udev a kamarádi úvod příklady zařízení blokové hdx, sdx znakové lpx, stx síťové ethx stačí se podívat do /dev, je jich tam jistě spousta ;)
udev a kamarádi úvod prvotní model statický /dev každé zařízení má svůj dev node nutno vytvořit mknod nutno znát minor a major číslo ovladače /dev/ obsahoval nody pro všechna možná zařízení nešlo jednoduše poznat, zda zařízení je či není připojeno
udev a kamarádi úvod devfs dnes již obsolete nody vytváří jádro při zavedení ovladače rovnež schopnost načíst modul při otevření nodu zařízení kompletně kernel space řešení názvy zařízení určovalo jádro dány napevno neumožňuje persistent pojmenovávání
udev a kamarádi úvod udev spolupráce jádra a userspace utilit jádro generuje hotplug události na ty reaguje hotplug démon, popř. udev udev vytváří nody na základě informace z jádra ale samo běží v userspace souborový systém sysfs v /sys poskytuje nezbytné info reakce jak na zapojení a tak i odpojení zařízení zatím ne všechny třídy zařízení mají podporu pro hotplug
udev a kamarádi udev udev konfigurace v /etc/udev hlavní úkol vytvářet nody pro nová zařízení, možnost volání dalšího skriptu konfigurační soubory v /etc/udev/rules.d jeden řádek = jedna volba vždy se jedna o pár klíč, akce vykonává se pouze jediná akce - při nalezení pravidla pro dané zařízení, ale pozor to neznamená že pro jedno zařízení nemůže vzniknout více akcí
udev a kamarádi udev typy identifikačních klíčů BUS podle sběrnice KERNEL podle jména z jádra DRIVER podle jména ovladače v jádře PLACE podle fyzického umístění SUBSYTEM např. audio, usb_devices, block SYSFS podle údajů z /sys stromu možnost používat zástupné znaky *,? předdefinované konstanty - %k, %n
udev a kamarádi udev typy akci NAME vytvoří dev node SYMLINK vytvoří symlink na dev node OWNER nastaví vlastníka GROUP nastaví skupinu PROGRAM spustí skript, akce se provede pouze při nulové návratové hodnotě MODE nastaví práva skript má k dispozici mj. proměnnou $ACTION určující zda jde o add nebo remove příklad: originální udev pravidla...
udev a kamarádi udev pokud potřebujeme vytvořit i nody pro všechny diskové oblasti, potom NAME přebírá parametr all_partitions příklad: BUS== USB, SYSFS{product}== USB 2.0 Storage Device, NAME{all_partitions}= usbhd vytvoří usbhd, usbhd1, usbhd2 atd...
udev a kamarádi udev jak získat klíče identifikující zařizení? najít v /sys pomoci udevmonitor a udevinfo použití udevinfo buď na konkretní dev node udevinfo -q path -n /dev/neco na podstrom v /sys udevinfo -a -p /sys/cesta/k/zarizeni
udev a kamarádi udev ukázkový skript na digi foťák
udev a kamarádi hotplug udev se stará pouze o dev nody, někdy je potřeba víc to zařizuje hotplug typická procedura při hotplugu: najít správný ovladač pro zařízení konfigurace zařízení (např. upload firmware) vykonání specifických operací pro dané zařízení (nastavení IP, přimountnutí disku) spuštění aplikace (prohlížeč fotek, Krusader...) coldplug totéž jako hotplug, ale při startu systému
udev a kamarádi hotplug implementace spuštěni uživatelských akcí na základě naslouchání DBUS událostem to tady dělat nebudeme ;) takže jenom ukázka skriptu na kopírovaní fotografii adresář /etc/hotplug každá třída zařízení má svého agenta mj. se stará o natažení příslušného ovladače, pomocí tzv. distmap a handmap tabulek nejprve se vola hotplug, až pote udev může přinést komplikace
udev a kamarádi hotplug ukázkový skript na digi foťák
udev a kamarádi netplug netplug démon, který visí na síťovém rozhraní a sleduje, zda nedošlo ke změně všímá si přítomnosti/nepřítomnosti signálu při změně spustí skript typická akce při nahozeni signálu zrestartovat siťove služby viz. /etc/netplugd
udev a kamarádi co delat kdyz... co dělat, když přijdu k úplně cizímu počítači a potřebuji něco s HW? Linux na tom zase není až tak špatně, jen je to poněkud skryto příklad pár utilit které mohou pomoci při řešeni různých situací
udev a kamarádi co delat kdyz... lspci -v vypíše zařízení detekovaná na PCI sběrnici, výrobce, typ, pozici... lsusb -v to samé, ale pro USB rovněž zajimavé jsou některé soubory v /proc /proc/partitions seznam diskových oblasti /proc/cpuinfo informace o procesoru /proc/interrupts co visí na kterém přerušení
udev a kamarádi co delat kdyz... modprobe, rmmod vkládáni, vyjímání modulů z jádra, nebudu popisovat lsmod vypíše moduly zavedené v jádře modinfo vypíše informace o modulu, mj. seznam parametru pro daný konkrétní modul popis se musí najít v dokumentaci k jádru, ale pro představu stačí
udev a kamarádi co delat kdyz... hdparm umožňuje nastavovat parametry diskům smartctl povolit, zakázat DMA přepnout disk do úsporného režimu nastavit rychlost čtení u DVD/CD mechanik accoustic management pro práci se S.M.A.R.T. subsystémem pevných disku informace o zdravotním stavu disku spouštění diagnostických testů nastaveni hesel pro přístup k disku (raději jsem ještě nikdy nezkoušel)
udev a kamarádi co delat kdyz... ethtool informace o schopnostech a stavu síťové karty přítomnost signálu, přenosová rychlost, duplex, wakeon schopnosti, síla signálu athcool umí zapnout režim, ve kterém se CPU odpojuje od FSB, pokud nemá nic na práci velice výrazný efekt poklesu teploty a spotřeby lm_sensors nástroj pro monitoring teploty, napětí a otáček memtest diagnostika RAM
udev a kamarádi shrnuti udev user space, vlastní pojmenovávání zařizení, nastavení prav, skupiny hotplug to ostatní - nataženi fw, informování dalších aplikaci o událostech coldplug jako hotplug ale spouští se při startu systému netplug reaguje na změnu přítomnosti signálu na síťové kartě a pár dalších utilit aby bylo vidět, že to s HW na Linuxu není tak spatné... ;)
udev a kamarádi shrnuti Dotazy???