<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>41097</bug_id>
          
          <creation_ts>2021-10-12 12:48:39 +0300</creation_ts>
          <short_desc>bootchain: если загрузка не удалась, невозможно добраться до лога загрузки</short_desc>
          <delta_ts>2021-10-18 16:07:18 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>make-initrd-bootchain</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Sheplyakov">asheplyakov</reporter>
          <assigned_to name="Leonid Krivoshein">klark</assigned_to>
          <cc>antohami</cc>
    
    <cc>klark</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>203705</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-10-12 12:48:39 +0300</bug_when>
    <thetext>Пытаюсь загрузиться по сети, сеть не подымается (это предмет отдельного бага).
Хочу зайти в shell и просмотреть/скопировать лог загрузки. Однако консоль заблокирована диалогом &quot;Please choose the installation method&quot;. Кнопка &quot;Canel&quot;
в диалоге неактивна. Пункта &quot;show logs&quot; или &quot;run shell&quot; нет.
Если прибить с помощью 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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203736</commentid>
    <comment_count>1</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2021-10-13 02:45:38 +0300</bug_when>
    <thetext>А можете рассказать словами, сколько всего у вас устройств ввода и вывода на раннем этапе загрузки, и что это за устройства? Для serial console / netconsole была реализована некая начальная поддержка, очевидно по &quot;остаточному принципу&quot;. Хотелось бы это улучшить, но без понимания и железа довольно сложно.

Если указать параметр rdlog=console, журнал вестись не будет, он будет сразу выводиться в /dev/console. Годится такой вариант для отладки? Не сложно по аналогии организовать вывод в /dev/ttyprintk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203777</commentid>
    <comment_count>2</comment_count>
      <attachid>9818</attachid>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2021-10-13 16:11:41 +0300</bug_when>
    <thetext>Created attachment 9818
Пример возможности поддержки /dev/ttyprintk

Проверял с разными вариантами, самый простой вариант прилагаю. Работает, но у нас это может работать по-разному. Без ответа на главный вопрос не могу понять, есть ли возможность изменить концепцию вывода диалогов и журналов для машин, у которых нет VGA. И нужны ли на них вообще диалоги?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203801</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-10-14 14:43:41 +0300</bug_when>
    <thetext>(In reply to Leonid Krivoshein from comment #1)
&gt; А можете рассказать словами, сколько всего у вас устройств ввода и вывода на
&gt; раннем этапе загрузки, и что это за устройства? 

Ввода - UART консоль.
Вывода - она же. Возможно, что ещё есть efifb.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203802</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-10-14 14:59:18 +0300</bug_when>
    <thetext>(In reply to Leonid Krivoshein from comment #1)

&gt; Если указать параметр rdlog=console, журнал вестись не будет, он будет сразу
&gt; выводиться в /dev/console.

Прогресс/диалоги всё равно отображаются и затирают и логи.
 
&gt; Годится такой вариант для отладки?

Нет. Отладочных сообщений не видно. Прокрутить вверх историю не получается.
Консоль заблокирована &quot;неубиваемым&quot; диалогом.

Жизнеспособные варианты:

1) Если указано rdshell и nottys -- вообще не отображать диалогов, а при ошибке писать сообщение (что-нибудь вида &quot;Automatic boot failed, starting emergency shell&quot;), и запускать shell

2) Если указано nottys - мультиплексировать консоль с помощью screen|tmux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203811</commentid>
    <comment_count>5</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2021-10-14 20:05:36 +0300</bug_when>
    <thetext>Спасибо, теперь понятно. Так я и думал, что у вас единственное устройство для взаимодействия с пользователем. Конечно нельзя на него выводить одновременно и диалоги, и логи, и запускать там 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 консоли работать они не хотят. Так что этот вариант пока отложим в сторонку.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203833</commentid>
    <comment_count>6</comment_count>
    <who name="Leonid Krivoshein">klark</who>
    <bug_when>2021-10-15 19:40:22 +0300</bug_when>
    <thetext>Попробуйте с заданием #287155 -- получилось всё, кроме п.1, rdshell работает с диалогами altboot &quot;не дружелюбно&quot; при наличии единственной консоли, а запускать shell из диалогов без rdshell пока не получилось. Эту проблему будем решать с legion@, когда дойдём от апстрима фичи bootchain-interactive.

Точнее так: на большинстве конфигураций с TTY&apos;ами переключение в rdshell работает безупречно. На них и журнал доступен, по умолчанию на tty3. Параметр nottys упразднён в пользу ядерного console=... В конфигурации без TTY&apos;ов крайне не желательно использовать rdshell, но всё же он как-то странно, но работает. У меня получалось переключаться из меню в rdshell со второй попытки стабильно, поэтому я решил оставить лучше пока так, чем его не будет совсем. И я не знаю, как это поведёт себя на Байкале.

Более комфортный вариант теперь для отладки на конфигурациях без TTY&apos;ов -- перенаправлять диалоги в /dev/null параметром noaskuser, а отладочный вывод через rdlog= на консоль. Раньше noaskuser отключал только диалоги ввода.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203908</commentid>
    <comment_count>7</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2021-10-18 16:07:18 +0300</bug_when>
    <thetext>make-initrd-bootchain-0.1.5-alt5 -&gt; sisyphus:

 Fri Oct 15 2021 Leonid Krivoshein &lt;klark@altlinux&gt; 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&apos;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.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9818</attachid>
            <date>2021-10-13 16:11:41 +0300</date>
            <delta_ts>2021-10-13 16:11:41 +0300</delta_ts>
            <desc>Пример возможности поддержки /dev/ttyprintk</desc>
            <filename>printk1.patch</filename>
            <type>text/plain</type>
            <size>731</size>
            <attacher name="Leonid Krivoshein">klark</attacher>
            
              <data encoding="base64">Y29tbWl0IDYwNDk5MTE2N2MwYzlmMDJiYjVjMjk3Njg4OTc4NmRkNzZiN2Q1MjkKQXV0aG9yOiBM
ZW9uaWQgS3Jpdm9zaGVpbiA8a2xhcmtAYWx0bGludXgub3JnPgpEYXRlOiAgIFdlZCBPY3QgMTMg
MDM6Mzk6NDUgMjAyMSArMDMwMAoKICAgIGJvb3RjaGFpbi1jb3JlOiBhZGRzIHN1cHBvcnQgZm9y
IHRoZSBlYXJseSBjb25zb2xlCgpkaWZmIC0tZ2l0IGEvYm9vdGNoYWluLWNvcmUvZGF0YS9zYmlu
L2Jvb3RjaGFpbmVkIGIvYm9vdGNoYWluLWNvcmUvZGF0YS9zYmluL2Jvb3RjaGFpbmVkCmluZGV4
IDMxMWQxZmUuLjlhYTk5NDcgMTAwNzU1Ci0tLSBhL2Jvb3RjaGFpbi1jb3JlL2RhdGEvc2Jpbi9i
b290Y2hhaW5lZAorKysgYi9ib290Y2hhaW4tY29yZS9kYXRhL3NiaW4vYm9vdGNoYWluZWQKQEAg
LTM1LDYgKzM1LDEwIEBAIGlmIFsgIngkezEtfSIgIT0gIngtLWZvcmVncm91bmQiIF07IHRoZW4K
IAogCWlmIFsgIiR7UkRMT0ctfSIgPSBjb25zb2xlIF07IHRoZW4KIAkJQkNfTE9HRklMRT0vZGV2
L2NvbnNvbGUKKwllbGlmIFsgIiR7UkRMT0ctfSIgPSBwcmludGsgXTsgdGhlbgorCQlCQ19MT0dG
SUxFPS9kZXYvdHR5cHJpbnRrCisJCVsgLWUgIiRCQ19MT0dGSUxFIiBdIHx8CisJCQlta25vZCAi
JEJDX0xPR0ZJTEUiIGMgNSAzCiAJZWxpZiBbIC16ICIke05PVFRZUy19IiBdICYmCiAJCVsgLW4g
IiRCQ19MT0dfVlQiIF0gJiYKIAkJWyAhIC1jICIkQkNfTE9HRklMRSIgXSAmJgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>