[sisyphus] udev-197

Alexey Shabalin a.shabalin на gmail.com
Пн Янв 28 14:58:19 MSK 2013


28 января 2013 г., 14:35 пользователь Alexey Gladkov написал:
> 28.01.2013 14:27, Alexey Shabalin wrote:
>> 26 января 2013 г., 21:12 пользователь Sergey Vlasov  написал:
>>>>  >> http://git.altlinux.org/gears/s/systemd.git?p=systemd.git;a=commit;h=48a849ee17fb25e0001bfcc0f28a4aa633d016a1
>>>>
>>>>  > И как предлагается теперь выставлять правильные права на файлы устройств?
>>>>
>>>> Не знаю. Я сделал так:
>>>
>>>> --- /etc/rc.d/init.d/udevd~   2013-01-24 22:16:08.348977338 +0400
>>>> +++ /etc/rc.d/init.d/udevd    2013-01-24 22:21:31.486708131 +0400
>>>> @@ -196,7 +193,7 @@
>>>>               RETVAL=$[$RETVAL+$?]
>>>>               [ "$RETVAL" == "0" ] && echo "" >/proc/sys/kernel/hotplug
>>>>               /sbin/udevadm control --property="STARTUP=1"
>>>> -             /sbin/udevadm trigger
>>>> +             /sbin/udevadm trigger --action=add
>>>>               action "Populating /dev:" /sbin/udevadm settle
>>>>               /sbin/udevadm control --property="STARTUP="
>>>>               RETVAL=$[$RETVAL+$?]
>>>
>>> И, судя по комментариям из вышеупомянутого коммита, добавление
>>> --action=add - это правильное решение.
>>>
>>
>> Я извиняюсь, может чего-то недопонимаю, объясните пожалуйста.
>> Дело в том, что и из systemd-udev-trigger.service я тоже убрал из
>> параметров --action=add при вызове udevadm trigger.
>> Все из-за того, что у нас initrd (сделанный make-initrd) удаляет за
>> собой базу udev, и после смены корневой фс, базу udev надо заново
>> наполнить, иначе возникают различные проблемы (я уже описывал их ранее
>> в рассылке).
>> Т.е. пока make-initrd не будет копировать базу udev, добавлять
>> --action=add мне кажется опасным.
>
> make-initrd как раз и формирует базу с нуля с помощью --action=add.
> Без этого ключа база будет не полной.

Лёшь, посмотри в личной переписке, тема
"start swap on lvm (systemd)"
Я там описывал проблему:

из initrd приезжают диски, информация о которых в udev минимальна. Это
не даёт нормально их подмонтировать средствами systemd+udev.

После загрузки нормальная информация появляется только после
vgchange --refresh

Решением проблемы старта swap на lvm как раз было удалить
"--action=add", что бы база udev заполнялась заново.


Также вот выдержка из  /lib/udev/rules.d/10-dm.rules, где рекомендуют
не удалять udev базу в initrd.

# Normally, we operate on "change" events. But when coldplugging, there's an
# "add" event present. We have to recognize this and do our actions in this
# particular situation, too. Also, we don't want the nodes to be created
# prematurely on "add" events while not coldplugging. We check
# DM_UDEV_PRIMARY_SOURCE_FLAG to see if the device was activated correctly
# before and if not, we ignore the "add" event totally. This way we can support
# udev triggers generating "add" events (e.g. "udevadm trigger --action=add" or
# "echo add > /sys/block/<dm_device>/uevent"). The trigger with "add" event is
# also used at boot to reevaluate udev rules for all existing devices activated
# before (e.g. in initrd). If udev is used in initrd, we require the udev init
# script to not remove the existing udev database so we can reuse the
information
# stored at the time of device activation in the initrd.


--
Alexey Shabalin


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