[sisyphus] Warning: udev-089

Anton Farygin =?iso-8859-1?q?rider_=CE=C1_altlinux=2Ecom?=
Ср Апр 12 10:48:04 MSD 2006


Sergey Vlasov wrote:
> On Tue, Apr 11, 2006 at 05:42:17PM +0400, Anton Farygin wrote:
>> В ftp://ftp.altlinux.ru/pub/people/rider/udev-089 лежат пакеты нового udev.
>>
>> Просьба всем, кто использует ядро 2.6.16 - поставить и сообщить мне об
>> найденных ошибках. С ядрами < 2.6.16 новый udev работать не будет.
>>
>> Через пару дней это может добраться до Sisyphus - лучше проверить заранее.
> 
> Да, камнепад будет изрядный.
> 
> 1. После вызова udevtrigger нужно дождаться завершения обработки
>    сгенерированных событий - иначе иногда при дальнейшей загрузке не
>    обнаруживается даже /dev/urandom.  Правда, в этом месте есть
>    грабли:
> 
> 	http://wiki.linuxfromscratch.org/lfs/ticket/1720
> 	http://permalink.gmane.org/gmane.linux.hotplug.devel/9711

Да, и это известно. Сейчас загрузка проходит нормально, а вот если 
запускать udevtrigger из rc.sysinit - то всё становится очень плохо.

> 
> 2. Большинство /etc/hotplug/*.rc (как минимум, pci.rc и usb.rc) после
>    установки этой версии udev становятся бесполезным балластом -
>    udevtrigger сам сгенерирует все нужные события (правда, в
>    неопределённом порядке).

pci.rc и usb.rc помимо генерации событий ещё модули загружает. Впрочем я 
уже давно собирался перенести эту функциональность в отдельный пакет.

> 
> 3. В случае наличия нескольких сетевых плат перед установкой этого
>    udev крайне желательно установить etcnet и настроить /etc/iftab,
>    иначе потом придётся долго разбираться в перепутавшихся eth*.
>    Причём USE_HOTPLUG=yes тоже может не работать, пока из
>    /etc/hotplug/net.agent не будет удалён кусок:
> 
>     # Red Hat specific hack...
>     if [ -f /etc/redhat-release ]; then
> 	# Don't do anything if the network is stopped
> 	if [ ! -f /var/lock/subsys/network ]; then
> 	    exit 0
> 	fi
>     fi
> 
>    Иначе получается race - сетевое устройство вполне может быть
>    обнаружено раньше, чем запустится сервис network (точнее, если в
>    запуск udevd будет добавлено ожидание завершения обработки событий
>    от udevtrigger, устройства и будут обнаруживаться раньше).

Это если мы service udevd вынесем в rc.sysinit. Но там race идёт похуже 
- например совершенно непонятно как дождаться появления устройств для / 
и для swap

> 
>    Впрочем, это тоже неправильно - получается, что сетевые интерфейсы
>    могут запускаться до завершения общей инициализации сети.
>    Возможно, придётся добавить в запуск etcnet вызов собственной
>    версии udevtrigger, генерирующей события только для
>    /sys/class/net/* (и убедиться, что повторяющиеся вызовы
>    ifup-removable не приводят к нежелательным эффектам).

Сейчас при service udevd restart сеть пропадает (она у меня 
настраивается вручную). Наверное стоит посмотреть что там точно происходит.

> 
> 4. В правилах есть ссылки на /lib/udev/path_id, которого нет в пакете.

хм. пропустил, сейчас добавлю.




Подробная информация о списке рассылки Sisyphus