[sisyphus] Warning: udev-089

Anton Farygin =?iso-8859-1?q?rider_=CE=C1_altlinux=2Ecom?=
Ср Апр 12 11:55:14 MSD 2006


Sergey Vlasov wrote:
> On Wed, Apr 12, 2006 at 10:48:04AM +0400, Anton Farygin wrote:
>> 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 помимо генерации событий ещё модули загружает. Впрочем я 
>> уже давно собирался перенести эту функциональность в отдельный пакет.
> 
> Загружают модули на самом деле *.agent, которые всё равно вызываются
> при обработке событий.  В usb.rc остаётся нужным только монтирование
> /proc/bus/usb (впрочем, разработчики ядра давно хотят объявить её
> obsolete - вот /dev/usb/... уже есть, и новая версия libusb умеет
> пользоваться этими устройствами, только нужно из
> /etc/hotplug/*.usermap сделать набор правил для назначения прав
> доступа средствами udev).

да, это понятно что agent. Только вот всё-таки я бы хотел загрузку 
модулей каким-то образом упорядочить, а иначе сейчас опять полезут баги 
- кто раньше из звуковых загрузился.

Или мы уже умеем определять приоритеты использования у звуковых карт ?

> 
> Вот только у нас libusb какая-то древняя - надо обновить.

Обновим.

> 
>>> 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.
> 
> Это и сейчас есть - udevd запускается раньше network, просто крайне
> маловероятно.

ага. точно.

> 
>> Но там race идёт похуже 
>> - например совершенно непонятно как дождаться появления устройств для / 
>> и для swap
> 
> while ! [ -f "$root_dev" ]; do sleep 1; done  ?

Хм.. как-то это некрасиво - придётся фактически перед каждым устройством 
делать. Да и опять же - как быть в случае, если / вдруг перехал ? Или 
например раздел прописан по LABEL или UUID ?

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

Это понятно - твой etcnet так настроен.

Rgds,
Rider




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