[make-initrd] make pseudo GUI from bootchain-interactime common feature

Alexey Gladkov gladkov.alexey at gmail.com
Mon Jun 28 19:06:24 MSK 2021


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



More information about the Make-initrd mailing list