[sisyphus] udev-197

Alexey Gladkov legion на altlinux.ru
Вт Янв 29 15:38:08 MSK 2013


29.01.2013 13:44, Alexey Shabalin wrote:
> 28 января 2013 г., 19:49 пользователь Dmitry V. Levin написал:
>> On Mon, Jan 28, 2013 at 07:42:27PM +0400, Alexey Shabalin wrote:
>>> 28 января 2013 г., 19:37 пользователь Alexey Shabalin написал:
>>>> 28 января 2013 г., 19:23 пользователь Alexey Gladkov написал:
>>>>> 28.01.2013 19:04, Alexey Shabalin wrote:
>>>>>> Так я и прошу показать где происходит перезапуск. Под перезапуском я
>>>>>> понимаю, что первый экземпляр где-то стопится. Пока я вижу только
>>>>>> старт из rc.sysinit и
>>>>>
>>>>> Под перезапуском я понимаю, что udev останавливается в initrd и
>>>>> запускается в системе с чистого листа и наполняет базу заново.
>>>>>
>>>>>> Т.е. если он запускается только один раз из rc.sysinit, то добавление
>>>>>> "--action=add" так же поломает наполнение базы udev?
>>>>>
>>>>> Тут должна быть инициализация базы с нуля. Примерно также делается в
>>>>> initrd.
>>>> Для sysv не страшно, если база пустая, т.к. swapon,  vgchange -a y,
>>>> mdadm --assemble --scan и т.п. все равно при любых условиях
>>>> запускаются из rc.sysinit  и наполняют базу udev.
>>>> Для systemd они ни откуда ни запускаются , полагается только на уже
>>>> существующую наполненую базу udev. И если она пустая - то будет облом.
>>>
>>> Кстати, может сделаем такой компромисс - базу udev из initrd будем
>>> копировать, а удалять уже из rc.sysinit ? А для systemd Эту базу можно
>>> не удалять.
>>
>> Это будет не компромисс, а мина замедленного действия, до первого
>> нарушения обратной совместимости формата базы udev.
> 
> Тогда давайте копировать базу udev и обновлять initrd при обновлении
> udev хотя бы для текущего ядра (не трогая остальные) - у
> администратора останется возможность загрузится и если надо вручную
> обновить initrd для других ядер.

Представим ситуацию, когда новый initrd не загрузился (такое иногда
бывает) и есть несовместимость баз. Что делать пользователю? Новое
ядро не грузится... и старое тоже не будет грузится.

Таким образом система будет работать, когда всё хорошо и не будет
работать при проблемах. Собственно как и в случае неперегенерации
initrd и копирования баз. Эффект будет одинаковым.

Как один из обходных вариантов можно реализовать cmdline ключ для
управления копированием базы udev в систему, который по умолчанию
будет выставлен в "копировать". Тогда если реализовать аварийный
механизм в системе на случай, когда базы udev нет, то пользователь
сможет(?) загрузиться хоть как-то.

Тут у меня возникают сомнения в возможности реализации аварийного
режима т.к. этот тред и есть следствие того, что systemd не умеет
нормально работать без базы udev. 2shaba@: Можно ли тут что-то сделать ?

-- 
Rgrds, legion



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