[make-initrd] Wait until the resume= is processed

Leonid Krivoshein klark.devel at gmail.com
Thu Aug 25 21:08:08 MSK 2022


Привет!


25.08.2022 15:41, Alexey Gladkov пишет:
> Привет!
>
> Мне нужна ваша помощь. Я раздумывал про то как устроено resume в initramfs
> и связанные с этим проблемы.
>
> Если всё суммировать, то проблема лишь одна:
>
> Если swap на отдельном устройстве, то оно может проинициализироваться
> позже чем устройство, на котором находится корень. То есть мы не знаем по
> какому сценарию мы движемся.

Потому что мы следуем событиям, а не движемся по сценарию.


> К счастью мы ждём не какой-нибудь swap, а вполне конкретный, определённый
> через параметр resume= . Поэтому если _начать_ считать, что указанное в
> параметре устройство обязательно должно по явиться, то неопределённости
> уже не будет.
>
> Проблема в том, что сейчас устройство указанное в resume= опционально т.е.
> параметр может указывать на что-то от предыдущий установки, например.

Это ошибка конфигурирования, которая должна вылезти боком сразу же, при 
первом её обнаружении. Предлагаю считать отсутствие указанного SWAP 
фатальной ошибкой и не загружаться, пока пользователь не прочтёт и не 
подтвердит руками, что он накуролесил.


> У меня есть соблазн сделать:
>
> 1. Ждать устройство resume= и пробовать проснуться.

Видимо тут имелось ввиду две вещи:

1.1. Попытаться проснуться при поступлении события о нахождении 
устройства SWAP.
1.2. Если истёк некий тайм-аут ожидания SWAP, по крайней мере, события 
можно больше не ждать. Этот тайм-аут, по идее, не должен совпадать с 
rootdelay, так как штатная загрузка с корня -- задача, противоположная 
просыпанию.


> 2. Если устройство есть и не получилось, то обрабатывать накопившиеся
> эвенты для обычной загрузки.
>
> 3. Если мы достигли rootdelay= и resume= не появился, то сбросить delay,
> выдать большое предупреждение об отсутствии resume= и грузиться нормально.

Если resume будет неотъемлемой фичей. Интересно, получится это "ужить" с 
общим кодом модульно. А так, да, проверку разумней делать в одном (в 
этом) месте.


> 4. Возможно, при создании initramfs смотреть на resume= в /proc/cmdline и
> предупреждать, что устройства нет. В этом пункте я сильно не уверен.

Нет, один initramfs может быть использован для загрузки в разных 
условиях, с разными параметрами.



> Что вы думаете по этому поводу ?
>


-- 
С уважением,
Леонид Кривошеин.


More information about the Make-initrd mailing list