Bug 44061 - Если указать неверный init=/путь/до/init, bootchain висит, ошибок не выдаёт
Summary: Если указать неверный init=/путь/до/init, bootchain висит, ошибок не выдаёт
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd-bootchain (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: Leonid Krivoshein
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on: 44111
Blocks:
  Show dependency tree
 
Reported: 2022-10-17 18:15 MSK by Антон Мидюков
Modified: 2023-04-09 10:40 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Антон Мидюков 2022-10-17 18:15:45 MSK
Если указать неверный init=/путь/до/init, bootchain висит и ошибок не выдаёт.
Ожидаемое поведение: выдаётся критическая ошибка, происходит перезагрузка.
Comment 1 Leonid Krivoshein 2022-10-23 02:18:03 MSK
Просуммирую тут, что есть, что обсудили, и чего надо делать...

Как показывает связанный баг #44111, да и по логике, никакого отношения bootchain к зависанию и анализу параметра init= не имеет. К этому моменту он уже отработал и вышел, далее работает код в make-initrd и в смежном баге говорится о выдаче ошибки при проверке перед запуском второй стадии. Так что заголовок бага некорректен.

Другое дело, что в altboot, если включены диалоги ввода (а по умолчанию они включены), нам ничто не мешает сделать ещё одну проверку на предмет наличия init-скрипта во второй стадии, и, если видна проблема, выдавать диалог с ошибкой. Сделать это лучше всего на последнем шаге liveboot. Но тогда это уже не баг, а фичреквест.

Однако почти каждый шаг altboot может работать как сам по себе (повторяться в цепочке bootchain), так и в режиме совместимости с пропагатором, где есть определённая последовательность и каждый шаг выполняется лишь единожды. По умолчанию при загрузке на Сизифе сейчас используется второй вариант. Думаю, проверка и диалог в liveboot на последнем этапе должны выполняться только в этом втором режиме совместимости с пропагатором.
Comment 2 Leonid Krivoshein 2022-10-24 02:36:31 MSK
Собрал пробное задание #308896. Хорошо бы тоже проверить. Потом можно будет объединить все успешные изменения.
Comment 3 Антон Мидюков 2022-10-24 06:39:40 MSK
(Ответ для Leonid Krivoshein на комментарий #2)
> Собрал пробное задание #308896. Хорошо бы тоже проверить. Потом можно будет
> объединить все успешные изменения.

Не работает, в логе ошибка:
/lib/bootchain/liveboot: line 158: IM_errmsg: command not found

И почему нужно проверять в liveboot, а не в rootfs? В rootfs гораздо логичнее и универсальнее. И почему бы не текстом вывести, если не хочется в rootfs графику тащить?
Comment 4 Leonid Krivoshein 2022-10-24 14:05:22 MSK
(Ответ для Антон Мидюков на комментарий #3)
> Не работает, в логе ошибка:
> /lib/bootchain/liveboot: line 158: IM_errmsg: command not found
Мой косяк, переделаю. Нужно было эту форму заинклюдить.

> И почему нужно проверять в liveboot, а не в rootfs? В rootfs гораздо
> логичнее и универсальнее.
rootfs -- это шаг bootchain, т.е. изначально pipeline. Его задача перевести загрузку на уровень telinit 2. Ещё он может последний шаг переместить в /root, но в пропагаторном режиме это уже и так сделано ранее. Главным образом rootfs не имеет никакого отношения к altboot, к диалогам, к каким-либо проверкам.

liveboot -- последний шаг altboot в режиме совместимости с пропагатором, и только в этом режиме стоит проверять и выводить диалог по выше обозначенной причине.

> И почему бы не текстом вывести, если не хочется в rootfs графику тащить?
Насколько я понимаю, к задаче bootchain/altboot это уже не относится и какая-то диагностика в логах или где-то ещё при такой ошибке будет предоставлена самим make-initrd, судя по смежной задаче. Мы тут средствами altboot просто чуть раньше проверяем то же самое и выводим диалог более красиво.
Comment 5 Антон Мидюков 2022-10-24 14:44:43 MSK
(Ответ для Leonid Krivoshein на комментарий #4)
> (Ответ для Антон Мидюков на комментарий #3)
> > И почему бы не текстом вывести, если не хочется в rootfs графику тащить?
> Насколько я понимаю, к задаче bootchain/altboot это уже не относится и
> какая-то диагностика в логах или где-то ещё при такой ошибке будет
> предоставлена самим make-initrd, судя по смежной задаче. Мы тут средствами
> altboot просто чуть раньше проверяем то же самое и выводим диалог более
> красиво.

legion@ обещает скоро в Сизифе, так что предлагаю, пока ничего не делать.
Comment 6 Антон Мидюков 2022-11-07 06:22:00 MSK
Исправления:
https://bugzilla.altlinux.org/show_bug.cgi?id=44111

вполне достаточно. Ничего в bootchain делать не требуется.
Comment 7 Leonid Krivoshein 2023-04-09 08:12:34 MSK
Баг в том, что если после шага squashfs  /root нет $INIT, то по крайней мере в диалоговом режиме altboot нет смысла накладывать оверлей, есть смысл вывести диалог о фатальной ошибке. Исправил в #318262.
Comment 8 Repository Robot 2023-04-09 10:40:18 MSK
make-initrd-bootchain-0.1.5-alt12 -> sisyphus:

 Sun Apr 09 2023 Leonid Krivoshein <klark@altlinux> 0.1.5-alt12
 - bootchain-altboot: use altboot forever by check logic (ALT #45787)
 - bootchain-core: delay switching to localdev boot method after loop
 - download: don't set NFS method when loading via HTTP (ALT #43970)
 - liveboot: add check for init= in propagator mode (ALT #44061)