Make-initrd development discussion
 help / color / mirror / Atom feed
* 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 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: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: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 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 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 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: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 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 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 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 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