[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