ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Sergey Vlasov <vsu@altlinux.ru>
To: sisyphus@lists.altlinux.org
Cc: devel@lists.altlinux.org
Subject: [devel] IA: udev-105-alt1 - hotplug slowly dies
Date: Thu, 8 Feb 2007 20:56:25 +0300
Message-ID: <20070208175625.GH23550@master.mivlgu.local> (raw)

[-- Attachment #1: Type: text/plain, Size: 5296 bytes --]

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

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

             reply	other threads:[~2007-02-08 17:56 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-08 17:56 Sergey Vlasov [this message]
2007-02-09  8:31 ` Victor Forsyuk
2007-02-09  8:37   ` Stanislav Ievlev
2007-02-09 13:22     ` Victor Forsyuk
2007-02-09 13:30       ` Nick S. Grechukh
2007-02-09 10:24 ` Valery V. Inozemtsev
2007-02-09 11:30   ` Sergey Vlasov
2007-02-09 12:04     ` [devel] [sisyphus] " Valery V. Inozemtsev
2007-02-09 14:30       ` Sergey Vlasov
2007-02-09 17:28         ` Valery V. Inozemtsev
2007-02-09 18:43           ` Sergey Vlasov
2007-02-09 19:06             ` Valery V. Inozemtsev
2007-02-14 11:43             ` Michael Shigorin
2007-02-11 20:56 ` [devel] udev-105-alt2 - bugfixes Sergey Vlasov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070208175625.GH23550@master.mivlgu.local \
    --to=vsu@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    --cc=sisyphus@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git