Системные изменения для тех, кто собирает ядро руками

Grifon аватар

Здравствуйте, друзья!
Сегодня я хочу написать для тех, кто не гнушается собрать ядро руками на своём рабочей инсталляции Linux. Как вы знаете, открытые системы не стоят в развитии и постоянно изменяются и пополняются новыми особенностями, при этом старые и ненужные вещи часто выкидываются. Это так же касается и основы дистрибутива - таких разработок, как само ядро и менеджер управления устройствами (udev).

Тут небольшой перевод. Примечания курсивом мои.

Конфигурация


В последних версиях udev произошло множество изменений в плане обеспечения подключений устройств. Сейчас для работы udev требуется:
  • ядро 2.6.27 и выше;
    • CONFIG_HOTPLUG=y

    • CONFIG_UEVENT_HELPER_PATH=""

    • CONFIG_NET=y

    • CONFIG_UNIX=y

    • CONFIG_SYSFS=y

    • CONFIG_SYSFS_DEPRECATED*=n

    • CONFIG_PROC_FS=y

    • CONFIG_TMPFS=y

    • CONFIG_INOTIFY_USER=y

    • CONFIG_SIGNALFD=y

    • CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes)

    • CONFIG_BLK_DEV_BSG=y (SCSI devices)

  • Udev не будет работать с CONFIG_SYSFS_DEPRECATED*

  • Сокеты Юникс (CONFIG_UNIX) скомпилированные как модуль ядра могут работать, но не поддерживаются

  • устаревший менеджер подключаемых устройств /sbin/hotplug должен быть исключён из конфигурации ядра, он больше не нужен, и может привести систему в нестабильное состояние, потому что ядро может запустить множество параллельных процессов, это приведёт к переполнению памяти.Те пользователи, которые ведут конфигурацию ядра годами, могут это пропустить

  • Файловая система proc должна монтироваться в /proc, sysfs - в /sys. Никакие другие точки монтирования не поддерживаются в стандартных установках

  • На момент запуска udev система должна различать следующие имена : disk, cdrom, floppy, tape, audio, video, lp, tty, dialout, kmem. Особенно там, где группы берутся так же из LDAP, требуется, чтобы getgrnam() мог различить эти группы тогда, когда только rootfs смонтирована, и ещё нет доступных сетевых подключений.

  • Для включения всех 'udev extras' нужны следующие библиотеки: libacl, libglib2, libusb, usbutils, pciutils, gperf. Зависимости от них могут быть отключены с помощью параметра --disable-extras.

  • Установка


    • Во время загрузки devtmpfs должен монтироваться в /udev. Это выполняется в помощью скриптов init, и не требует вмешательства пользователя. Вам это может понадобиться только тогда, когда что-нибудь сломается. Udev будет сама управлять правами и владением создаваемых устройств, и, возможно, добавлять дополнительные сылки. При необходимости, udev так же работает на пустой фс 'tmpfs', но тогда некоторые обязательные файлы устройств: /dev/null, /dev/console, /dev/kmsg - необходимы для запуска самого udev.

    • Содержимое каталога /lib/udev/devices, которое содержит постоянное наполнение типа символических ссылок и каталогов, постоянно находящихся в/dev, должно копироваться в подмонтированный каталог /dev. От пользователя в данном случае опять не требуется этого делать, по скольку это забота разработчика дистрибутива

    • Новые/изменённые правила в файлах настройки принимаются автоматически, что не требует перезапуска демона или посыл ему сигнала. Правила не действуют на уже созданные устройства

Ссылки:
http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;hb=HEAD;f=README