Hello! В Сизиф отправлен пакет udev-105-alt1, в котором произошло несколько заметных изменений. Прежде всего, полностью изменён механизм автоматической загрузки модулей для поддержки обнаруженных устройств. Если раньше udevd вызывал для каждого устройства скрипты из пакета hotplug, которые и занимались поиском модулей с использованием утилит из libhw-tools, теперь используется новый механизм, присутствующий в ядрах 2.6.x - большинство устройств имеют атрибут modalias, значение которого описывает идентификатор устройства (PCI ID, USB ID, ...); для загрузки нужных модулей достаточно передать этот modalias программе modprobe, которая найдёт модули, имеющие алиасы, соответствующие этому идентификатору. Теперь правило udev для загрузки нужных модулей выглядит очень просто (в /etc/udev/rules.d/20-hotplug-modprobe.rules): SUBSYSTEM=="?*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}" (ещё есть проверка на ACTION=="add", которая в этом файле общая для нескольких правил). Этот механизм работает заметно быстрее старых скриптов hotplug, а также не требует изменений при появлении новых типов устройств (достаточно реализации в ядре формирования modalias и соответствующих алиасов для модулей). В связи с изменением механизма загрузки модулей меняется и способ запрета автоматической загрузки модулей. Если раньше имена мешающих модулей нужно было заносить в файл /etc/hotplug/blacklist, теперь вместо этого нужно добавлять команды "blacklist <модуль>" в конфигурацию modprobe - например, в /etc/modprobe.d/blacklist-local (лучше создать отдельный файл, чем модифицировать файлы, поставляемые вместе с пакетами). В файлах /etc/hotplug/blacklist-* уже содержится некоторое количество записей, которые в основном покрывают начальное содержимое /etc/hotplug/blacklist; если же в /etc/hotplug/blacklist вносились дополнения, его содержимое будет преобразовано в /etc/modprobe.d/blacklist-autoconverted при обновлении пакета modprobe. Совсем избавиться от пакета hotplug в этой сборке не удалось; более того, отключать сервис hotplug полностью тоже пока не стоит, однако в /etc/sysconfig/hotplug можно оставить в переменной HOTPLUGRC только cpu.rc sound.rc acpi.rc: - cpu.rc - загрузка модулей cpufreq (впрочем, этот скрипт в текущем состоянии не очень полезен - возможно, его лучше удалить и пользоваться чем-то другим); - sound.rc - действия, выполняемые при загрузке, в данном случае не особо полезны, а вот при завершении работы этот скрипт сохраняет состояние микшера, которое потом будет восстановлено при обнаружении звуковых устройств; - acpi.rc - загрузка модулей ACPI (в частности, button для получения событий о нажатии кнопок питания и спящего режима). Полное уничтожение пакета hotplug пока откладывается на некоторое время. Принимаются предложения по поводу того, в какой пакет и инитскрипт лучше засунуть вышеописанные действия. Ещё одно заметное изменение в пакете udev - добавлен сервис udevd-final, который запускается с тем же приоритетом, что и старый сервис hotplug. В настоящее время единственная функция, которую выполняет этот сервис - запуск повторной обработки событий, при обработке которых ранее произошла ошибка (одна из программ, указанных в правилах в списке RUN, вернула ненулевой статус). Это, в частности, решает проблему с неработоспособностью сетевых интерфейсов, для которых в конфигурации etcnet было установлено USE_HOTPLUG=yes (проблема возникала из-за того, что udevd запускается раньше сервиса network, когда активизировать сетевые интерфейсы нежелательно; раньше такие события просто пропадали; теперь сервис udevd-final обрабатывает их повторно в тот момент, когда они могут быть обработаны правильно). Менее заметные изменения: - Добавлено создание символических ссылок /dev/disk/by-uuid/* и /dev/disk/by-label/* для устройств, управляемых через device mapper (LVM2, EVMS); впрочем, эти правила особо не тестировались. - Добавлены вызовы /sbin/pam_console_apply - теперь при обработке событий не должны портиться права доступа к устройствам, которыми управляет pam_console. - Убрано отмонтирование /dev при останове сервиса (от него слишком много ломается). По этой причине обновить пакет dev, пользуясь советом из его скрипта %pre, теперь не получится - нужно будет, например, переместить /dev в другое место через mount -n --move, а после обновления вернуть назад. - Восстановлено нормальное поведение udevd как сервиса - перезапуск после обновления пакета. Правда, при этом выполняется повторная обработка всех событий (для обработки ситуации, когда правила существенно изменились), в результате возможны некоторые побочные эффекты (например, восстановление состояния микшера в то, которое было сохранено при предыдущем завершении работы системы). С другой стороны, это изменение устраняет другие неприятные проблемы (например, неработоспособность udevcontrol после обновления). Наконец, в пакет udev были внесены изменения с целью добавления поддержки initramfs в mkinitrd - о них подробнее в отдельном письме, посвящённом mkinitrd-3.0.0-alt1 (на функционирование системы после загрузки эти изменения не влияют). -- Sergey Vlasov