Управление на устройства с udev - Интересни статии - Каталог със статии - OOO - Отдел
Статистика

В Linux работата по свързване и премахване на устройства се извършва от системното ядро. Промените в състоянието на устройствата (свързване на ново или изтриване на съществуващо) трябва да са видими в потребителското пространство. Когато се свържат нови устройства, те трябва да бъдат правилно конфигурирани веднага и (ако е необходимо) разпознати от потребителските приложения. Ако потребителят на системата работи с конкретно устройство, той трябва да бъде информиран за всяка промяна в състоянието на това устройство.
Файловете на устройството в директорията /dev осигуряват достъп до подходящите устройства. Благодарение на udev, само файлове на устройства, които в момента са свързани към системата, са в тази директория. Всяко устройство има свой собствен съответен файл. Ако устройството бъде изключено от системата, този файл се изтрива.
Съдържанието на директорията /dev се съхранява във виртуалната файлова система и всички файлове в нея се създават при всяко стартиране на системата. Модифицираните или ръчно създадени файлове не се записват след рестартиране. Файловете и директориите, които трябва да се съхраняват или трябва винаги да присъстват в директорията /dev, независимо от състоянието на съответното устройство, трябва да бъдат поставени в директорията /lib/udev/devices. Когато системата се стартира, съдържанието на тази директория се копира в /dev както е (със същите разрешения).
Цялата информация, необходима за работа с устройства, се експортира от ядрото като виртуална файлова система sysfs. В него за всяко от устройствата, които ядрото е засекло и инициализирало, се създава отделна директория, която съдържа файлове, описващи определени параметри на устройството.
Всеки път, когато устройство е свързано или изключено, ядрото изпраща събитие uevent, което информира udev за промяната. Демонът udev чете правилата за своята работа от директорията /etc/udev/rules.d/ веднъж, когато се стартира, и след това ги съхранява в паметта. Ако правилата се променят, добавят или модифицират, има възможност да принудите udev да препрочита всички правила с командатаudevadm control --reload-rules. В SUSE това може да се направи и с командата/etc/init.d/boot.udev reload. За повече информация относно правилата на udev и техния синтаксис вижте раздел 6 по-долу.
Всяко получено събитие се сравнява с набора от заредени правила. С правила можете да добавяте опции, специфични за околната среда, да създавате символни връзки към създавания файл на устройството или да указвате програмата, която да се изпълнява, след като файлът на устройството бъде създаден. Събитията на ядрото от драйверите на устройства се изпращат чрез гнездото на ядрото на netlink.
За всяко открито устройство, ядрото създава специална вътрешна структура, докато драйверът изпраща събитие uevent към демона udev. Устройствата се идентифицират със специален идентификатор . Обикновено тези идентификатори съдържат уникални кодове за производителя на устройството, самото устройство и други специфични за подсистемата параметри . Такъв идентификатор се нарича MODALIAS. Ядрото събира информация за устройството, генерира MODALIAS идентификатор за него и го изпраща заедно със събитието uevent. За USB мишка, например, изглежда така: