* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground @ 2021-10-26 19:16 ` Alexey Gladkov 2021-10-26 20:29 ` Leonid Krivoshein 0 siblings, 1 reply; 27+ messages in thread From: Alexey Gladkov @ 2021-10-26 19:16 UTC (permalink / raw) To: make-initrd On Sun, Oct 24, 2021 at 08:23:23PM +0300, Leonid Krivoshein wrote: > Also introduces configuration parameter BC_FGVT_ACTIVATE and new pseudo-step > "fg". This is only works together with the "bootchain-interactive" feature > included to initramfs. Jointly features "bootchain-core" and "bootchain- > interactive" they lay the foundation for building simple text installers > in the stage1. Напомни пожалуйста, а что мешает демону из бэкграунда писать на указанный терминал и читать с него ? Типа вот так: exec </dev/tty2 >/dev/tty2 2>&1 > See README.md for more details. > > Signed-off-by: Leonid Krivoshein <klark.devel@gmail.com> > --- > features/bootchain-core/README.md | 16 +++++++ > .../data/bin/bootchain-sh-functions | 2 + > features/bootchain-core/data/sbin/chaind | 45 ++++++++++++++++--- > 3 files changed, 58 insertions(+), 5 deletions(-) > > diff --git a/features/bootchain-core/README.md b/features/bootchain-core/README.md > index ab89181..943b4b0 100644 > --- a/features/bootchain-core/README.md > +++ b/features/bootchain-core/README.md > @@ -50,11 +50,18 @@ us to optimize fill in `initramfs` only which we are need. > > - Modularity: loading methods are initially separated from the common > code and daemon. > +- Provides the ability to bring the daemon to the foreground at any time. This > + restarts the `chaind` process on a specific terminal, although initially the > + daemon is started in the background. > - Some steps (actions) are built directly into the code of the main loop > of the `chaind` daemon, external scripts are not called to execute them. > Such pseudo-steps allow you to control, basically, the internal state of the > daemon and should not be taken into account in the boot chain, as if they are > hidden. > +- Optionally, the daemon can work in conjunction with the `bootchain-interactive` > + feature, can move to the foreground and continue working on a specific terminal, > + by default, tty2. Jointly features `bootchain-core` and `bootchain-interactive` > + they lay the foundation for building simple text installers in stage1. > - The `chaind` daemon allows you to overload the chain with a new set of steps, > thanks to this, you can change the logic of work "on the fly", support loops > and conditional jumps, in text dialogs it is an opportunity to go back. > @@ -147,6 +154,11 @@ parameters: > should be output in the background. By default, the value is 3, respectively, > the log is output to tty3. An empty value allows you to disable log output > to any terminal. > +- `BC_FGVT_ACTIVATE` - delay in seconds before activating the interactive > + terminal, by default tty2 is activated after 2 seconds in debug mode > + or after 8 seconds in normal mode. An empty value instructs to activate > + the interactive terminal immediately. This configuration option only works > + together with the `bootchain-interactive` features included in initramfs. > - `BC_LOGFILE` - the full path to the log file or the name of a special device, > to which debugging messages will be output. In NATIVE mode, the default value > is `/var/log/chaind.log`, in COMPATIBILITY mode with `pipeline` the default > @@ -165,6 +177,10 @@ embedded in the code of the main loop of the `boot chain-loop` daemon, do > not need additional parameters and should not be taken into account when > addressing, as if they are hidden. > > +- `fg` - provides the transfer of the daemon to interactive mode when building > + initramfs with `bootchain-interactive` features. The `bootchain-core` itself > + is not interactivity required, but some other steps may need it, such as > + `altboot`. > - `noop` - does not perform any actions and is designed to pull off the results > on the <OUT> of the previous step from the <IN> of the next step, which can > be useful, for example, when we don`t want the results of the `waitdev` step > diff --git a/features/bootchain-core/data/bin/bootchain-sh-functions b/features/bootchain-core/data/bin/bootchain-sh-functions > index 3a9ec6b..743a8f9 100644 > --- a/features/bootchain-core/data/bin/bootchain-sh-functions > +++ b/features/bootchain-core/data/bin/bootchain-sh-functions > @@ -25,6 +25,8 @@ else > pipeline_mode= > fi > > +[ -n "$BC_DEBUG" ] && BC_FGVT_ACTIVATE=1 || > + BC_FGVT_ACTIVATE="${BC_FGVT_ACTIVATE:-7}" > BC_NEXTCHAIN=/.initrd/bootchain/bootchain.next > BC_PASSED=/.initrd/bootchain/passed > handlerdir=/lib/bootchain > diff --git a/features/bootchain-core/data/sbin/chaind b/features/bootchain-core/data/sbin/chaind > index e8ce94a..68a1aae 100755 > --- a/features/bootchain-core/data/sbin/chaind > +++ b/features/bootchain-core/data/sbin/chaind > @@ -2,11 +2,12 @@ > > . bootchain-sh-functions > > -bcretry=1 > +bcretry="${bcretry:-1}" > pidfile="/var/run/$PROG.pid" > -chainsteps="$BOOTCHAIN" > -stepnum=0 > -prevdir= > +chainsteps="${chainsteps-}" > +stepnum="${stepnum:-0}" > +prevdir="${prevdir-}" > +BC_IM_supported= > > > exit_handler() > @@ -25,6 +26,8 @@ debug() > } > > > +# Only when daemon started first time > +if [ "x${1-}" != "x--foreground" ]; then "x" тут признак чего ? не надо этого. > [ ! -f "$pidfile" ] || > fatal "already running" > set_cleanup_handler exit_handler > @@ -57,12 +60,44 @@ debug() > mountpoint -q -- "$mntdir" || > run mount -t tmpfs tmpfs "$mntdir" ||: > > + chainsteps="$BOOTCHAIN" > +fi > + > +# Check that interactive mode supports > +if has_feature bootchain-interactive; then > + . interactive-sh-functions > + > + [ "x${1-}" != "x--foreground" ] || > + IM_activate "$BC_FGVT_ACTIVATE" "$BC_LOGFILE" > + BC_IM_supported=1 > +fi > + > rc=0 > while [ -n "$chainsteps" ]; do > name="${chainsteps%%,*}" > exe="$handlerdir/$name" > > - if [ "$name" = noop ]; then > + if [ "$name" = fg ]; then > + [ -n "$BC_IM_supported" ] || > + fatal "bootchain-interactive feature required" > + assign "callnum" "\${callnum_$name:-0}" > + chainsteps="${chainsteps#$name}" > + chainsteps="${chainsteps#,}" > + > + if IM_is_active; then > + message "[$callnum] Step '$name' has ignored" > + else > + message "[$callnum] Switching to foreground" > + > + callnum=$((1 + $callnum)) > + assign "callnum_$name" "\$callnum" > + > + export stepnum chainsteps callnum_fg prevdir bcretry > + > + IM_exec "$0" --foreground > + fi > + > + elif [ "$name" = noop ]; then > chainsteps="${chainsteps#$name}" > chainsteps="${chainsteps#,}" > prevdir= > -- > 2.24.1 > > _______________________________________________ > Make-initrd mailing list > Make-initrd@lists.altlinux.org > https://lists.altlinux.org/mailman/listinfo/make-initrd > -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-10-26 19:16 ` [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground Alexey Gladkov @ 2021-10-26 20:29 ` Leonid Krivoshein 2021-11-06 13:22 ` Alexey Gladkov 0 siblings, 1 reply; 27+ messages in thread From: Leonid Krivoshein @ 2021-10-26 20:29 UTC (permalink / raw) To: make-initrd 26.10.2021 22:16, Alexey Gladkov пишет: > On Sun, Oct 24, 2021 at 08:23:23PM +0300, Leonid Krivoshein wrote: >> Also introduces configuration parameter BC_FGVT_ACTIVATE and new pseudo-step >> "fg". This is only works together with the "bootchain-interactive" feature >> included to initramfs. Jointly features "bootchain-core" and "bootchain- >> interactive" they lay the foundation for building simple text installers >> in the stage1. > Напомни пожалуйста, а что мешает демону из бэкграунда писать на указанный > терминал и читать с него ? > > Типа вот так: > > exec </dev/tty2 >/dev/tty2 2>&1 Там ровно этот код и отрабатывает. Суть усложнения концепции заключалась в другом: хотелось получить выделенный интерактивный терминал с диалогами, отличный от tty1, и активировать его, при необходимости, по таймауту или сразу. Чтобы быстрый процесс загрузки не мелькал перед глазами, если в этом нет необходимости. И чтобы вывод демонов make-initrd не смешивался на tty1 с диалогами. Переход в интерактивный режим был разделён на две части: IM_exec() и IM_activate() подобно тому, как приложения запускаются в NIX-системах через fork() и exec(). Исходно запущенный демон запускает вспомогательный терминал для отладки и есть код, который ждёт его завершения. Изначально демон был вообще разделён на две части, перезапускалась только вторая часть. Причина -- в использовании openvt ... так как другие варианты не подходили. Алексей Шепляков предложил тут хорошую идею: использовать для тех же целей screen или tmux. Собственно задача: восстановить после себя консоль. Вариант идеальный, но у меня пока не вышло из-за проблем с настройкой utf8 в stage1, там одно другое цепляет, есть конфликты с plymouth и kbd, который сейчас, кажется, совсем нерабочий. Так что переключение на другие консоли через openvt -- пока единственная рабочая, но не лучшая реализация, надо обсудить, как это улучшить, не меняя API. > >> See README.md for more details. >> >> Signed-off-by: Leonid Krivoshein <klark.devel@gmail.com> >> --- >> features/bootchain-core/README.md | 16 +++++++ >> .../data/bin/bootchain-sh-functions | 2 + >> features/bootchain-core/data/sbin/chaind | 45 ++++++++++++++++--- >> 3 files changed, 58 insertions(+), 5 deletions(-) >> >> diff --git a/features/bootchain-core/README.md b/features/bootchain-core/README.md >> index ab89181..943b4b0 100644 >> --- a/features/bootchain-core/README.md >> +++ b/features/bootchain-core/README.md >> @@ -50,11 +50,18 @@ us to optimize fill in `initramfs` only which we are need. >> >> - Modularity: loading methods are initially separated from the common >> code and daemon. >> +- Provides the ability to bring the daemon to the foreground at any time. This >> + restarts the `chaind` process on a specific terminal, although initially the >> + daemon is started in the background. >> - Some steps (actions) are built directly into the code of the main loop >> of the `chaind` daemon, external scripts are not called to execute them. >> Such pseudo-steps allow you to control, basically, the internal state of the >> daemon and should not be taken into account in the boot chain, as if they are >> hidden. >> +- Optionally, the daemon can work in conjunction with the `bootchain-interactive` >> + feature, can move to the foreground and continue working on a specific terminal, >> + by default, tty2. Jointly features `bootchain-core` and `bootchain-interactive` >> + they lay the foundation for building simple text installers in stage1. >> - The `chaind` daemon allows you to overload the chain with a new set of steps, >> thanks to this, you can change the logic of work "on the fly", support loops >> and conditional jumps, in text dialogs it is an opportunity to go back. >> @@ -147,6 +154,11 @@ parameters: >> should be output in the background. By default, the value is 3, respectively, >> the log is output to tty3. An empty value allows you to disable log output >> to any terminal. >> +- `BC_FGVT_ACTIVATE` - delay in seconds before activating the interactive >> + terminal, by default tty2 is activated after 2 seconds in debug mode >> + or after 8 seconds in normal mode. An empty value instructs to activate >> + the interactive terminal immediately. This configuration option only works >> + together with the `bootchain-interactive` features included in initramfs. >> - `BC_LOGFILE` - the full path to the log file or the name of a special device, >> to which debugging messages will be output. In NATIVE mode, the default value >> is `/var/log/chaind.log`, in COMPATIBILITY mode with `pipeline` the default >> @@ -165,6 +177,10 @@ embedded in the code of the main loop of the `boot chain-loop` daemon, do >> not need additional parameters and should not be taken into account when >> addressing, as if they are hidden. >> >> +- `fg` - provides the transfer of the daemon to interactive mode when building >> + initramfs with `bootchain-interactive` features. The `bootchain-core` itself >> + is not interactivity required, but some other steps may need it, such as >> + `altboot`. >> - `noop` - does not perform any actions and is designed to pull off the results >> on the <OUT> of the previous step from the <IN> of the next step, which can >> be useful, for example, when we don`t want the results of the `waitdev` step >> diff --git a/features/bootchain-core/data/bin/bootchain-sh-functions b/features/bootchain-core/data/bin/bootchain-sh-functions >> index 3a9ec6b..743a8f9 100644 >> --- a/features/bootchain-core/data/bin/bootchain-sh-functions >> +++ b/features/bootchain-core/data/bin/bootchain-sh-functions >> @@ -25,6 +25,8 @@ else >> pipeline_mode= >> fi >> >> +[ -n "$BC_DEBUG" ] && BC_FGVT_ACTIVATE=1 || >> + BC_FGVT_ACTIVATE="${BC_FGVT_ACTIVATE:-7}" >> BC_NEXTCHAIN=/.initrd/bootchain/bootchain.next >> BC_PASSED=/.initrd/bootchain/passed >> handlerdir=/lib/bootchain >> diff --git a/features/bootchain-core/data/sbin/chaind b/features/bootchain-core/data/sbin/chaind >> index e8ce94a..68a1aae 100755 >> --- a/features/bootchain-core/data/sbin/chaind >> +++ b/features/bootchain-core/data/sbin/chaind >> @@ -2,11 +2,12 @@ >> >> . bootchain-sh-functions >> >> -bcretry=1 >> +bcretry="${bcretry:-1}" >> pidfile="/var/run/$PROG.pid" >> -chainsteps="$BOOTCHAIN" >> -stepnum=0 >> -prevdir= >> +chainsteps="${chainsteps-}" >> +stepnum="${stepnum:-0}" >> +prevdir="${prevdir-}" >> +BC_IM_supported= >> >> >> exit_handler() >> @@ -25,6 +26,8 @@ debug() >> } >> >> >> +# Only when daemon started first time >> +if [ "x${1-}" != "x--foreground" ]; then > "x" тут признак чего ? не надо этого. Признак Debian-way! :-) Ну, я боялся, что в этом месте "--" может быть не так истолковано. >> [ ! -f "$pidfile" ] || >> fatal "already running" >> set_cleanup_handler exit_handler >> @@ -57,12 +60,44 @@ debug() >> mountpoint -q -- "$mntdir" || >> run mount -t tmpfs tmpfs "$mntdir" ||: >> >> + chainsteps="$BOOTCHAIN" >> +fi >> + >> +# Check that interactive mode supports >> +if has_feature bootchain-interactive; then >> + . interactive-sh-functions >> + >> + [ "x${1-}" != "x--foreground" ] || >> + IM_activate "$BC_FGVT_ACTIVATE" "$BC_LOGFILE" >> + BC_IM_supported=1 >> +fi >> + >> rc=0 >> while [ -n "$chainsteps" ]; do >> name="${chainsteps%%,*}" >> exe="$handlerdir/$name" >> >> - if [ "$name" = noop ]; then >> + if [ "$name" = fg ]; then >> + [ -n "$BC_IM_supported" ] || >> + fatal "bootchain-interactive feature required" >> + assign "callnum" "\${callnum_$name:-0}" >> + chainsteps="${chainsteps#$name}" >> + chainsteps="${chainsteps#,}" >> + >> + if IM_is_active; then >> + message "[$callnum] Step '$name' has ignored" >> + else >> + message "[$callnum] Switching to foreground" >> + >> + callnum=$((1 + $callnum)) >> + assign "callnum_$name" "\$callnum" >> + >> + export stepnum chainsteps callnum_fg prevdir bcretry >> + >> + IM_exec "$0" --foreground >> + fi >> + >> + elif [ "$name" = noop ]; then >> chainsteps="${chainsteps#$name}" >> chainsteps="${chainsteps#,}" >> prevdir= >> -- >> 2.24.1 >> >> _______________________________________________ >> Make-initrd mailing list >> Make-initrd@lists.altlinux.org >> https://lists.altlinux.org/mailman/listinfo/make-initrd >> -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-10-26 20:29 ` Leonid Krivoshein @ 2021-11-06 13:22 ` Alexey Gladkov 2021-11-06 14:57 ` Leonid Krivoshein 0 siblings, 1 reply; 27+ messages in thread From: Alexey Gladkov @ 2021-11-06 13:22 UTC (permalink / raw) To: make-initrd On Tue, Oct 26, 2021 at 11:29:43PM +0300, Leonid Krivoshein wrote: > > 26.10.2021 22:16, Alexey Gladkov пишет: > > On Sun, Oct 24, 2021 at 08:23:23PM +0300, Leonid Krivoshein wrote: > > > Also introduces configuration parameter BC_FGVT_ACTIVATE and new pseudo-step > > > "fg". This is only works together with the "bootchain-interactive" feature > > > included to initramfs. Jointly features "bootchain-core" and "bootchain- > > > interactive" they lay the foundation for building simple text installers > > > in the stage1. > > Напомни пожалуйста, а что мешает демону из бэкграунда писать на указанный > > терминал и читать с него ? > > > > Типа вот так: > > > > exec </dev/tty2 >/dev/tty2 2>&1 > > Там ровно этот код и отрабатывает. Суть усложнения концепции заключалась в > другом: хотелось получить выделенный интерактивный терминал с диалогами, > отличный от tty1, и активировать его, при необходимости, по таймауту или > сразу. Чтобы быстрый процесс загрузки не мелькал перед глазами, если в этом > нет необходимости. И чтобы вывод демонов make-initrd не смешивался на tty1 с > диалогами. Так я же и написал tty2. Вопрос был о том, зачем демону перезапускаться ? Он же может перенаправить свой ввод-вывод на любой терминал. > Переход в интерактивный режим был разделён на две части: IM_exec() и > IM_activate() подобно тому, как приложения запускаются в NIX-системах через > fork() и exec(). Исходно запущенный демон запускает вспомогательный терминал > для отладки и есть код, который ждёт его завершения. Изначально демон был > вообще разделён на две части, перезапускалась только вторая часть. Причина > -- в использовании openvt ... так как другие варианты не подходили. > > Алексей Шепляков предложил тут хорошую идею: использовать для тех же целей > screen или tmux. Собственно задача: восстановить после себя консоль. Вариант > идеальный, но у меня пока не вышло из-за проблем с настройкой utf8 в stage1, > там одно другое цепляет, есть конфликты с plymouth и kbd, который сейчас, > кажется, совсем нерабочий. Кто совсем нерабочий ? > Так что переключение на другие консоли через > openvt -- пока единственная рабочая, но не лучшая реализация, надо обсудить, > как это улучшить, не меняя API. > > > > > > > See README.md for more details. > > > > > > Signed-off-by: Leonid Krivoshein <klark.devel@gmail.com> > > > --- > > > features/bootchain-core/README.md | 16 +++++++ > > > .../data/bin/bootchain-sh-functions | 2 + > > > features/bootchain-core/data/sbin/chaind | 45 ++++++++++++++++--- > > > 3 files changed, 58 insertions(+), 5 deletions(-) > > > > > > diff --git a/features/bootchain-core/README.md b/features/bootchain-core/README.md > > > index ab89181..943b4b0 100644 > > > --- a/features/bootchain-core/README.md > > > +++ b/features/bootchain-core/README.md > > > @@ -50,11 +50,18 @@ us to optimize fill in `initramfs` only which we are need. > > > - Modularity: loading methods are initially separated from the common > > > code and daemon. > > > +- Provides the ability to bring the daemon to the foreground at any time. This > > > + restarts the `chaind` process on a specific terminal, although initially the > > > + daemon is started in the background. > > > - Some steps (actions) are built directly into the code of the main loop > > > of the `chaind` daemon, external scripts are not called to execute them. > > > Such pseudo-steps allow you to control, basically, the internal state of the > > > daemon and should not be taken into account in the boot chain, as if they are > > > hidden. > > > +- Optionally, the daemon can work in conjunction with the `bootchain-interactive` > > > + feature, can move to the foreground and continue working on a specific terminal, > > > + by default, tty2. Jointly features `bootchain-core` and `bootchain-interactive` > > > + they lay the foundation for building simple text installers in stage1. > > > - The `chaind` daemon allows you to overload the chain with a new set of steps, > > > thanks to this, you can change the logic of work "on the fly", support loops > > > and conditional jumps, in text dialogs it is an opportunity to go back. > > > @@ -147,6 +154,11 @@ parameters: > > > should be output in the background. By default, the value is 3, respectively, > > > the log is output to tty3. An empty value allows you to disable log output > > > to any terminal. > > > +- `BC_FGVT_ACTIVATE` - delay in seconds before activating the interactive > > > + terminal, by default tty2 is activated after 2 seconds in debug mode > > > + or after 8 seconds in normal mode. An empty value instructs to activate > > > + the interactive terminal immediately. This configuration option only works > > > + together with the `bootchain-interactive` features included in initramfs. > > > - `BC_LOGFILE` - the full path to the log file or the name of a special device, > > > to which debugging messages will be output. In NATIVE mode, the default value > > > is `/var/log/chaind.log`, in COMPATIBILITY mode with `pipeline` the default > > > @@ -165,6 +177,10 @@ embedded in the code of the main loop of the `boot chain-loop` daemon, do > > > not need additional parameters and should not be taken into account when > > > addressing, as if they are hidden. > > > +- `fg` - provides the transfer of the daemon to interactive mode when building > > > + initramfs with `bootchain-interactive` features. The `bootchain-core` itself > > > + is not interactivity required, but some other steps may need it, such as > > > + `altboot`. > > > - `noop` - does not perform any actions and is designed to pull off the results > > > on the <OUT> of the previous step from the <IN> of the next step, which can > > > be useful, for example, when we don`t want the results of the `waitdev` step > > > diff --git a/features/bootchain-core/data/bin/bootchain-sh-functions b/features/bootchain-core/data/bin/bootchain-sh-functions > > > index 3a9ec6b..743a8f9 100644 > > > --- a/features/bootchain-core/data/bin/bootchain-sh-functions > > > +++ b/features/bootchain-core/data/bin/bootchain-sh-functions > > > @@ -25,6 +25,8 @@ else > > > pipeline_mode= > > > fi > > > +[ -n "$BC_DEBUG" ] && BC_FGVT_ACTIVATE=1 || > > > + BC_FGVT_ACTIVATE="${BC_FGVT_ACTIVATE:-7}" > > > BC_NEXTCHAIN=/.initrd/bootchain/bootchain.next > > > BC_PASSED=/.initrd/bootchain/passed > > > handlerdir=/lib/bootchain > > > diff --git a/features/bootchain-core/data/sbin/chaind b/features/bootchain-core/data/sbin/chaind > > > index e8ce94a..68a1aae 100755 > > > --- a/features/bootchain-core/data/sbin/chaind > > > +++ b/features/bootchain-core/data/sbin/chaind > > > @@ -2,11 +2,12 @@ > > > . bootchain-sh-functions > > > -bcretry=1 > > > +bcretry="${bcretry:-1}" > > > pidfile="/var/run/$PROG.pid" > > > -chainsteps="$BOOTCHAIN" > > > -stepnum=0 > > > -prevdir= > > > +chainsteps="${chainsteps-}" > > > +stepnum="${stepnum:-0}" > > > +prevdir="${prevdir-}" > > > +BC_IM_supported= > > > exit_handler() > > > @@ -25,6 +26,8 @@ debug() > > > } > > > +# Only when daemon started first time > > > +if [ "x${1-}" != "x--foreground" ]; then > > "x" тут признак чего ? не надо этого. > > Признак Debian-way! :-) Ну, я боялся, что в этом месте "--" может быть не > так истолковано. > > > > > [ ! -f "$pidfile" ] || > > > fatal "already running" > > > set_cleanup_handler exit_handler > > > @@ -57,12 +60,44 @@ debug() > > > mountpoint -q -- "$mntdir" || > > > run mount -t tmpfs tmpfs "$mntdir" ||: > > > + chainsteps="$BOOTCHAIN" > > > +fi > > > + > > > +# Check that interactive mode supports > > > +if has_feature bootchain-interactive; then > > > + . interactive-sh-functions > > > + > > > + [ "x${1-}" != "x--foreground" ] || > > > + IM_activate "$BC_FGVT_ACTIVATE" "$BC_LOGFILE" > > > + BC_IM_supported=1 > > > +fi > > > + > > > rc=0 > > > while [ -n "$chainsteps" ]; do > > > name="${chainsteps%%,*}" > > > exe="$handlerdir/$name" > > > - if [ "$name" = noop ]; then > > > + if [ "$name" = fg ]; then > > > + [ -n "$BC_IM_supported" ] || > > > + fatal "bootchain-interactive feature required" > > > + assign "callnum" "\${callnum_$name:-0}" > > > + chainsteps="${chainsteps#$name}" > > > + chainsteps="${chainsteps#,}" > > > + > > > + if IM_is_active; then > > > + message "[$callnum] Step '$name' has ignored" > > > + else > > > + message "[$callnum] Switching to foreground" > > > + > > > + callnum=$((1 + $callnum)) > > > + assign "callnum_$name" "\$callnum" > > > + > > > + export stepnum chainsteps callnum_fg prevdir bcretry > > > + > > > + IM_exec "$0" --foreground > > > + fi > > > + > > > + elif [ "$name" = noop ]; then > > > chainsteps="${chainsteps#$name}" > > > chainsteps="${chainsteps#,}" > > > prevdir= > > > -- > > > 2.24.1 > > > > > > _______________________________________________ > > > Make-initrd mailing list > > > Make-initrd@lists.altlinux.org > > > https://lists.altlinux.org/mailman/listinfo/make-initrd > > > > > -- > Best regards, > Leonid Krivoshein. > > _______________________________________________ > Make-initrd mailing list > Make-initrd@lists.altlinux.org > https://lists.altlinux.org/mailman/listinfo/make-initrd -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 13:22 ` Alexey Gladkov @ 2021-11-06 14:57 ` Leonid Krivoshein 2021-11-06 15:05 ` Антон Мидюков 2021-11-06 15:22 ` Alexey Gladkov 0 siblings, 2 replies; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 14:57 UTC (permalink / raw) To: make-initrd 06.11.2021 16:22, Alexey Gladkov пишет: > On Tue, Oct 26, 2021 at 11:29:43PM +0300, Leonid Krivoshein wrote: >> 26.10.2021 22:16, Alexey Gladkov пишет: >>> On Sun, Oct 24, 2021 at 08:23:23PM +0300, Leonid Krivoshein wrote: >>>> Also introduces configuration parameter BC_FGVT_ACTIVATE and new pseudo-step >>>> "fg". This is only works together with the "bootchain-interactive" feature >>>> included to initramfs. Jointly features "bootchain-core" and "bootchain- >>>> interactive" they lay the foundation for building simple text installers >>>> in the stage1. >>> Напомни пожалуйста, а что мешает демону из бэкграунда писать на указанный >>> терминал и читать с него ? >>> >>> Типа вот так: >>> >>> exec </dev/tty2 >/dev/tty2 2>&1 >> Там ровно этот код и отрабатывает. Суть усложнения концепции заключалась в >> другом: хотелось получить выделенный интерактивный терминал с диалогами, >> отличный от tty1, и активировать его, при необходимости, по таймауту или >> сразу. Чтобы быстрый процесс загрузки не мелькал перед глазами, если в этом >> нет необходимости. И чтобы вывод демонов make-initrd не смешивался на tty1 с >> диалогами. > Так я же и написал tty2. Вопрос был о том, зачем демону перезапускаться ? > Он же может перенаправить свой ввод-вывод на любой терминал. Перенаправить-то он может свой ввод/вывод, но на переднем плане (на tty2) продолжает работать одна часть (перезапущенная), в то время как другая часть следит за истечением таймаута, чтобы переключиться на этот терминал (tty2). Есть условия, при которых мы должны переключаться на tty2 сразу, но данное разделение и перезапуск через openvt позволяют реализовать концепцию отложенного переключения на tty2. Иначе мы должны были бы переключиться туда немедленно и наблюдать все быстро проскакивающие диалоги, например, в течение первых 3-6 секунд загрузки altboot. Данное концептуальное усложнение позволило избавиться от мелькания диалогов на ранней стадии загрузки, когда никакого ввода от пользователя не требуется, и вся загрузка укладывается в отведённые 8 секунд таймаута. >> Переход в интерактивный режим был разделён на две части: IM_exec() и >> IM_activate() подобно тому, как приложения запускаются в NIX-системах через >> fork() и exec(). Исходно запущенный демон запускает вспомогательный терминал >> для отладки и есть код, который ждёт его завершения. Изначально демон был >> вообще разделён на две части, перезапускалась только вторая часть. Причина >> -- в использовании openvt ... так как другие варианты не подходили. >> >> Алексей Шепляков предложил тут хорошую идею: использовать для тех же целей >> screen или tmux. Собственно задача: восстановить после себя консоль. Вариант >> идеальный, но у меня пока не вышло из-за проблем с настройкой utf8 в stage1, >> там одно другое цепляет, есть конфликты с plymouth и kbd, который сейчас, >> кажется, совсем нерабочий. > Кто совсем нерабочий ? make-initrd с фичей kbd у меня не собирается, фейлится. Вообще не проблема руками настроить консоль и utf8. Но проблемы начинаются, когда это начинают делать сразу несколько фич, когда с ресурсами типа tty2 или console начинают работать несколько разных фич, типа plymouth, kbd, rdshell. Надо с этим чего-то придумать на верхнем уровне make-initrd. Некий общий аналог console-sh-functions, через API которого можно будет избежать гонок и конфликтов при инициализации консолей. > >> Так что переключение на другие консоли через >> openvt -- пока единственная рабочая, но не лучшая реализация, надо обсудить, >> как это улучшить, не меняя API. >> >> >>>> See README.md for more details. >>>> >>>> Signed-off-by: Leonid Krivoshein <klark.devel@gmail.com> >>>> --- >>>> features/bootchain-core/README.md | 16 +++++++ >>>> .../data/bin/bootchain-sh-functions | 2 + >>>> features/bootchain-core/data/sbin/chaind | 45 ++++++++++++++++--- >>>> 3 files changed, 58 insertions(+), 5 deletions(-) >>>> >>>> diff --git a/features/bootchain-core/README.md b/features/bootchain-core/README.md >>>> index ab89181..943b4b0 100644 >>>> --- a/features/bootchain-core/README.md >>>> +++ b/features/bootchain-core/README.md >>>> @@ -50,11 +50,18 @@ us to optimize fill in `initramfs` only which we are need. >>>> - Modularity: loading methods are initially separated from the common >>>> code and daemon. >>>> +- Provides the ability to bring the daemon to the foreground at any time. This >>>> + restarts the `chaind` process on a specific terminal, although initially the >>>> + daemon is started in the background. >>>> - Some steps (actions) are built directly into the code of the main loop >>>> of the `chaind` daemon, external scripts are not called to execute them. >>>> Such pseudo-steps allow you to control, basically, the internal state of the >>>> daemon and should not be taken into account in the boot chain, as if they are >>>> hidden. >>>> +- Optionally, the daemon can work in conjunction with the `bootchain-interactive` >>>> + feature, can move to the foreground and continue working on a specific terminal, >>>> + by default, tty2. Jointly features `bootchain-core` and `bootchain-interactive` >>>> + they lay the foundation for building simple text installers in stage1. >>>> - The `chaind` daemon allows you to overload the chain with a new set of steps, >>>> thanks to this, you can change the logic of work "on the fly", support loops >>>> and conditional jumps, in text dialogs it is an opportunity to go back. >>>> @@ -147,6 +154,11 @@ parameters: >>>> should be output in the background. By default, the value is 3, respectively, >>>> the log is output to tty3. An empty value allows you to disable log output >>>> to any terminal. >>>> +- `BC_FGVT_ACTIVATE` - delay in seconds before activating the interactive >>>> + terminal, by default tty2 is activated after 2 seconds in debug mode >>>> + or after 8 seconds in normal mode. An empty value instructs to activate >>>> + the interactive terminal immediately. This configuration option only works >>>> + together with the `bootchain-interactive` features included in initramfs. >>>> - `BC_LOGFILE` - the full path to the log file or the name of a special device, >>>> to which debugging messages will be output. In NATIVE mode, the default value >>>> is `/var/log/chaind.log`, in COMPATIBILITY mode with `pipeline` the default >>>> @@ -165,6 +177,10 @@ embedded in the code of the main loop of the `boot chain-loop` daemon, do >>>> not need additional parameters and should not be taken into account when >>>> addressing, as if they are hidden. >>>> +- `fg` - provides the transfer of the daemon to interactive mode when building >>>> + initramfs with `bootchain-interactive` features. The `bootchain-core` itself >>>> + is not interactivity required, but some other steps may need it, such as >>>> + `altboot`. >>>> - `noop` - does not perform any actions and is designed to pull off the results >>>> on the <OUT> of the previous step from the <IN> of the next step, which can >>>> be useful, for example, when we don`t want the results of the `waitdev` step >>>> diff --git a/features/bootchain-core/data/bin/bootchain-sh-functions b/features/bootchain-core/data/bin/bootchain-sh-functions >>>> index 3a9ec6b..743a8f9 100644 >>>> --- a/features/bootchain-core/data/bin/bootchain-sh-functions >>>> +++ b/features/bootchain-core/data/bin/bootchain-sh-functions >>>> @@ -25,6 +25,8 @@ else >>>> pipeline_mode= >>>> fi >>>> +[ -n "$BC_DEBUG" ] && BC_FGVT_ACTIVATE=1 || >>>> + BC_FGVT_ACTIVATE="${BC_FGVT_ACTIVATE:-7}" >>>> BC_NEXTCHAIN=/.initrd/bootchain/bootchain.next >>>> BC_PASSED=/.initrd/bootchain/passed >>>> handlerdir=/lib/bootchain >>>> diff --git a/features/bootchain-core/data/sbin/chaind b/features/bootchain-core/data/sbin/chaind >>>> index e8ce94a..68a1aae 100755 >>>> --- a/features/bootchain-core/data/sbin/chaind >>>> +++ b/features/bootchain-core/data/sbin/chaind >>>> @@ -2,11 +2,12 @@ >>>> . bootchain-sh-functions >>>> -bcretry=1 >>>> +bcretry="${bcretry:-1}" >>>> pidfile="/var/run/$PROG.pid" >>>> -chainsteps="$BOOTCHAIN" >>>> -stepnum=0 >>>> -prevdir= >>>> +chainsteps="${chainsteps-}" >>>> +stepnum="${stepnum:-0}" >>>> +prevdir="${prevdir-}" >>>> +BC_IM_supported= >>>> exit_handler() >>>> @@ -25,6 +26,8 @@ debug() >>>> } >>>> +# Only when daemon started first time >>>> +if [ "x${1-}" != "x--foreground" ]; then >>> "x" тут признак чего ? не надо этого. >> Признак Debian-way! :-) Ну, я боялся, что в этом месте "--" может быть не >> так истолковано. >> >> >>>> [ ! -f "$pidfile" ] || >>>> fatal "already running" >>>> set_cleanup_handler exit_handler >>>> @@ -57,12 +60,44 @@ debug() >>>> mountpoint -q -- "$mntdir" || >>>> run mount -t tmpfs tmpfs "$mntdir" ||: >>>> + chainsteps="$BOOTCHAIN" >>>> +fi >>>> + >>>> +# Check that interactive mode supports >>>> +if has_feature bootchain-interactive; then >>>> + . interactive-sh-functions >>>> + >>>> + [ "x${1-}" != "x--foreground" ] || >>>> + IM_activate "$BC_FGVT_ACTIVATE" "$BC_LOGFILE" >>>> + BC_IM_supported=1 >>>> +fi >>>> + >>>> rc=0 >>>> while [ -n "$chainsteps" ]; do >>>> name="${chainsteps%%,*}" >>>> exe="$handlerdir/$name" >>>> - if [ "$name" = noop ]; then >>>> + if [ "$name" = fg ]; then >>>> + [ -n "$BC_IM_supported" ] || >>>> + fatal "bootchain-interactive feature required" >>>> + assign "callnum" "\${callnum_$name:-0}" >>>> + chainsteps="${chainsteps#$name}" >>>> + chainsteps="${chainsteps#,}" >>>> + >>>> + if IM_is_active; then >>>> + message "[$callnum] Step '$name' has ignored" >>>> + else >>>> + message "[$callnum] Switching to foreground" >>>> + >>>> + callnum=$((1 + $callnum)) >>>> + assign "callnum_$name" "\$callnum" >>>> + >>>> + export stepnum chainsteps callnum_fg prevdir bcretry >>>> + >>>> + IM_exec "$0" --foreground >>>> + fi >>>> + >>>> + elif [ "$name" = noop ]; then >>>> chainsteps="${chainsteps#$name}" >>>> chainsteps="${chainsteps#,}" >>>> prevdir= >>>> -- >>>> 2.24.1 >>>> >>>> _______________________________________________ >>>> Make-initrd mailing list >>>> Make-initrd@lists.altlinux.org >>>> https://lists.altlinux.org/mailman/listinfo/make-initrd >>>> >> -- >> Best regards, >> Leonid Krivoshein. >> >> _______________________________________________ >> Make-initrd mailing list >> Make-initrd@lists.altlinux.org >> https://lists.altlinux.org/mailman/listinfo/make-initrd -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 14:57 ` Leonid Krivoshein @ 2021-11-06 15:05 ` Антон Мидюков 2021-11-06 15:25 ` Alexey Gladkov 2021-11-06 15:22 ` Alexey Gladkov 1 sibling, 1 reply; 27+ messages in thread From: Антон Мидюков @ 2021-11-06 15:05 UTC (permalink / raw) To: make-initrd 06.11.2021 21:57, Leonid Krivoshein пишет: > [...] >>> Переход в интерактивный режим был разделён на две части: IM_exec() и >>> IM_activate() подобно тому, как приложения запускаются в NIX-системах через >>> fork() и exec(). Исходно запущенный демон запускает вспомогательный терминал >>> для отладки и есть код, который ждёт его завершения. Изначально демон был >>> вообще разделён на две части, перезапускалась только вторая часть. Причина >>> -- в использовании openvt ... так как другие варианты не подходили. >>> >>> Алексей Шепляков предложил тут хорошую идею: использовать для тех же целей >>> screen или tmux. Собственно задача: восстановить после себя консоль. Вариант >>> идеальный, но у меня пока не вышло из-за проблем с настройкой utf8 в stage1, >>> там одно другое цепляет, есть конфликты с plymouth и kbd, который сейчас, >>> кажется, совсем нерабочий. >> Кто совсем нерабочий ? > > make-initrd с фичей kbd у меня не собирается, фейлится. Вообще не проблема руками настроить консоль и utf8. Но проблемы начинаются, когда это начинают делать сразу несколько фич, когда с ресурсами типа tty2 или console начинают работать несколько разных фич, типа plymouth, kbd, rdshell. Надо с этим чего-то придумать на верхнем уровне make-initrd. Некий общий аналог console-sh-functions, через API которого можно будет избежать гонок и конфликтов при инициализации консолей. > Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:05 ` Антон Мидюков @ 2021-11-06 15:25 ` Alexey Gladkov 2021-11-06 15:26 ` Антон Мидюков 0 siblings, 1 reply; 27+ messages in thread From: Alexey Gladkov @ 2021-11-06 15:25 UTC (permalink / raw) To: make-initrd On Sat, Nov 06, 2021 at 10:05:55PM +0700, Антон Мидюков wrote: > 06.11.2021 21:57, Leonid Krivoshein пишет: > > > [...] > >>> Переход в интерактивный режим был разделён на две части: IM_exec() и > >>> IM_activate() подобно тому, как приложения запускаются в NIX-системах через > >>> fork() и exec(). Исходно запущенный демон запускает вспомогательный терминал > >>> для отладки и есть код, который ждёт его завершения. Изначально демон был > >>> вообще разделён на две части, перезапускалась только вторая часть. Причина > >>> -- в использовании openvt ... так как другие варианты не подходили. > >>> > >>> Алексей Шепляков предложил тут хорошую идею: использовать для тех же целей > >>> screen или tmux. Собственно задача: восстановить после себя консоль. Вариант > >>> идеальный, но у меня пока не вышло из-за проблем с настройкой utf8 в stage1, > >>> там одно другое цепляет, есть конфликты с plymouth и kbd, который сейчас, > >>> кажется, совсем нерабочий. > >> Кто совсем нерабочий ? > > > > make-initrd с фичей kbd у меня не собирается, фейлится. Вообще не проблема руками настроить консоль и utf8. Но проблемы начинаются, когда это начинают делать сразу несколько фич, когда с ресурсами типа tty2 или console начинают работать несколько разных фич, типа plymouth, kbd, rdshell. Надо с этим чего-то придумать на верхнем уровне make-initrd. Некий общий аналог console-sh-functions, через API которого можно будет избежать гонок и конфликтов при инициализации консолей. > > > > Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. > Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. > До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была > изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. Правильно ли я понял, что если собрать образ с kbd и pipeline, то pipelined не загрузится ? -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:25 ` Alexey Gladkov @ 2021-11-06 15:26 ` Антон Мидюков 2021-11-06 15:33 ` Alexey Gladkov 0 siblings, 1 reply; 27+ messages in thread From: Антон Мидюков @ 2021-11-06 15:26 UTC (permalink / raw) To: make-initrd 06.11.2021 22:25, Alexey Gladkov пишет: > On Sat, Nov 06, 2021 at 10:05:55PM +0700, Антон Мидюков wrote: >> 06.11.2021 21:57, Leonid Krivoshein пишет: >>> >> [...] >>>>> Переход в интерактивный режим был разделён на две части: IM_exec() и >>>>> IM_activate() подобно тому, как приложения запускаются в NIX-системах через >>>>> fork() и exec(). Исходно запущенный демон запускает вспомогательный терминал >>>>> для отладки и есть код, который ждёт его завершения. Изначально демон был >>>>> вообще разделён на две части, перезапускалась только вторая часть. Причина >>>>> -- в использовании openvt ... так как другие варианты не подходили. >>>>> >>>>> Алексей Шепляков предложил тут хорошую идею: использовать для тех же целей >>>>> screen или tmux. Собственно задача: восстановить после себя консоль. Вариант >>>>> идеальный, но у меня пока не вышло из-за проблем с настройкой utf8 в stage1, >>>>> там одно другое цепляет, есть конфликты с plymouth и kbd, который сейчас, >>>>> кажется, совсем нерабочий. >>>> Кто совсем нерабочий ? >>> >>> make-initrd с фичей kbd у меня не собирается, фейлится. Вообще не проблема руками настроить консоль и utf8. Но проблемы начинаются, когда это начинают делать сразу несколько фич, когда с ресурсами типа tty2 или console начинают работать несколько разных фич, типа plymouth, kbd, rdshell. Надо с этим чего-то придумать на верхнем уровне make-initrd. Некий общий аналог console-sh-functions, через API которого можно будет избежать гонок и конфликтов при инициализации консолей. >>> >> >> Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. >> Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. >> До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была >> изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. > > Правильно ли я понял, что если собрать образ с kbd и pipeline, то > pipelined не загрузится ? > Нет. Нужно с pipeline, kbd и plymouth. -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:26 ` Антон Мидюков @ 2021-11-06 15:33 ` Alexey Gladkov 2021-11-06 15:47 ` Leonid Krivoshein 0 siblings, 1 reply; 27+ messages in thread From: Alexey Gladkov @ 2021-11-06 15:33 UTC (permalink / raw) To: make-initrd On Sat, Nov 06, 2021 at 10:26:52PM +0700, Антон Мидюков wrote: > >> Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. > >> Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. > >> До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была > >> изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. > > > > Правильно ли я понял, что если собрать образ с kbd и pipeline, то > > pipelined не загрузится ? > > > > Нет. Нужно с pipeline, kbd и plymouth. Ясно. Я посмотрю почему такое происходит. -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:33 ` Alexey Gladkov @ 2021-11-06 15:47 ` Leonid Krivoshein 2021-11-06 15:54 ` Антон Мидюков 2021-11-06 15:57 ` Alexey Gladkov 0 siblings, 2 replies; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 15:47 UTC (permalink / raw) To: make-initrd 06.11.2021 18:33, Alexey Gladkov пишет: > On Sat, Nov 06, 2021 at 10:26:52PM +0700, Антон Мидюков wrote: >>>> Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. >>>> Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. >>>> До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была >>>> изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. >>> Правильно ли я понял, что если собрать образ с kbd и pipeline, то >>> pipelined не загрузится ? >>> >> Нет. Нужно с pipeline, kbd и plymouth. > Ясно. Я посмотрю почему такое происходит. У меня другое. После небольшого изменения в m-p (добавил только kbd): diff --git a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain b/features.in/initrd-bootchain/stage1/scripts.d/8 index cef4f98e..3b04264c 100755 --- a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain +++ b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain @@ -25,6 +25,7 @@ FEATURES += bootchain-waitdev FEATURES += bootchain-getimage FEATURES += bootchain-nfs FEATURES += bootchain-cifs +FEATURES += kbd PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules PUT_FILES += /lib/systemd/network/99-default.link EOF ...образы перестали собираться. Ошибка где-то тут: create-initrd: Not found utility: kbd_mode Чуть подробнее: + make-initrd --no-checks AUTODETECT= -v -k 5.14.13-un-def-alt1 [00:00:00] Config file: /etc/initrd.mk GUESS_MODULES = PASSED_GUESS_MODULES = [00:00:00] Generating module dependencies on host ... [00:00:01] Guessing is complete FEATURES : add-modules bootchain-cifs bootchain-getimage bootchain-liverw bootchain-localdev bootchain-nfs bootchain-waitdev cleanup compress kbd rdshell ALL FEATURES : add-modules add-udev-rules bootchain-altboot bootchain-cifs bootchain-core bootchain-getimage bootchain-interactive bootchain-liverw bootchain-local bootchain-localdev bootchain-nfs bootchain-waitdev bootchain-waitnet cleanup compress depmod-image kbd network rdshell system-glibc ALL DISABLED FEATURES : nfsroot pipeline systemd ALL ACTIVE FEATURES : add-modules add-udev-rules bootchain-altboot bootchain-cifs bootchain-core bootchain-getimage bootchain-interactive bootchain-liverw bootchain-local bootchain-localdev bootchain-nfs bootchain-waitdev bootchain-waitnet cleanup compress depmod-image kbd network rdshell system-glibc sed: can't read /etc/sysconfig/consolefont: No such file or directory sed: can't read /etc/sysconfig/keyboard: No such file or directory sed: can't read /etc/sysconfig/i18n: No such file or directory find: '/lib/kbd/keymaps': No such file or directory system-glibc-libnss: Copying files from libnss_files.so* ... system-glibc-libnss: Copying files from libnss_files.so* ... system-glibc-libgcc_s: Copying files from libgcc_s.so* ... system-glibc-libgcc_s: Copying files from libgcc_s.so* ... [00:00:01] Creating initrd image ... mkdir: created directory '/tmp/make-initrd.JMA9Ntkq7/5.14.13-un-def-alt1.initrd/img' create-initrd: Not found utility: kbd_mode make[2]: *** [/usr/share/make-initrd/mk/make-initrd.mk:123: create] Error 1 make[1]: *** [/usr/share/make-initrd/mk/make-initrd.mk:187: process-config] Error 2 make: *** [/usr/share/make-initrd/mk/make-initrd.mk:177: all] Error 1 + fatal 'make-initrd failed' Сборка с фичами kbd, plymouth, bootchain... -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:47 ` Leonid Krivoshein @ 2021-11-06 15:54 ` Антон Мидюков 2021-11-06 16:19 ` Leonid Krivoshein 2021-11-06 15:57 ` Alexey Gladkov 1 sibling, 1 reply; 27+ messages in thread From: Антон Мидюков @ 2021-11-06 15:54 UTC (permalink / raw) To: make-initrd 06.11.2021 22:47, Leonid Krivoshein пишет: > > > 06.11.2021 18:33, Alexey Gladkov пишет: >> On Sat, Nov 06, 2021 at 10:26:52PM +0700, Антон Мидюков wrote: >>>>> Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. >>>>> Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. >>>>> До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была >>>>> изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. >>>> Правильно ли я понял, что если собрать образ с kbd и pipeline, то >>>> pipelined не загрузится ? >>>> >>> Нет. Нужно с pipeline, kbd и plymouth. >> Ясно. Я посмотрю почему такое происходит. > > У меня другое. После небольшого изменения в m-p (добавил только kbd): > > diff --git a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain b/features.in/initrd-bootchain/stage1/scripts.d/8 > index cef4f98e..3b04264c 100755 > --- a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > +++ b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > @@ -25,6 +25,7 @@ FEATURES += bootchain-waitdev > FEATURES += bootchain-getimage > FEATURES += bootchain-nfs > FEATURES += bootchain-cifs > +FEATURES += kbd > PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules > PUT_FILES += /lib/systemd/network/99-default.link > EOF > > ...образы перестали собираться. Ошибка где-то тут: > > create-initrd: Not found utility: kbd_mode > Нет. Тоже самое. После добавления в STAGE1_PACKAGES пакета kbd сборка пойдёт дальше и сломается на остутствии команды dialog. После добавления dialog будет собираться, как без plymouth, так и с plymouth. И образ без plymouth будет успешно грузиться. Патч такой для m-p: diff --git a/features.in/initrd-bootchain/config.mk b/features.in/initrd-bootchain/config.mk index d5bdeda608..775599896b 100644 --- a/features.in/initrd-bootchain/config.mk +++ b/features.in/initrd-bootchain/config.mk @@ -2,6 +2,7 @@ use/initrd-bootchain: use/uuid-iso @$(call add_feature) @$(call set,STAGE1_INITRD,initrd-bootchain) @$(call set,STAGE1_PACKAGES,make-initrd-bootchain) + @$(call set,STAGE1_PACKAGES,kbd dialog) @$(call set,STAGE1_INITRD_TYPEARGS,$(shell echo "root=bootchain bootchain=fg,altboot automatic")) @$(call set,STAGE1_INITRD_BOOTMETHOD,$(shell echo "method:cdrom,uuid:$(UUID_ISO)")) @$(call set,STAGE1_INITRD_STAGE2_OPTION,stagename) diff --git a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain index cef4f98edf..33e754825f 100755 --- a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain +++ b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain @@ -18,7 +18,7 @@ done fatal "kernel modules set not found" cat >> /etc/initrd.mk <<EOF -FEATURES += add-modules compress cleanup rdshell +FEATURES += add-modules compress cleanup rdshell kbd FEATURES += bootchain-localdev FEATURES += bootchain-liverw FEATURES += bootchain-waitdev -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:54 ` Антон Мидюков @ 2021-11-06 16:19 ` Leonid Krivoshein 0 siblings, 0 replies; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 16:19 UTC (permalink / raw) To: make-initrd 06.11.2021 18:54, Антон Мидюков пишет: > 06.11.2021 22:47, Leonid Krivoshein пишет: >> >> 06.11.2021 18:33, Alexey Gladkov пишет: >>> On Sat, Nov 06, 2021 at 10:26:52PM +0700, Антон Мидюков wrote: >>>>>> Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. >>>>>> Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. >>>>>> До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была >>>>>> изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. >>>>> Правильно ли я понял, что если собрать образ с kbd и pipeline, то >>>>> pipelined не загрузится ? >>>>> >>>> Нет. Нужно с pipeline, kbd и plymouth. >>> Ясно. Я посмотрю почему такое происходит. >> У меня другое. После небольшого изменения в m-p (добавил только kbd): >> >> diff --git a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain b/features.in/initrd-bootchain/stage1/scripts.d/8 >> index cef4f98e..3b04264c 100755 >> --- a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >> +++ b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >> @@ -25,6 +25,7 @@ FEATURES += bootchain-waitdev >> FEATURES += bootchain-getimage >> FEATURES += bootchain-nfs >> FEATURES += bootchain-cifs >> +FEATURES += kbd >> PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules >> PUT_FILES += /lib/systemd/network/99-default.link >> EOF >> >> ...образы перестали собираться. Ошибка где-то тут: >> >> create-initrd: Not found utility: kbd_mode >> > Нет. Тоже самое. После добавления в STAGE1_PACKAGES пакета kbd сборка пойдёт дальше и сломается на остутствии команды dialog. > После добавления dialog будет собираться, как без plymouth, так и с plymouth. > И образ без plymouth будет успешно грузиться. > > Патч такой для m-p: > diff --git a/features.in/initrd-bootchain/config.mk b/features.in/initrd-bootchain/config.mk > index d5bdeda608..775599896b 100644 > --- a/features.in/initrd-bootchain/config.mk > +++ b/features.in/initrd-bootchain/config.mk > @@ -2,6 +2,7 @@ use/initrd-bootchain: use/uuid-iso > @$(call add_feature) > @$(call set,STAGE1_INITRD,initrd-bootchain) > @$(call set,STAGE1_PACKAGES,make-initrd-bootchain) > + @$(call set,STAGE1_PACKAGES,kbd dialog) > @$(call set,STAGE1_INITRD_TYPEARGS,$(shell echo "root=bootchain bootchain=fg,altboot automatic")) > @$(call set,STAGE1_INITRD_BOOTMETHOD,$(shell echo "method:cdrom,uuid:$(UUID_ISO)")) > @$(call set,STAGE1_INITRD_STAGE2_OPTION,stagename) > diff --git a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > index cef4f98edf..33e754825f 100755 > --- a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > +++ b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > @@ -18,7 +18,7 @@ done > fatal "kernel modules set not found" > > cat >> /etc/initrd.mk <<EOF > -FEATURES += add-modules compress cleanup rdshell > +FEATURES += add-modules compress cleanup rdshell kbd > FEATURES += bootchain-localdev > FEATURES += bootchain-liverw > FEATURES += bootchain-waitdev Да, так образ собрался, но виснет на polld. В логе /var/log/polld.log только одна надпись: Starting server... До запуска bootchain дело не доходит. Это ALT Rescue с nosplash, но plymouth в stage1 собран. Консоли перед этим успешно инициализировались, по ueventd.log видно, что отработали пост-скрипты. Консоли 0-6 и 12 все инициализированы в Unicode, судя по логу. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:47 ` Leonid Krivoshein 2021-11-06 15:54 ` Антон Мидюков @ 2021-11-06 15:57 ` Alexey Gladkov 2021-11-06 16:06 ` Антон Мидюков 1 sibling, 1 reply; 27+ messages in thread From: Alexey Gladkov @ 2021-11-06 15:57 UTC (permalink / raw) To: make-initrd On Sat, Nov 06, 2021 at 06:47:38PM +0300, Leonid Krivoshein wrote: > > > 06.11.2021 18:33, Alexey Gladkov пишет: > > On Sat, Nov 06, 2021 at 10:26:52PM +0700, Антон Мидюков wrote: > > > > > Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. > > > > > Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. > > > > > До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была > > > > > изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. > > > > Правильно ли я понял, что если собрать образ с kbd и pipeline, то > > > > pipelined не загрузится ? > > > > > > > Нет. Нужно с pipeline, kbd и plymouth. > > Ясно. Я посмотрю почему такое происходит. > > У меня другое. После небольшого изменения в m-p (добавил только kbd): > > diff --git > a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > b/features.in/initrd-bootchain/stage1/scripts.d/8 > index cef4f98e..3b04264c 100755 > --- > a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > +++ > b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > @@ -25,6 +25,7 @@ FEATURES += bootchain-waitdev > FEATURES += bootchain-getimage > FEATURES += bootchain-nfs > FEATURES += bootchain-cifs > +FEATURES += kbd > PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules > PUT_FILES += /lib/systemd/network/99-default.link > EOF > > ...образы перестали собираться. Ошибка где-то тут: > > create-initrd: Not found utility: kbd_mode Это бага. У пакета make-initrd не хватает зависимостей на пакет kbd. > Чуть подробнее: > > + make-initrd --no-checks AUTODETECT= -v -k 5.14.13-un-def-alt1 > [00:00:00] Config file: /etc/initrd.mk > GUESS_MODULES = > PASSED_GUESS_MODULES = > [00:00:00] Generating module dependencies on host ... > [00:00:01] Guessing is complete > FEATURES : add-modules bootchain-cifs bootchain-getimage > bootchain-liverw bootchain-localdev bootchain-nfs bootchain-waitdev cleanup > compress kbd rdshell > ALL FEATURES : add-modules add-udev-rules bootchain-altboot > bootchain-cifs bootchain-core bootchain-getimage bootchain-interactive > bootchain-liverw bootchain-local bootchain-localdev bootchain-nfs > bootchain-waitdev bootchain-waitnet cleanup compress depmod-image kbd > network rdshell system-glibc > ALL DISABLED FEATURES : nfsroot pipeline systemd > ALL ACTIVE FEATURES : add-modules add-udev-rules bootchain-altboot > bootchain-cifs bootchain-core bootchain-getimage bootchain-interactive > bootchain-liverw bootchain-local bootchain-localdev bootchain-nfs > bootchain-waitdev bootchain-waitnet cleanup compress depmod-image kbd > network rdshell system-glibc > sed: can't read /etc/sysconfig/consolefont: No such file or directory > sed: can't read /etc/sysconfig/keyboard: No such file or directory > sed: can't read /etc/sysconfig/i18n: No such file or directory > find: '/lib/kbd/keymaps': No such file or directory > system-glibc-libnss: Copying files from libnss_files.so* ... > system-glibc-libnss: Copying files from libnss_files.so* ... > system-glibc-libgcc_s: Copying files from libgcc_s.so* ... > system-glibc-libgcc_s: Copying files from libgcc_s.so* ... > [00:00:01] Creating initrd image ... > mkdir: created directory > '/tmp/make-initrd.JMA9Ntkq7/5.14.13-un-def-alt1.initrd/img' > create-initrd: Not found utility: kbd_mode > make[2]: *** [/usr/share/make-initrd/mk/make-initrd.mk:123: create] Error 1 > make[1]: *** [/usr/share/make-initrd/mk/make-initrd.mk:187: process-config] > Error 2 > make: *** [/usr/share/make-initrd/mk/make-initrd.mk:177: all] Error 1 > + fatal 'make-initrd failed' > > Сборка с фичами kbd, plymouth, bootchain... > > > -- > Best regards, > Leonid Krivoshein. > > _______________________________________________ > Make-initrd mailing list > Make-initrd@lists.altlinux.org > https://lists.altlinux.org/mailman/listinfo/make-initrd -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:57 ` Alexey Gladkov @ 2021-11-06 16:06 ` Антон Мидюков 2021-11-06 16:25 ` Leonid Krivoshein ` (2 more replies) 0 siblings, 3 replies; 27+ messages in thread From: Антон Мидюков @ 2021-11-06 16:06 UTC (permalink / raw) To: make-initrd 06.11.2021 22:57, Alexey Gladkov пишет: > On Sat, Nov 06, 2021 at 06:47:38PM +0300, Leonid Krivoshein wrote: >> >> >> 06.11.2021 18:33, Alexey Gladkov пишет: >>> On Sat, Nov 06, 2021 at 10:26:52PM +0700, Антон Мидюков wrote: >>>>>> Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. >>>>>> Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. >>>>>> До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была >>>>>> изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. >>>>> Правильно ли я понял, что если собрать образ с kbd и pipeline, то >>>>> pipelined не загрузится ? >>>>> >>>> Нет. Нужно с pipeline, kbd и plymouth. >>> Ясно. Я посмотрю почему такое происходит. >> >> У меня другое. После небольшого изменения в m-p (добавил только kbd): >> >> diff --git >> a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >> b/features.in/initrd-bootchain/stage1/scripts.d/8 >> index cef4f98e..3b04264c 100755 >> --- >> a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >> +++ >> b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >> @@ -25,6 +25,7 @@ FEATURES += bootchain-waitdev >> FEATURES += bootchain-getimage >> FEATURES += bootchain-nfs >> FEATURES += bootchain-cifs >> +FEATURES += kbd >> PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules >> PUT_FILES += /lib/systemd/network/99-default.link >> EOF >> >> ...образы перестали собираться. Ошибка где-то тут: >> >> create-initrd: Not found utility: kbd_mode > > Это бага. У пакета make-initrd не хватает зависимостей на пакет kbd. > А эта фича разве не опциональна? Если не добавить пакет dialog, будет такая ошибка: + dialog --create-rc /etc/dialogrc.tmp /.host/script.sh: line 42: dialog: command not found -- С уважением, Антон Мидюков <antohami@basealt.ru> ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 16:06 ` Антон Мидюков @ 2021-11-06 16:25 ` Leonid Krivoshein 2021-11-06 17:30 ` Leonid Krivoshein 2021-11-06 17:32 ` Alexey Gladkov 2 siblings, 0 replies; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 16:25 UTC (permalink / raw) To: make-initrd 06.11.2021 19:06, Антон Мидюков пишет: > 06.11.2021 22:57, Alexey Gladkov пишет: >> On Sat, Nov 06, 2021 at 06:47:38PM +0300, Leonid Krivoshein wrote: >>> >>> 06.11.2021 18:33, Alexey Gladkov пишет: >>>> On Sat, Nov 06, 2021 at 10:26:52PM +0700, Антон Мидюков wrote: >>>>>>> Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. >>>>>>> Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. >>>>>>> До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была >>>>>>> изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. >>>>>> Правильно ли я понял, что если собрать образ с kbd и pipeline, то >>>>>> pipelined не загрузится ? >>>>>> >>>>> Нет. Нужно с pipeline, kbd и plymouth. >>>> Ясно. Я посмотрю почему такое происходит. >>> У меня другое. После небольшого изменения в m-p (добавил только kbd): >>> >>> diff --git >>> a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >>> b/features.in/initrd-bootchain/stage1/scripts.d/8 >>> index cef4f98e..3b04264c 100755 >>> --- >>> a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >>> +++ >>> b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >>> @@ -25,6 +25,7 @@ FEATURES += bootchain-waitdev >>> FEATURES += bootchain-getimage >>> FEATURES += bootchain-nfs >>> FEATURES += bootchain-cifs >>> +FEATURES += kbd >>> PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules >>> PUT_FILES += /lib/systemd/network/99-default.link >>> EOF >>> >>> ...образы перестали собираться. Ошибка где-то тут: >>> >>> create-initrd: Not found utility: kbd_mode >> Это бага. У пакета make-initrd не хватает зависимостей на пакет kbd. >> > А эта фича разве не опциональна? Все фичи опциональны. :-) > Если не добавить пакет dialog, будет такая ошибка: > > + dialog --create-rc /etc/dialogrc.tmp > /.host/script.sh: line 42: dialog: command not found Это уже ошибка в фиче initrd-bootchain в m-p. Видимо в stage1 до создания initrd должны попасть все возможные программы и модули, которые используются всеми фичами bootchain. Можно смотреть все конфиги на эту тему: grep _PROGS bootchain-*/config.mk : bootchain-altboot/config.mk:BOOTCHAIN_ALTBOOT_PROGS = curl losetup sync bootchain-cifs/config.mk:BOOTCHAIN_CIFS_PROGS = mount.cifs resolve bootchain-getimage/config.mk:BOOTCHAIN_GETIMAGE_PROGS = wget bootchain-interactive/config.mk:BOOTCHAIN_INTERACTIVE_PROGS = chvt dialog less openvt pv bootchain-liverw/config.mk:BOOTCHAIN_LIVERW_PROGS = addpart sfdisk mke2fs e2label wipefs bootchain-nfs/config.mk:BOOTCHAIN_NFS_PROGS = mount.nfs ss less уйдёт из этого списка при апстриме, он был полезен для отладки, в образе всегда есть vi. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 16:06 ` Антон Мидюков 2021-11-06 16:25 ` Leonid Krivoshein @ 2021-11-06 17:30 ` Leonid Krivoshein 2021-11-06 18:16 ` Leonid Krivoshein 2021-11-06 17:32 ` Alexey Gladkov 2 siblings, 1 reply; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 17:30 UTC (permalink / raw) To: make-initrd 06.11.2021 19:06, Антон Мидюков пишет: > 06.11.2021 22:57, Alexey Gladkov пишет: >> On Sat, Nov 06, 2021 at 06:47:38PM +0300, Leonid Krivoshein wrote: >>> >>> 06.11.2021 18:33, Alexey Gladkov пишет: >>>> On Sat, Nov 06, 2021 at 10:26:52PM +0700, Антон Мидюков wrote: >>>>>>> Для того, чтобы собрать с kbd, нужно в STAGE1 добавить пакеты kbd и dialog. >>>>>>> Проблема в другом. При сборке initrd с plymouth и kbd не запускается chaind. >>>>>>> До его запуска процесс загрузки не доходит. Та же проблема и с pipeline была >>>>>>> изначально, когда я делал первую попытку сборки iso с pipeline вместо propagator. >>>>>> Правильно ли я понял, что если собрать образ с kbd и pipeline, то >>>>>> pipelined не загрузится ? >>>>>> >>>>> Нет. Нужно с pipeline, kbd и plymouth. >>>> Ясно. Я посмотрю почему такое происходит. >>> У меня другое. После небольшого изменения в m-p (добавил только kbd): >>> >>> diff --git >>> a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >>> b/features.in/initrd-bootchain/stage1/scripts.d/8 >>> index cef4f98e..3b04264c 100755 >>> --- >>> a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >>> +++ >>> b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain >>> @@ -25,6 +25,7 @@ FEATURES += bootchain-waitdev >>> FEATURES += bootchain-getimage >>> FEATURES += bootchain-nfs >>> FEATURES += bootchain-cifs >>> +FEATURES += kbd >>> PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules >>> PUT_FILES += /lib/systemd/network/99-default.link >>> EOF >>> >>> ...образы перестали собираться. Ошибка где-то тут: >>> >>> create-initrd: Not found utility: kbd_mode >> Это бага. У пакета make-initrd не хватает зависимостей на пакет kbd. >> > А эта фича разве не опциональна? > > Если не добавить пакет dialog, будет такая ошибка: > > + dialog --create-rc /etc/dialogrc.tmp > /.host/script.sh: line 42: dialog: command not found Насчёт m-p я был неправ. Ошибка при вычислении зависимостей в make-initrd. Возможно, при добавлении фичи kbd, bootchain вообще не попадает в образ initrd. У bootchain есть зависимость на другие пакеты bootchain-*, а у них -- на все необходимые пакеты, включая dialog. Следовательно в фиче initrd-bootchain m-p достаточно прописать @$(call set,STAGE1_PACKAGES,make-initrd-bootchain) для попадания в initrd всех необходимых пакетов. Но при добавлении kbd этого почему-то не происходит. А вот о модулях ядра видимо надо заботится в фиче m-p, т.к. нельзя поставить на них явную зависимость в пакете. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 17:30 ` Leonid Krivoshein @ 2021-11-06 18:16 ` Leonid Krivoshein 0 siblings, 0 replies; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 18:16 UTC (permalink / raw) To: make-initrd 06.11.2021 20:30, Leonid Krivoshein пишет: > Ошибка при вычислении зависимостей в make-initrd. Возможно, при > добавлении фичи kbd, bootchain вообще не попадает в образ initrd. При внимательном рассмотрении так и есть. При сборке с фичей kbd, в образ initrd вообще никаких фич не попадает. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 16:06 ` Антон Мидюков 2021-11-06 16:25 ` Leonid Krivoshein 2021-11-06 17:30 ` Leonid Krivoshein @ 2021-11-06 17:32 ` Alexey Gladkov 2 siblings, 0 replies; 27+ messages in thread From: Alexey Gladkov @ 2021-11-06 17:32 UTC (permalink / raw) To: make-initrd On Sat, Nov 06, 2021 at 11:06:43PM +0700, Антон Мидюков wrote: > >> a/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > >> +++ > >> b/features.in/initrd-bootchain/stage1/scripts.d/80-make-initrd-for-bootchain > >> @@ -25,6 +25,7 @@ FEATURES += bootchain-waitdev > >> FEATURES += bootchain-getimage > >> FEATURES += bootchain-nfs > >> FEATURES += bootchain-cifs > >> +FEATURES += kbd > >> PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules > >> PUT_FILES += /lib/systemd/network/99-default.link > >> EOF > >> > >> ...образы перестали собираться. Ошибка где-то тут: > >> > >> create-initrd: Not found utility: kbd_mode > > > > Это бага. У пакета make-initrd не хватает зависимостей на пакет kbd. > > > > А эта фича разве не опциональна? Она в составе make-initrd. > Если не добавить пакет dialog, будет такая ошибка: > > + dialog --create-rc /etc/dialogrc.tmp > /.host/script.sh: line 42: dialog: command not found Фича kbd не использует dialog. -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 14:57 ` Leonid Krivoshein 2021-11-06 15:05 ` Антон Мидюков @ 2021-11-06 15:22 ` Alexey Gladkov 2021-11-06 16:52 ` Leonid Krivoshein 1 sibling, 1 reply; 27+ messages in thread From: Alexey Gladkov @ 2021-11-06 15:22 UTC (permalink / raw) To: make-initrd On Sat, Nov 06, 2021 at 05:57:44PM +0300, Leonid Krivoshein wrote: > > Так я же и написал tty2. Вопрос был о том, зачем демону перезапускаться ? > > Он же может перенаправить свой ввод-вывод на любой терминал. > > Перенаправить-то он может свой ввод/вывод, но на переднем плане (на tty2) > продолжает работать одна часть (перезапущенная), в то время как другая часть > следит за истечением таймаута, чтобы переключиться на этот терминал (tty2). > Есть условия, при которых мы должны переключаться на tty2 сразу, но данное > разделение и перезапуск через openvt позволяют реализовать концепцию > отложенного переключения на tty2. Иначе мы должны были бы переключиться туда > немедленно и наблюдать все быстро проскакивающие диалоги, например, в > течение первых 3-6 секунд загрузки altboot. Данное концептуальное усложнение > позволило избавиться от мелькания диалогов на ранней стадии загрузки, когда > никакого ввода от пользователя не требуется, и вся загрузка укладывается в > отведённые 8 секунд таймаута. Я с трудом понимаю. > > > Алексей Шепляков предложил тут хорошую идею: использовать для тех же целей > > > screen или tmux. Собственно задача: восстановить после себя консоль. Вариант > > > идеальный, но у меня пока не вышло из-за проблем с настройкой utf8 в stage1, > > > там одно другое цепляет, есть конфликты с plymouth и kbd, который сейчас, > > > кажется, совсем нерабочий. > > Кто совсем нерабочий ? > > make-initrd с фичей kbd у меня не собирается, фейлится. # grep kbd /var/lib/initrd/`uname -r`.initrd/features kbd Эта фича срабатывает в момент инициализации терминалов. > Вообще не проблема руками настроить консоль и utf8. Но проблемы > начинаются, когда это начинают делать сразу несколько фич, когда с > ресурсами типа tty2 или console начинают работать несколько разных фич, > типа plymouth, kbd, rdshell. Я не вижу проблем с kbd+rdshell. Насчёт plymouth не уверен, но на мой взгляд не должно быть проблем. > Надо с этим чего-то придумать на верхнем уровне make-initrd. Некий общий > аналог console-sh-functions, через API которого можно будет избежать > гонок и конфликтов при инициализации консолей. Я пока не понял сути проблемы. -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 15:22 ` Alexey Gladkov @ 2021-11-06 16:52 ` Leonid Krivoshein 2021-11-06 17:41 ` Alexey Gladkov 0 siblings, 1 reply; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 16:52 UTC (permalink / raw) To: make-initrd 06.11.2021 18:22, Alexey Gladkov пишет: > On Sat, Nov 06, 2021 at 05:57:44PM +0300, Leonid Krivoshein wrote: >>> Так я же и написал tty2. Вопрос был о том, зачем демону перезапускаться ? >>> Он же может перенаправить свой ввод-вывод на любой терминал. >> Перенаправить-то он может свой ввод/вывод, но на переднем плане (на tty2) >> продолжает работать одна часть (перезапущенная), в то время как другая часть >> следит за истечением таймаута, чтобы переключиться на этот терминал (tty2). >> Есть условия, при которых мы должны переключаться на tty2 сразу, но данное >> разделение и перезапуск через openvt позволяют реализовать концепцию >> отложенного переключения на tty2. Иначе мы должны были бы переключиться туда >> немедленно и наблюдать все быстро проскакивающие диалоги, например, в >> течение первых 3-6 секунд загрузки altboot. Данное концептуальное усложнение >> позволило избавиться от мелькания диалогов на ранней стадии загрузки, когда >> никакого ввода от пользователя не требуется, и вся загрузка укладывается в >> отведённые 8 секунд таймаута. > Я с трудом понимаю. > Мы сейчас работаем с третьей реализацией bootchain. Первую без диалогов ты видел и комментировал. Во второй было всё просто: один монолитный пакет, переключение на tty2 и обратно через chvt с перенаправлением в/в. В ней была отмечена проблема быстрого мелькания диалогов, также описанная в этом баге: #30472. Разделение на процессы, перезапуск через openvt сделаны для решения этой проблемы, а также для очистки за собой этой интерактивной консоли, для работы с ещё одной служебной консолью, на которую выводится журнал отладки. Т.е. первый процесс контролирует или ждёт остальные запущенные процессы. Уже не помню всех шагов своих экспериментов, но кажется, если использовать tty2 без openvt -w ..., не получалось реализовать вариант, при котором демон отрабатывает на tty2 и удаляет за собой всё, не только чистит экран, даже в случае fatal(). А запуск через openvt подразумевал перезапуск части процесса. >>>> Алексей Шепляков предложил тут хорошую идею: использовать для тех же целей >>>> screen или tmux. Собственно задача: восстановить после себя консоль. Вариант >>>> идеальный, но у меня пока не вышло из-за проблем с настройкой utf8 в stage1, >>>> там одно другое цепляет, есть конфликты с plymouth и kbd, который сейчас, >>>> кажется, совсем нерабочий. >>> Кто совсем нерабочий ? >> make-initrd с фичей kbd у меня не собирается, фейлится. > # grep kbd /var/lib/initrd/`uname -r`.initrd/features > kbd > > Эта фича срабатывает в момент инициализации терминалов. > >> Вообще не проблема руками настроить консоль и utf8. Но проблемы >> начинаются, когда это начинают делать сразу несколько фич, когда с >> ресурсами типа tty2 или console начинают работать несколько разных фич, >> типа plymouth, kbd, rdshell. > Я не вижу проблем с kbd+rdshell. Насчёт plymouth не уверен, но на мой > взгляд не должно быть проблем. > >> Надо с этим чего-то придумать на верхнем уровне make-initrd. Некий общий >> аналог console-sh-functions, через API которого можно будет избежать >> гонок и конфликтов при инициализации консолей. > Я пока не понял сути проблемы. Для апстрима bootchain/altboot проблемы нет. Даже не идеальную bootchain-interactive можно заппстримить сейчас "как есть", а потом её улучшать, переводить с openvt на screen или tmux. Проблема, если мы хотим превратить bootchain-interactive в interactive/pseudogui или как-то ещё, сделав независимой от bootchain, получить фичу для работы с диалогами, которую смогут использовать и другие фичи, и которая сама будет нормально взаимодействовать с такими фичами, использующими (ломающими) консоль, как plymouth или kbd. Вот это уже твой уровень: надо подумать, как в make-initrd можно обеспечить совместную работу: 1) Нескольким фичам с любым произвольным ttyN; 2) Нескольким фичам с неким диалоговым TTY. Мы это хотели обсудить очно... -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 16:52 ` Leonid Krivoshein @ 2021-11-06 17:41 ` Alexey Gladkov 2021-11-06 18:03 ` Leonid Krivoshein 0 siblings, 1 reply; 27+ messages in thread From: Alexey Gladkov @ 2021-11-06 17:41 UTC (permalink / raw) To: make-initrd On Sat, Nov 06, 2021 at 07:52:52PM +0300, Leonid Krivoshein wrote: > Для апстрима bootchain/altboot проблемы нет. Даже не идеальную > bootchain-interactive можно заппстримить сейчас "как есть", а потом её > улучшать, переводить с openvt на screen или tmux. У меня, кстати, на компе всё в tmux и я умею сессии менеджить. -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 17:41 ` Alexey Gladkov @ 2021-11-06 18:03 ` Leonid Krivoshein 2021-11-06 18:29 ` Alexey Gladkov 0 siblings, 1 reply; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 18:03 UTC (permalink / raw) To: make-initrd 06.11.2021 20:41, Alexey Gladkov пишет: > On Sat, Nov 06, 2021 at 07:52:52PM +0300, Leonid Krivoshein wrote: >> Для апстрима bootchain/altboot проблемы нет. Даже не идеальную >> bootchain-interactive можно заппстримить сейчас "как есть", а потом её >> улучшать, переводить с openvt на screen или tmux. > У меня, кстати, на компе всё в tmux и я умею сессии менеджить. screen и tmux я пробовал запихнуть в initrd, но они там не хотят работать без инициализированной utf8-консоли. С kbd сам видишь, какая свистопляска сейчас. Главное "безобразие", которое нужно забороть -- инициализация консолей разными фичами, блокировка консолей и нормальная работа с plymouth, а то если инициализация консолей начинается до plymouth, всё портится при загрузке DRM-модулей в некоторых конфигурациях. С tmux или screen для диалогов можно было бы реализовать более простой вариант с открепляемыми терминалами (PTY). Тогда всем хватило бы /dev/console. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 18:03 ` Leonid Krivoshein @ 2021-11-06 18:29 ` Alexey Gladkov 2021-11-06 19:32 ` Leonid Krivoshein 2021-11-06 19:54 ` Leonid Krivoshein 0 siblings, 2 replies; 27+ messages in thread From: Alexey Gladkov @ 2021-11-06 18:29 UTC (permalink / raw) To: make-initrd On Sat, Nov 06, 2021 at 09:03:49PM +0300, Leonid Krivoshein wrote: > > 06.11.2021 20:41, Alexey Gladkov пишет: > > On Sat, Nov 06, 2021 at 07:52:52PM +0300, Leonid Krivoshein wrote: > > > Для апстрима bootchain/altboot проблемы нет. Даже не идеальную > > > bootchain-interactive можно заппстримить сейчас "как есть", а потом её > > > улучшать, переводить с openvt на screen или tmux. > > У меня, кстати, на компе всё в tmux и я умею сессии менеджить. > > screen и tmux я пробовал запихнуть в initrd, но они там не хотят работать > без инициализированной utf8-консоли. С kbd сам видишь, какая свистопляска > сейчас. Главное "безобразие", которое нужно забороть -- инициализация > консолей разными фичами, блокировка консолей и нормальная работа с plymouth, > а то если инициализация консолей начинается до plymouth, всё портится при > загрузке DRM-модулей в некоторых конфигурациях. Когда загружаются drm, то kbd переинициализирует терминалы. Я не вижу смысла использовать kbd в случае bootchain. Эта фича всё-таки немного не для этого. Настроить unicode для запуска tmux можно и самостоятельно. > С tmux или screen для диалогов можно было бы реализовать более простой > вариант с открепляемыми терминалами (PTY). Тогда всем хватило бы > /dev/console. Я и хочу использовать /dev/console. Мне не очень нравится идея использовать другие терминалы. -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 18:29 ` Alexey Gladkov @ 2021-11-06 19:32 ` Leonid Krivoshein 2021-11-06 19:54 ` Leonid Krivoshein 1 sibling, 0 replies; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 19:32 UTC (permalink / raw) To: make-initrd 06.11.2021 21:29, Alexey Gladkov пишет: > On Sat, Nov 06, 2021 at 09:03:49PM +0300, Leonid Krivoshein wrote: >> 06.11.2021 20:41, Alexey Gladkov пишет: >>> On Sat, Nov 06, 2021 at 07:52:52PM +0300, Leonid Krivoshein wrote: >>>> Для апстрима bootchain/altboot проблемы нет. Даже не идеальную >>>> bootchain-interactive можно заппстримить сейчас "как есть", а потом её >>>> улучшать, переводить с openvt на screen или tmux. >>> У меня, кстати, на компе всё в tmux и я умею сессии менеджить. >> screen и tmux я пробовал запихнуть в initrd, но они там не хотят работать >> без инициализированной utf8-консоли. С kbd сам видишь, какая свистопляска >> сейчас. Главное "безобразие", которое нужно забороть -- инициализация >> консолей разными фичами, блокировка консолей и нормальная работа с plymouth, >> а то если инициализация консолей начинается до plymouth, всё портится при >> загрузке DRM-модулей в некоторых конфигурациях. > Когда загружаются drm, то kbd переинициализирует терминалы. > > Я не вижу смысла использовать kbd в случае bootchain. Эта фича всё-таки > немного не для этого. Настроить unicode для запуска tmux можно и > самостоятельно. > >> С tmux или screen для диалогов можно было бы реализовать более простой >> вариант с открепляемыми терминалами (PTY). Тогда всем хватило бы >> /dev/console. > Я и хочу использовать /dev/console. Мне не очень нравится идея > использовать другие терминалы. Как мы тогда поступим? 1. Переделывать bootchain-interactive на использование tmux? Или апстримить "как есть", а потом уже переделывать? В принципе, даже на самом странном железе удалось добиться работоспособности с TTY'ами, см. баг #41097. 2. Как собирать bootchain-interactive? В одном задании с make-initrd, промежуточную версию которого ты одобришь? 3. Ничего, что фича bootchain-interactive пока не может использоваться совместно разными фичами? Просто, я озвучил, но не смогу сам решить эту проблему. 4. Ещё есть вариант: не апстримить пока bootchain-interactive до понимания того, как с ней взаимодействуют другие фичи -- она вклинилась, поскольку bootchain-core работает с ней совместно и использует некоторые её параметры загрузки. 5. Вопрос с разделением и перезапуском процесса для реализации интерактивности считаем решённым, или есть по нему ещё сомнения? Если делать через tmux, на мой взгляд, всё равно придётся делить и перезапускать. 6. Есть ещё оставшийся за кадром вопрос про специальный fatal() для bootchain и pipeline. В идеале перехватить бы внезапное завершение этих демонов каким-нибудь внятным диалогом. Речь о том, что есть у make-initrd глобальный rootdelay=180 сек., но его нет смысла ждать при методах загрузки pipeline или bootchain. Если демон зафейлился раньше, не нужно дожидаться rootdelay. Но я пока ничего не менял в коде для этого. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 18:29 ` Alexey Gladkov 2021-11-06 19:32 ` Leonid Krivoshein @ 2021-11-06 19:54 ` Leonid Krivoshein 2021-11-08 13:09 ` Alexey Gladkov 1 sibling, 1 reply; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-06 19:54 UTC (permalink / raw) To: make-initrd 06.11.2021 21:29, Alexey Gladkov пишет: > On Sat, Nov 06, 2021 at 09:03:49PM +0300, Leonid Krivoshein wrote: >> 06.11.2021 20:41, Alexey Gladkov пишет: >>> On Sat, Nov 06, 2021 at 07:52:52PM +0300, Leonid Krivoshein wrote: >>>> Для апстрима bootchain/altboot проблемы нет. Даже не идеальную >>>> bootchain-interactive можно заппстримить сейчас "как есть", а потом её >>>> улучшать, переводить с openvt на screen или tmux. >>> У меня, кстати, на компе всё в tmux и я умею сессии менеджить. >> screen и tmux я пробовал запихнуть в initrd, но они там не хотят работать >> без инициализированной utf8-консоли. С kbd сам видишь, какая свистопляска >> сейчас. Главное "безобразие", которое нужно забороть -- инициализация >> консолей разными фичами, блокировка консолей и нормальная работа с plymouth, >> а то если инициализация консолей начинается до plymouth, всё портится при >> загрузке DRM-модулей в некоторых конфигурациях. > Когда загружаются drm, то kbd переинициализирует терминалы. > > Я не вижу смысла использовать kbd в случае bootchain. Эта фича всё-таки > немного не для этого. Настроить unicode для запуска tmux можно и > самостоятельно. Если мы вдруг захотим прикрутить сюда локализацию диалогов или сделать на базе bootchain простой текстовый инсталлятор, то с фича kbd уже реализует необходимый функционал. В случае tmux у меня всё же остаётся вопрос о том, как правильно инициализировать консоль в фичах, так как сейчас всё очень сильно зависит от набора фич, попадающих в initrd. >> С tmux или screen для диалогов можно было бы реализовать более простой >> вариант с открепляемыми терминалами (PTY). Тогда всем хватило бы >> /dev/console. > Я и хочу использовать /dev/console. Мне не очень нравится идея > использовать другие терминалы. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-06 19:54 ` Leonid Krivoshein @ 2021-11-08 13:09 ` Alexey Gladkov 2021-11-08 16:08 ` Leonid Krivoshein 0 siblings, 1 reply; 27+ messages in thread From: Alexey Gladkov @ 2021-11-08 13:09 UTC (permalink / raw) To: make-initrd On Sat, Nov 06, 2021 at 10:54:13PM +0300, Leonid Krivoshein wrote: > > Когда загружаются drm, то kbd переинициализирует терминалы. > > > > Я не вижу смысла использовать kbd в случае bootchain. Эта фича всё-таки > > немного не для этого. Настроить unicode для запуска tmux можно и > > самостоятельно. > > Если мы вдруг захотим прикрутить сюда локализацию диалогов или сделать на > базе bootchain простой текстовый инсталлятор, то с фича kbd уже реализует > необходимый функционал. Она реализует функционал для использования в живой системе. Сейчас нет механизма, чтобы понять консоль проинициализирована. Реализовать такой механизм будет сложно. > В случае tmux у меня всё же остаётся вопрос о том, как правильно > инициализировать консоль в фичах Почему ты используешь множественное число ? Насколько я знаю сейчас что-то делать с консолью нужно только bootchain. Остальные фичи работаеют без дополнительной настройки с /dev/console. Причём даже внутри bootchain далеко не всему нужна как-то специально настроенная консоль, а только altboot. Остальные шаги не требуют консоли. > так как сейчас всё очень сильно зависит от > набора фич, попадающих в initrd. Каких фич ? -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-08 13:09 ` Alexey Gladkov @ 2021-11-08 16:08 ` Leonid Krivoshein 2021-11-09 12:17 ` Alexey Gladkov 0 siblings, 1 reply; 27+ messages in thread From: Leonid Krivoshein @ 2021-11-08 16:08 UTC (permalink / raw) To: make-initrd Привет! 08.11.2021 16:09, Alexey Gladkov пишет: > On Sat, Nov 06, 2021 at 10:54:13PM +0300, Leonid Krivoshein wrote: >>> Когда загружаются drm, то kbd переинициализирует терминалы. >>> >>> Я не вижу смысла использовать kbd в случае bootchain. Эта фича всё-таки >>> немного не для этого. Настроить unicode для запуска tmux можно и >>> самостоятельно. >> Если мы вдруг захотим прикрутить сюда локализацию диалогов или сделать на >> базе bootchain простой текстовый инсталлятор, то с фича kbd уже реализует >> необходимый функционал. > Она реализует функционал для использования в живой системе. Сейчас нет > механизма, чтобы понять консоль проинициализирована. Реализовать такой > механизм будет сложно. Понятно. >> В случае tmux у меня всё же остаётся вопрос о том, как правильно >> инициализировать консоль в фичах > Почему ты используешь множественное число ? Насколько я знаю сейчас что-то > делать с консолью нужно только bootchain. В этой рассылке ранее запрашивалась фича pseudo-gui. Работа с диалогами могла бы быть полезной не только altboot. Сейчас TUI используется только altboot. Но, если какая-нибудь другая фича захочет вывести диалог, то как ей это лучше сделать? Тут два концептуальных момента: 1. Хотелось бы сделать фичу interactive пригодной для всего, что работает в initrd, а не только в altboot. 2. Как обратиться к API "прозрачно", без дополнительной артподготовки. Например, понадобилось ввести PIN-код, обратились к API для вывода диалога ввода -- тут работа демона должна заблокироваться, пока нужные данные не будут получены. На каком терминале это должно происходить? Должен ли он переключаться автоматически на передний план, если никаких данных от пользователя не ожидается, а выводятся только информационные сообщения? Диалоги от разных фич не должны перемешиваться и наезжать друг на друга. Было бы хорошо, если бы нам удалось сделать более общую фичу. Но для апстрима bootchain это сейчас неактуально. > Остальные фичи работаеют без > дополнительной настройки с /dev/console. > > Причём даже внутри bootchain далеко не всему нужна как-то специально > настроенная консоль, а только altboot. Остальные шаги не требуют консоли. Совершенно верно. Как-то уже обсуждали, что вариант использования диалогов в рамках bootchain тоже не стоит снимать со счетов. Фича bootchain-waitdev демонстрирует комбинацию event-driven подхода и пошаговой работы в рамках концепций bootchain. То есть, если кому-то нужны диалоги, их можно засунуть в bootchain и таким образом тоже снять потребность в общей фиче pseudo-gui. Почему это вопрос лучше решить именно тебе: даже сейчас в условиях единственной /dev/console возникает борьба между rdshell и любыми диалогами, а ещё сюда демоны выводят то, что запущено, что остановлено. Запрос PIN-кода в некоторых фичах, диалоги вообще должны следовать какой-то общей концепции во избежании борьбы за ввод. Нужно централизованно решить вопрос с тем, на каком PTY (TTY) будут возникать такие диалоги, как избежать лишнего мелькания. >> так как сейчас всё очень сильно зависит от >> набора фич, попадающих в initrd. > Каких фич ? plymouth, kbd, rdshell -- в первую очередь. -- Best regards, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground 2021-11-08 16:08 ` Leonid Krivoshein @ 2021-11-09 12:17 ` Alexey Gladkov 0 siblings, 0 replies; 27+ messages in thread From: Alexey Gladkov @ 2021-11-09 12:17 UTC (permalink / raw) To: make-initrd On Mon, Nov 08, 2021 at 07:08:13PM +0300, Leonid Krivoshein wrote: > Привет! > > > 08.11.2021 16:09, Alexey Gladkov пишет: > > On Sat, Nov 06, 2021 at 10:54:13PM +0300, Leonid Krivoshein wrote: > > > > Когда загружаются drm, то kbd переинициализирует терминалы. > > > > > > > > Я не вижу смысла использовать kbd в случае bootchain. Эта фича всё-таки > > > > немного не для этого. Настроить unicode для запуска tmux можно и > > > > самостоятельно. > > > Если мы вдруг захотим прикрутить сюда локализацию диалогов или сделать на > > > базе bootchain простой текстовый инсталлятор, то с фича kbd уже реализует > > > необходимый функционал. > > Она реализует функционал для использования в живой системе. Сейчас нет > > механизма, чтобы понять консоль проинициализирована. Реализовать такой > > механизм будет сложно. > > Понятно. > > > > > В случае tmux у меня всё же остаётся вопрос о том, как правильно > > > инициализировать консоль в фичах > > Почему ты используешь множественное число ? Насколько я знаю сейчас что-то > > делать с консолью нужно только bootchain. > > В этой рассылке ранее запрашивалась фича pseudo-gui. Работа с диалогами > могла бы быть полезной не только altboot. Сейчас TUI используется только > altboot. Но, если какая-нибудь другая фича захочет вывести диалог, то как ей > это лучше сделать? Тут два концептуальных момента: > > 1. Хотелось бы сделать фичу interactive пригодной для всего, что работает в > initrd, а не только в altboot. > 2. Как обратиться к API "прозрачно", без дополнительной артподготовки. > Например, понадобилось ввести PIN-код, обратились к API для вывода диалога > ввода -- тут работа демона должна заблокироваться, пока нужные данные не > будут получены. На каком терминале это должно происходить? Должен ли он > переключаться автоматически на передний план, если никаких данных от > пользователя не ожидается, а выводятся только информационные сообщения? > Диалоги от разных фич не должны перемешиваться и наезжать друг на друга. > > Было бы хорошо, если бы нам удалось сделать более общую фичу. Но для > апстрима bootchain это сейчас неактуально. > > > > Остальные фичи работаеют без > > дополнительной настройки с /dev/console. > > > > Причём даже внутри bootchain далеко не всему нужна как-то специально > > настроенная консоль, а только altboot. Остальные шаги не требуют консоли. > > Совершенно верно. > > Как-то уже обсуждали, что вариант использования диалогов в рамках bootchain > тоже не стоит снимать со счетов. Фича bootchain-waitdev демонстрирует > комбинацию event-driven подхода и пошаговой работы в рамках концепций > bootchain. То есть, если кому-то нужны диалоги, их можно засунуть в > bootchain и таким образом тоже снять потребность в общей фиче pseudo-gui. > > Почему это вопрос лучше решить именно тебе: даже сейчас в условиях > единственной /dev/console возникает борьба между rdshell и любыми диалогами, > а ещё сюда демоны выводят то, что запущено, что остановлено. Запрос PIN-кода > в некоторых фичах, диалоги вообще должны следовать какой-то общей концепции > во избежании борьбы за ввод. Нужно централизованно решить вопрос с тем, на > каком PTY (TTY) будут возникать такие диалоги, как избежать лишнего > мелькания. Для решения этой задачи нужно довольно сильно меня архитектуру. Я пока не вижу хорошего решения для этого. Не стоит ждать быстрого решения. Сейчас борьба за консоль между rdshell и другими фичами решается локом на доступ к консоли. Этот подход пока хорошо работал. > > > так как сейчас всё очень сильно зависит от > > > набора фич, попадающих в initrd. > > Каких фич ? > > plymouth, kbd, rdshell -- в первую очередь. > > > -- > Best regards, > Leonid Krivoshein. > > _______________________________________________ > Make-initrd mailing list > Make-initrd@lists.altlinux.org > https://lists.altlinux.org/mailman/listinfo/make-initrd -- Rgrds, legion ^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2021-11-09 12:17 UTC | newest] Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-10-26 19:16 ` [make-initrd] [PATCH v6 21/22] bootchain-core: adds ability to bring the daemon to the foreground Alexey Gladkov 2021-10-26 20:29 ` Leonid Krivoshein 2021-11-06 13:22 ` Alexey Gladkov 2021-11-06 14:57 ` Leonid Krivoshein 2021-11-06 15:05 ` Антон Мидюков 2021-11-06 15:25 ` Alexey Gladkov 2021-11-06 15:26 ` Антон Мидюков 2021-11-06 15:33 ` Alexey Gladkov 2021-11-06 15:47 ` Leonid Krivoshein 2021-11-06 15:54 ` Антон Мидюков 2021-11-06 16:19 ` Leonid Krivoshein 2021-11-06 15:57 ` Alexey Gladkov 2021-11-06 16:06 ` Антон Мидюков 2021-11-06 16:25 ` Leonid Krivoshein 2021-11-06 17:30 ` Leonid Krivoshein 2021-11-06 18:16 ` Leonid Krivoshein 2021-11-06 17:32 ` Alexey Gladkov 2021-11-06 15:22 ` Alexey Gladkov 2021-11-06 16:52 ` Leonid Krivoshein 2021-11-06 17:41 ` Alexey Gladkov 2021-11-06 18:03 ` Leonid Krivoshein 2021-11-06 18:29 ` Alexey Gladkov 2021-11-06 19:32 ` Leonid Krivoshein 2021-11-06 19:54 ` Leonid Krivoshein 2021-11-08 13:09 ` Alexey Gladkov 2021-11-08 16:08 ` Leonid Krivoshein 2021-11-09 12:17 ` Alexey Gladkov
Make-initrd development discussion This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \ make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com public-inbox-index make-initrd Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.make-initrd AGPL code for this site: git clone https://public-inbox.org/public-inbox.git