Когда пользователи Linux разговаривают о начинке своих систем среди людей,
полагающих, что Linux — это какой-то вид вируса или марка кофе, пользуясь
оборотами вроде «слэш дев слэш что—нибудь» (/dev/foo), на них
наверняка смотрят косо. Но для счастливчиков (естественно, включая вас),
Все мы знаем, что такое файл устройства. Некоторые даже знают, почему рядом с
ними видны специальные числа, если посмотреть на результат
Представим себе устройства «горячей замены» вроде USB, IEEE1394, заменямой PCI и т.д. Какое из них является первым по счету? Надолго ли? Как изменятся названия других устройств, если первое отключить? Как это повлияет на текущие операции? Было бы забавно, если бы задание печати вдруг переключалось с вашего супернавороченного лазерного принтера на старый полудохлый матричный из-за того, что ваша мама решила выдернуть разъем лазерного принтера, а тот оказался первым в списке, не так ли?
Перейдем к
Разработка udev состоит из трех отдельных проектов:
Namedev позволяет отделить именование устройств от программы udev. Это дает возможность гибкого использования правил и схем именования, разработанныых отдельно. Подсистема именования предоставляет стандартный интерфейс, который может использоваться udev.
Сейчас, через namedev представлена только одна схема именования, предоставляемая LANANA. Она используется на большинстве Linux—систем, и поэтому хорошо подходит основной массе пользователей Linux.
В namedev для определения имени конкретного устройства используется последовательность из пяти шагов. Если на одном из шагов имя установлено, оно и используется. Вот эти шаги:
Подобным образом,
Четвёртый шаг,
Последний шаг (
udev взаимодействует с ядром через псевдофайловую систему sysfs. Проект libsysfs предлагает обобщенный интерфейс программирования для доступа к сведениям, предоставляемым файловой системой sysfs. Это даёт возможность опроса разнородных устройств без необходимости знания их типа.
Каждый раз, когда ядро обнаруживает обновление структуры устройств, оно
вызывает программу
Файловая система udev должна использоваться вместе с ядром версии 2.6
(пакеты
# emerge udev
udev установит пакет
# emerge hotplug
Если хотите, чтобы загружались модули для устройств, подключаемых до загрузки, используйте пакет coldplug:
# emerge coldplug
И не забудьте добавить
# rc-update add coldplug boot
Что же касается ядра, не забудьте выбрать следующие параметры:
General setup ---> [*] Support for hot-pluggable devices File systems ---> Pseudo filesystems ---> [*] /proc file system support [*] Virtual memory file system support (former shm fs)
По вашему усмотрению, можете оставить поддержку файловой системы
File systems ---> Pseudo Filesystems ---> [*] /dev file system support (OBSOLETE) [ ] Automatically mount at boot
Если вы используете
Если вы хотите использовать улучшения udev, добавленные Gentoo для более
удобного использования, не читайте дальше. Gentoo будет использовать udev,
сохраняя неизменной структуру
Но если вы «крепкий орешек» и хотите запустить любыми средствами систему только с udev и без улучшений, к чему и стремится разработка udev (включая сложности в отсутствии узлов устройств, потому, что udev их ещё не поддерживает), тогда читайте дальше :)
Мы деактивируем правила, которые сохраняют специальные файлы устройств:
отредактируйте переменную
RC_DEVICE_TARBALL="no"
Если вы включили поддержку devfs в вашем ядре, вы можете деактивировать её в
конфигурации загрузчика: добавьте
Если ваша машина не может успешно загрузится и выдаётся ошибка о том, что путь
Если вы используете
Выполните следующие команды для того, чтобы увидеть, какие специальные файлы
присутствуют до обработки udev в
# mkdir test # mount --bind / test # cd test/dev # ls
Устройства
# mknod -m 660 console c 5 1 # mknod -m 660 null c 1 3
Когда закончите, не забудьте отмонтировать каталог
# cd ../.. # umount test # rmdir test
Если вы используете коммерческий драйвер от nVidia и сервер X не запускается только на файловой системе udev, убедитесь что у вас:
Если вы используете вместе
Чтобы это исправить, отредактируйте файл
KERNEL="dm-[0-9]*", PROGRAM="/sbin/devmap_name %M %m", NAME="%k", SYMLINK="%c"
Далее, установите пакет
(На момент написания, пакет multipath-tools был доступен только в тестовой ветке дерева Portage) # echo "=sys-fs/multipath-tools-0.4.2 ~x86" >> /etc/portage/package.keywords # emerge multipath-tools
Даже если наша цель—иметь совместимую схему именований между этими динамическими системами управления устройствами, иногда случаются различия в именовании.
Сообщалось о коллизии в работе контроллера HP Smart Array 5i (более точно -
модуль ядра
Если это как раз тот случай, не забудьте обновить файл
То же самое происходит со всеми символическими ссылками, которые существуют в
директории
Если файлы устройств не создаются, когда соответствующий модуль
загружается из
Поддержка устройств кадрового буфера (
В ядрах старше, чем 2.6.4, вам следует явно включить поддержку для файловой
системы
File systems ---> Pseudo filesystems ---> [*] /dev/pts file system for Unix98 PTYs
Разговор об udev начался на симпозиуме по Linux в Оттаве в 2003 году (Linux Symposium, Ottawa, Ontario Canada - 2003) Грегом Кроа-Хартманом (Greg Kroah-Hartman) из корпорации IBM, который дал ясное понимание для применения udev.