From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 28 Jun 2021 18:06:24 +0200 From: Alexey Gladkov To: make-initrd@lists.altlinux.org Message-ID: <20210628160624.gglemxc5st6ucqog@example.org> References: <1624543840.397742661@f474.i.mail.ru> <20210628140143.m7r7ocn67kgagedj@example.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Cc: Leonid Krivoshein Subject: Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature 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: Mon, 28 Jun 2021 16:06:27 -0000 Archived-At: List-Archive: On Mon, Jun 28, 2021 at 05:43:48PM +0300, Leonid Krivoshein wrote: > > > Всем привет, > > > Рассматривая новые фичи из bootchain обнаружил, что > > > bootchain-interactive не завязана на работе других фич из bootchain.В > > > связи с этим предлагаю вынести ее как отдельную фичу pseudo-dialogs (или > > > что-то типа того), которую могут использовать другие. > > > Я нахожу ее функционал достаточно полезным, внутри моей фичи, которая > > > осуществляет загрузку с защищенного носителя Рутокен. Так я бы смог > > > отображать в процессе загрузки меню настройки, которой мог бы > > > пользоваться администратор или пользователь. Внутри этого меню он сможет > > > > > > * снять оверлей > > > * изменить права доступа к защищенным разделам > > > * разблокировать пин-код пользователя в случае необходимости > > > * > > > Все эти вещи конечно можно было бы сделать через grub или просто на > > > другой системе, но это будет уже не так удобно. > > > Так же предполагаю, что эта фича может быть использована и в других > > > сценариях общения с пользователем. > > > Что думаете по этому поводу? > > Я совсем не против добавить возможность интерактивно что-то спрашивать у > > пользователя в зависимости от возможностей терминала, если есть такая > > потребность. > > > > Правда с моей точки зрения было бы неплохо, если бы такая фича была > > работоспособна и c netconsole. > > > > Леонид, а у тебя какие планы на bootchain-interactive ? > > Планы -- как можно быстрее интегрировать всю связку в make-initrd. > > Идея переместить bootchain-interactive на верхний уровень и сделать частью > make-initrd, независимой от bootchain была с самого начала, поэтому весь код > этой фичи так написан, что он совсем не зависит от других модулей bootchain. > Есть, правда, пара "но". Именно bootchain-interactive, как концепция, > создана наспех, для написания остального кода altboot, поэтому её хорошо бы > поревьювить именно в части общей пригодности интерфейса и арифметики. Ну это не проблема. Кстати, однажды Олег Нестеров подсказал мне вот такой код: ttysz() { local esc cols rows echo -ne "\e[s\e[1000;1000H\e[6n\e[u" IFS=';[' read -s -t2 -dR esc rows cols || { echo >&2 'ttysz() FAILED'; return 0; } stty rows $rows cols $cols } Думаю, что его можно модифицировать и использовать для твоих нужд. > Второй момент куда более важный. bootchain (изначально pipeline) мне видится > как решение проблемы синхронизации последовательности выполняемых действий > независимо от последовательности входящих событий. Так, фича overlayroot в > bootchain сейчас может "гоняться" с фичей "resume" make-initrd. С ней вообще > много чего может "гоняться". Я специально не трогал pipeline, чтобы не ломать тебе ничего. Я решал примерно такую же проблему с kickstart. На время работы таких фич как kickstart и pipeline нужно выключать обработку эвентов в ueventd. Но не всех, а только тех, что отвечают за разбор того, что пришло из udev. Это реализовано в kickstart. Перед запуском kickstart ставит на паузу очередь udev и снимает с паузы после обработки сценария (если управление возвращается initramfs). Насколько это хорошее решение пока не знаю, но это работает. Примерно это же можно делать и в bootchain т.е. блокировать обработку очереди udev эвентов при заходе в условный main_loop. > Было бы здорово сделать весь bootchain частью > интерфейса make-initrd, и чтобы код разных его фич можно было более тесно > интегрировать с bootchain, при необходимости. В первую очередь network, да и > всё, что можно конфигурировать через диалоги, запрос паролей не только на > токены, но и crypto-luks. Но это такие мечты и отдалённые задачи, наверняка > решаемые уже после того, как удастся заапстримить bootchain. Ты наверно имел в виду не весь bootchain, а фичу с диалогами ? Мне сразу в голову пришло примерно как это сделано в dpkg-configure. У нас же примерно такая же задача. У нас есть параметры, которые могут быть заданы, если нет, то о них нужно спросить или же использовать некие дефолты если возможно. Нужно будет поизучать как это у них уже реализовано. > При написании документации (уже около 30 страниц) обнаружил пару > архитектурных изъяна в bootchain и сейчас их уже почти исправил, но пока не > выгрузил обновления. При этом добился полной совместимости с pipeline, для > его пользователей теперь вообще ничего можно не менять. С ipmi/novga > консолями и utf8 тоже пока остаётся вопрос, как решать, ещё не заходил на > эту задачу. И останется всё ещё раз прогнать на стендах, так-то оно вроде > работало. После этого можно переходить к движению в апстрим в твоим > участием! :-) Ok. Нет проблем :) -- Rgrds, legion