Пытаюсь загрузиться по сети, сеть не подымается (это предмет отдельного бага). Хочу зайти в shell и просмотреть/скопировать лог загрузки. Однако консоль заблокирована диалогом "Please choose the installation method". Кнопка "Canel" в диалоге неактивна. Пункта "show logs" или "run shell" нет. Если прибить с помощью Ctrl+C - через пару секунд перезапускается. Итого - добыть лог загрузки (/var/log/bootchained.log) практически невозможно. Командная строка ядра: rdshell nottys bc_debug root=bootchain bootchain=fg,altboot ip=dhcp4 automatic=method:http,network:dhcp,server:${http_server},directory:/altlinux/regular-xfce-20211006-aarch64.iso stagename=live console=ttyS0,115200n8 earylcon=uart8250,mmio32,0x20230000 audit=0
А можете рассказать словами, сколько всего у вас устройств ввода и вывода на раннем этапе загрузки, и что это за устройства? Для 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.