Още веднъж за udev - Нашият блог сайт за Linux и "текстове"
Автор: Алексей Федорчук
Преди няколко години, почти веднага след въвеждането на механизма udev в Linux, написах кратка бележка за първото разборване с него. Днес, във връзка с новообразуваните обстоятелства, е време да се обърнем отново към тази тема, разширяваща се и дори, както би казал един от нашите президенти, въглищавудряйки я.
Преди да започна тази бележка, ще направя резервация, че тя включва целия материал на предишната бележка - този, който е запазил своята актуалност. Така че няма нужда да се позоваваме на последното, освен в исторически аспект.
Udev е механизъм за поддържане на персонализирано динамично именуване на устройства в Linux, заместващ виртуалната файлова система devfs; FreeBSD възлага тази функция на последната. Първият и основен разработчик на udev е Грег Кроах-Хартман.
За разлика от devfs, udev не е поддържана от ядрото файлова система, а нормална потребителска програма. За да функционира, udev се нуждае от виртуална файлова система - sysfs. Въз основа на информацията от него, udev присвоява имена на различни устройства, включително при горещо включване.
Както знаете, всяка POSIX-система е повече или по-малко безразлична към имената на конкретни устройства, тъй като работи не с тях, а с техните идентификатори. По-рано, преди въвеждането на devfs и по-късно udev), това бяха така наречените номера на устройствата - основният номер на устройството, който определя неговия клас (например ide-дискове) и неговият малък номер, указващ конкретен екземпляр от този клас Представител. В днешно време се използват директни идентификатори на устройства - серийният номер на твърдия диск, неговото положение на SATA конектора или канала на PATA шината и т.н. Тяхната комбинация за всеки диск (дял и т.н.) се оказва уникална. И така, udev извлича тази информация от файловата система sysfs и следвайки определени правила,
присвоява ги на "човешки" имена (като същите/dev/sda и т.н.).
Процесът на активиране на поддръжката на udev е много прост и се свежда до инсталирането на пакета udev - във всички съвременни дистрибуции на Linux той е включен в основната система, така че не е необходимо да го инсталирате специално.
След това трябва да се погрижите за стартиране на демона udevd при стартиране на системата. Един от специфичните за разпространението скриптове на init е отговорен за това. Например в Ubuntu това би бил файлът /etc/init.d/udev. Въпреки това, във всеки съвременен комплект за разпространение това също се случва по подразбиране, така че не е необходимо да редактирате нищо на ръка.
Включването на флаш устройство в USB конектор незабавно води до устройство с име/dev/sdb в списъка, което не се променя, независимо колко пъти се повтаря тази процедура.
С други думи, директорията/dev придобива вид, познат от дните на статично именуване на устройства. Единствената разлика е, че сега тя не е пълна с файлове за бъдещо използване на възможни, но не и съществуващи устройства.
Специален файл е отговорен за конфигурирането на механизма udev -
/etc/udev/udev.conf, дефиниране на глобални параметри, коренна директория за файлове на устройства (по подразбиране -/dev), файл с база данни на устройства, файлове, описващи правила за именуване на устройства и права за достъп до тях, както и правила за създаване на символни връзки (като/dev/cdrom). Точните имена на тези файлове и тяхното местоположение зависят от разпространението. Обикновено това са файлове като /etc/udev/rules.d/udev.rules и
/etc/udev/permissions.d/udev.permissions.
Ръчна намеса в конфигурационни файлове рядко се изисква, но понякога и такава
възниква необходимостта. И така, в зората на въвеждането на механизма udev срещнах (в