Make-initrd development discussion
 help / color / mirror / Atom feed
From: Leonid Krivoshein <klark.devel@gmail.com>
To: make-initrd@lists.altlinux.org
Subject: Re: [make-initrd] I: ncurses experiment
Date: Sat, 17 Oct 2026 01:22:06 +0300
Message-ID: <cb6c58f9-ce20-47af-a6be-7d56eb8389a9@gmail.com> (raw)
In-Reply-To: <atIypMvHsKDddY84@example.org>

Привет!


On 10/16/26 5:20 PM, Alexey Gladkov wrote:
> On Tue, Dec 23, 2025 at 02:53:21PM +0100, Alexey Gladkov wrote:
>> Привет!
>>
>> Я попробовал поэкспериментировать с текстовыми диалогами. Я держал в
>> голове встраиваемые системы и make-initrd.
>>
>> Если использовать обычный в таких случаях dialog(1), то разным скриптам,
>> его использующим, необходимо договариваться кто в данный момент владеет
>> терминалом. Проблема усугубляется, если у системы serial или netconsole.
>>
>> Можно использовать screen/tmux для переключения клиентов терминала, но у
>> этих мультиплексеров не всегда удобный API для переключений клиентов. Плюс
>> приходится всё-равно думать кого в данный момент показывать.
>>
>> Я подумал, что можно упростить жизнь, если сделать диспетчер, который
>> владел бы терминалом и параллельно отображал бы диалоги по запросам
>> скриптов.
>>
>> Скрипт может послать запрос на создание диалога и либо заблокироваться и
>> ожидать результат, либо продолжить заниматься своими делами и проверять
>> состояние диалога.
>>
>> Диспетчер же берёт на себя сериализацию запросов (т.к. ncurses не
>> поддерживает multithreads), переключение фокуса между диалогами,
>> переключение пользовательского ввода, сохраняет и возвращает клиенту
>> состояние диалогов.
>>
>> В принципе, это у меня получилось. Есть диспетчер и диалоги в виде
>> плагинов. Есть немного документации и тестов.
>>
>> https://github.com/osboot/plainmouth
> 
> Я несколько продвинулся в этом эксперименте. Я сделал плагины, чтобы
> создавать достаточно сложные интерфейсы. Теперь у меня есть аналог
> dialog(1) для некоторой совместимости.
> 
> Я надеюсь попробовать сделать фичу для вывода диалогов через plainmouth.
> Надеюсь найду время.
> 

Пока в Сизиф не опакечено и нет примера-фичи, не очень понятно. По 
документации юскейс тоже не очень понятен. Сложно представить себе 
несогласованные скрипты из разных фич make-initrd, выводящие разные 
диалоги на единственный терминал, с нагромождением которых придётся 
разбираться пользователю.

Кода для разделения единственного терминала /dev/console через tmux на 
разные сессии в качестве замены TTY сейчас в основной ветке не вижу, 
есть наброски в отдельных ветках, типа use-tmux [1].

Как мы говорили раньше, хотелось бы замены bootchain-interactive [2] на 
уровне всего make-initrd. Конечно, с удобными диалогами, когда можно 
обходиться без параметров, которые и так легко вычислить.

Мне понятна концепция "своя сессия на каждую фичу, у которой есть ввод 
данных от пользователя либо есть вывод прогресса длительно выполняющихся 
процессов". При пошаговой загрузке диалоги открываются последовательно. 
Для аварийной консоли rdshell -- свой сеанс, для вывода статусов демонов 
(/dev/console) -- свой, для общего лога демонов, если нужно, третий сеанс.

Если какой-то фиче потребовалось вывести диалог ввода (например, пароль 
на LUKS), её tmux-сессия становится активной, а сразу после ввода фича 
может вернуть фокус ввода или это сделает make-initrd при завершении 
tmux-сессии этой фичи. В bootchain-interactive отложенная на 8 секунд 
активация диалогового TTY и немедленная, если возникает диалог ввода.

Такой подход позволяет избежать ненужного мелькания чего-либо про 
загружаемые процессы, если это происходит довольно быстро. В то же 
время, ошибки или ввод данных требует немедленного внимания. Если 
внимание потребуется двум и более не связанным фичам, не вижу проблем 
передавать фокус в очерёдности, обратной поступлению запросов.


Ссылки:

1. 
https://github.com/osboot/make-initrd/commit/817d9ed89f39a8ead233af9b3d5a5bfa170037b0
2. 
https://github.com/klark973/make-initrd-bootchain/blob/sisyphus/bootchain-interactive/README.md


-- 
WBR, Leonid Krivoshein.



  reply	other threads:[~2026-10-16 22:22 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-23 13:53 Alexey Gladkov
2026-10-16 14:20 ` Alexey Gladkov
2026-10-16 22:22   ` Leonid Krivoshein [this message]
2026-10-17  9:57     ` Alexey Gladkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cb6c58f9-ce20-47af-a6be-7d56eb8389a9@gmail.com \
    --to=klark.devel@gmail.com \
    --cc=make-initrd@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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