From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792189328; x=1792794128; darn=lists.altlinux.org; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to:content-type; bh=RVMLJ+UrS/X1aHA80EarZGoxbcpNFVHBeiQTGKkvvyw=; b=sJlLM3RpdjUKexWY9EVfVq8kWT1BDfshOt+oW6hcvp7yycZzOJ2a6FaDrDGo+obQYH Y3X82oLboV2z3vW+tSNeL5ldbsHOO0Nr6GMI+BgsmdhIJmVoklDpqmurFCZv5QyOYa38 rXHva9NtWj8mY3IDzVKonvoCSiso86nzsJtSRTvuQ/4oCiSe0kyYRJcnfECh6dwiR/bT Jbn9B2pjZSVbFI576h48Rl6mukjt/6VaAr3g6AIJUut6hj+AxfnRVvSNximdCFxeBMs9 VZPFKUtFmqvUT2BYVUpcF//d1Rxw56MPsxo3imsNkjSO5i3OSesQjERVW3LXxSntfnIc 0Few== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792189328; x=1792794128; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RVMLJ+UrS/X1aHA80EarZGoxbcpNFVHBeiQTGKkvvyw=; b=BQr21XJWso4A3qMCDvPX/NEXrvOD0rfAzdPbJo+6UYVxdRFmEKjgJwuSblSLGs2AW8 LK5x6mmUFPW/dIEcx+OPRvvwlMfq8quAPmGqbo7ZCdLvALaThgoVbX4/rdt/iUZ1Zpmj b+AltZk+tskz7PjspbPXy7YmFYVj9hE/HYC0xZEm95+bGt12kljKANqhJrioqxwFIjNx nvpbIncrp3TL+FTY6sIvQc7K3h6aGTCTfvY8abO2UP5etJh3CxIqEGyX8zDBGZC/zNia 8bT9SEARkQwhi8ACS2b3138bA1e9y4X7BBlDXokIKBhNcK5lwW4BFUZj/69T3qRHbNtq hrFQ== X-Gm-Message-State: AFq9FYLqvu3hort02i526f/FJdzMBMWnYrZjhSnDSjo+Ji5LCJgTn+Mp SrguqO2pDqbrM+SoT02t3pcvncr/9+uZcLrQYQhmyhaTuXfBsMUmJ6t0aSQ7bA== X-Gm-Gg: AYBFou34yElfl3XnFYB5r0A5oNx7Pqg6cZHyU2Z1TFVcDGPlVYRbKH53TGVvN9coTaQ rp4+xxzFiVrgNWCbtuQrtSwPiMbIfTRKW7kEy4I/Q2SKl4CNrHD32s7GcRLWdIyk7cPimubGZpY Bqgpb6fTnC6UudLCvWshV6G/TL7sY0om7RDYaPBJMni4f8/FzQDe+Os1YYzUlWmNdo12tOAuTbC S+MJ4DwXOqv03iyFjxeDtW3cp2JnmBJ4FM8hmk4iJ/cq25+yL3Cefr2XIvYAiOCUUZlDCVBHswv RqrTZvy/xwjD2s7ptvyRyfsSgz9mh4yf0XKJkHJt4+Fs+hp9eyClix0KtEi1SjtpQIVUYtqjh0m DdugZolNXEkl2TNRRM0xaOsX9xyONROFWeaP9Csj9vCSJ66CkQ58yoZcOtD0AnLGADA1/CdaVvo 8QMUJGh1V1lxImJvomf1XwCRWYEKhHzl1HJCdtn+Ftt75BUUqYDXd/bKJ21N4psV8bKA9zezOBT ouUgwYilNQQjzHl X-Received: by 2002:a05:6830:349e:b0:81b:b7e3:23b7 with SMTP id 46e09a7af769-845049cf154mr968530a34.31.1792189327508; Fri, 16 Oct 2026 15:22:07 -0700 (PDT) Message-ID: Date: Sat, 17 Oct 2026 01:22:06 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: make-initrd@lists.altlinux.org References: Content-Language: ru, en-US From: Leonid Krivoshein In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [make-initrd] I: ncurses experiment X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Oct 2026 22:22:11 -0000 Archived-At: List-Archive: Привет! 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.