Summary: | bootchain: если загрузка не удалась, невозможно добраться до лога загрузки | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Alexey Sheplyakov <asheplyakov> | ||||
Component: | make-initrd-bootchain | Assignee: | Leonid Krivoshein <klark> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | major | ||||||
Priority: | P5 | CC: | antohami, klark | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Alexey Sheplyakov
2021-10-12 12:48:39 MSK
А можете рассказать словами, сколько всего у вас устройств ввода и вывода на раннем этапе загрузки, и что это за устройства? Для serial console / netconsole была реализована некая начальная поддержка, очевидно по "остаточному принципу". Хотелось бы это улучшить, но без понимания и железа довольно сложно. Если указать параметр rdlog=console, журнал вестись не будет, он будет сразу выводиться в /dev/console. Годится такой вариант для отладки? Не сложно по аналогии организовать вывод в /dev/ttyprintk. Created attachment 9818 [details]
Пример возможности поддержки /dev/ttyprintk
Проверял с разными вариантами, самый простой вариант прилагаю. Работает, но у нас это может работать по-разному. Без ответа на главный вопрос не могу понять, есть ли возможность изменить концепцию вывода диалогов и журналов для машин, у которых нет VGA. И нужны ли на них вообще диалоги?
(In reply to Leonid Krivoshein from comment #1) > А можете рассказать словами, сколько всего у вас устройств ввода и вывода на > раннем этапе загрузки, и что это за устройства? Ввода - UART консоль. Вывода - она же. Возможно, что ещё есть efifb. (In reply to Leonid Krivoshein from comment #1) > Если указать параметр rdlog=console, журнал вестись не будет, он будет сразу > выводиться в /dev/console. Прогресс/диалоги всё равно отображаются и затирают и логи. > Годится такой вариант для отладки? Нет. Отладочных сообщений не видно. Прокрутить вверх историю не получается. Консоль заблокирована "неубиваемым" диалогом. Жизнеспособные варианты: 1) Если указано rdshell и nottys -- вообще не отображать диалогов, а при ошибке писать сообщение (что-нибудь вида "Automatic boot failed, starting emergency shell"), и запускать shell 2) Если указано nottys - мультиплексировать консоль с помощью screen|tmux Спасибо, теперь понятно. Так я и думал, что у вас единственное устройство для взаимодействия с пользователем. Конечно нельзя на него выводить одновременно и диалоги, и логи, и запускать там rdshell, и туда же make-initrd выводит стартовые сообщения о запуске демонов. Предлагаю сделать так: по умолчанию диалоги будут выводиться на UART, раз они там работоспособны, а лог будет писаться в файл. С параметром bc_debug журнал подробный и в случае успеха копируется в stage2. В новой версии его название изменится на /var/log/chaind.log, так предложено сделать в процессе апстрима. Указывать nottys больше не потребуется, если в console=... что-то есть. Если переход в stage2 не происходит, будет два варианта: 1. Вернуться в диалоге в главное меню и запустить из него shell. 2. Изначально запускать с noaskuser и rdlog=console или rdlog=printk earlycon=... ignore_loglevel. В этом случае вывод диалогов будет отключен полностью, ввод данных со стороны пользователя будет исключён совсем, все параметры должны передаваться заранее через /proc/cmdline, лог будет писаться не в файл, а в /dev/console или в /dev/ttyprintk, соответственно. Если годится такой вариант, могу сегодня собрать тестовое задание. Запихивание screen/tmux пока не увенчалось успехом, так как в самом make-initrd пока остаются вопросы с настройкой терминалов, конфликтами с plymouth, несобираемостью фичи kbd в initramfs, т.е. мультиплексоры запихнуть туда можно, но без правильно настроенной UTF-8 консоли работать они не хотят. Так что этот вариант пока отложим в сторонку. Попробуйте с заданием #287155 -- получилось всё, кроме п.1, rdshell работает с диалогами altboot "не дружелюбно" при наличии единственной консоли, а запускать shell из диалогов без rdshell пока не получилось. Эту проблему будем решать с legion@, когда дойдём от апстрима фичи bootchain-interactive. Точнее так: на большинстве конфигураций с TTY'ами переключение в rdshell работает безупречно. На них и журнал доступен, по умолчанию на tty3. Параметр nottys упразднён в пользу ядерного console=... В конфигурации без TTY'ов крайне не желательно использовать rdshell, но всё же он как-то странно, но работает. У меня получалось переключаться из меню в rdshell со второй попытки стабильно, поэтому я решил оставить лучше пока так, чем его не будет совсем. И я не знаю, как это поведёт себя на Байкале. Более комфортный вариант теперь для отладки на конфигурациях без TTY'ов -- перенаправлять диалоги в /dev/null параметром noaskuser, а отладочный вывод через rdlog= на консоль. Раньше noaskuser отключал только диалоги ввода. make-initrd-bootchain-0.1.5-alt5 -> sisyphus: Fri Oct 15 2021 Leonid Krivoshein <klark@altlinux> 0.1.5-alt5 - fix netboot problem on very slow hardware (ALT #41078). - fix screen blinks in ponder widget (ALT #41096). - bootchain-core: adds support for the early console. - bootchain-waitnet: increase timeout and fix messages. - bootchain: reworked interaction with TTY's (ALT #41097). - bootchain-altboot: adds special actions to the main menu. - concatinate bootchain-loop back with the bootchained. - bootchain-core: daemon and log renamed to chaind. - bootchain-waitnet: bring up interfaces only once. |