Make-initrd development discussion
 help / color / mirror / Atom feed
* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  @ 2021-06-28 14:01 ` Alexey Gladkov
  2021-06-28 14:43   ` Leonid Krivoshein
  2021-06-28 15:57   ` Leonid Krivoshein
  0 siblings, 2 replies; 12+ messages in thread
From: Alexey Gladkov @ 2021-06-28 14:01 UTC (permalink / raw)
  To: make-initrd; +Cc: Leonid Krivoshein

On Thu, Jun 24, 2021 at 05:10:40PM +0300, Петр Михалицын wrote:
> 
> Всем привет,
>  
> Рассматривая новые фичи из bootchain обнаружил, что
> bootchain-interactive не завязана на работе других фич из bootchain.В
> связи с этим предлагаю вынести ее как отдельную фичу pseudo-dialogs (или
> что-то типа того), которую могут использовать другие.
>  
> Я нахожу ее функционал достаточно полезным, внутри моей фичи, которая
> осуществляет загрузку с защищенного носителя Рутокен. Так я бы смог
> отображать в процессе загрузки меню настройки, которой мог бы
> пользоваться администратор или пользователь. Внутри этого меню он сможет
>
> *  снять оверлей
> *  изменить права доступа к защищенным разделам
> *  разблокировать пин-код пользователя в случае необходимости
> *   
> Все эти вещи конечно можно было бы сделать через grub или просто на
> другой системе, но это будет уже не так удобно.
>  
> Так же предполагаю, что эта фича может быть использована и в других
> сценариях общения с пользователем. 
>  
> Что думаете по этому поводу?

Я совсем не против добавить возможность интерактивно что-то спрашивать у
пользователя в зависимости от возможностей терминала, если есть такая
потребность.

Правда с моей точки зрения было бы неплохо, если бы такая фича была
работоспособна и c netconsole.

Леонид, а у тебя какие планы на bootchain-interactive ?

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 14:01 ` [make-initrd] make pseudo GUI from bootchain-interactime common feature Alexey Gladkov
@ 2021-06-28 14:43   ` Leonid Krivoshein
  2021-06-28 16:06     ` Alexey Gladkov
  2021-06-28 15:57   ` Leonid Krivoshein
  1 sibling, 1 reply; 12+ messages in thread
From: Leonid Krivoshein @ 2021-06-28 14:43 UTC (permalink / raw)
  To: Alexey Gladkov, make-initrd

Добрый день!


28.06.2021 17:01, Alexey Gladkov пишет:
> On Thu, Jun 24, 2021 at 05:10:40PM +0300, Петр Михалицын wrote:
>> Всем привет,
>>   
>> Рассматривая новые фичи из bootchain обнаружил, что
>> bootchain-interactive не завязана на работе других фич из bootchain.В
>> связи с этим предлагаю вынести ее как отдельную фичу pseudo-dialogs (или
>> что-то типа того), которую могут использовать другие.
>>   
>> Я нахожу ее функционал достаточно полезным, внутри моей фичи, которая
>> осуществляет загрузку с защищенного носителя Рутокен. Так я бы смог
>> отображать в процессе загрузки меню настройки, которой мог бы
>> пользоваться администратор или пользователь. Внутри этого меню он сможет
>>
>> *  снять оверлей
>> *  изменить права доступа к защищенным разделам
>> *  разблокировать пин-код пользователя в случае необходимости
>> *
>> Все эти вещи конечно можно было бы сделать через grub или просто на
>> другой системе, но это будет уже не так удобно.
>>   
>> Так же предполагаю, что эта фича может быть использована и в других
>> сценариях общения с пользователем.
>>   
>> Что думаете по этому поводу?
> Я совсем не против добавить возможность интерактивно что-то спрашивать у
> пользователя в зависимости от возможностей терминала, если есть такая
> потребность.
>
> Правда с моей точки зрения было бы неплохо, если бы такая фича была
> работоспособна и c netconsole.
>
> Леонид, а у тебя какие планы на bootchain-interactive ?

Планы -- как можно быстрее интегрировать всю связку в make-initrd.

Идея переместить bootchain-interactive на верхний уровень и сделать 
частью make-initrd, независимой от bootchain была с самого начала, 
поэтому весь код этой фичи так написан, что он совсем не зависит от 
других модулей bootchain. Есть, правда, пара "но". Именно 
bootchain-interactive, как концепция, создана наспех, для написания 
остального кода altboot, поэтому её хорошо бы поревьювить именно в части 
общей пригодности интерфейса и арифметики.

Второй момент куда более важный. bootchain (изначально pipeline) мне 
видится как решение проблемы синхронизации последовательности 
выполняемых действий независимо от последовательности входящих событий. 
Так, фича overlayroot в bootchain сейчас может "гоняться" с фичей 
"resume" make-initrd. С ней вообще много чего может "гоняться". Было бы 
здорово сделать весь bootchain частью интерфейса make-initrd, и чтобы 
код разных его фич можно было более тесно интегрировать с bootchain, при 
необходимости. В первую очередь network, да и всё, что можно 
конфигурировать через диалоги, запрос паролей не только на токены, но и 
crypto-luks. Но это такие мечты и отдалённые задачи, наверняка решаемые 
уже после того, как удастся заапстримить bootchain.

При написании документации (уже около 30 страниц) обнаружил пару 
архитектурных изъяна в bootchain и сейчас их уже почти исправил, но пока 
не выгрузил обновления. При этом добился полной совместимости с 
pipeline, для его пользователей теперь вообще ничего можно не менять. С 
ipmi/novga консолями и utf8 тоже пока остаётся вопрос, как решать, ещё 
не заходил на эту задачу. И останется всё ещё раз прогнать на стендах, 
так-то оно вроде работало. После этого можно переходить к движению в 
апстрим в твоим участием! :-)


-- 
С уважением,
Леонид Кривошеин,
Начальник службы обеспечения совместимости.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 14:01 ` [make-initrd] make pseudo GUI from bootchain-interactime common feature Alexey Gladkov
  2021-06-28 14:43   ` Leonid Krivoshein
@ 2021-06-28 15:57   ` Leonid Krivoshein
  1 sibling, 0 replies; 12+ messages in thread
From: Leonid Krivoshein @ 2021-06-28 15:57 UTC (permalink / raw)
  To: make-initrd, Leonid Krivoshein


28.06.2021 17:01, Alexey Gladkov пишет:
> On Thu, Jun 24, 2021 at 05:10:40PM +0300, Петр Михалицын wrote:
>> Всем привет,
>>   
>> Рассматривая новые фичи из bootchain обнаружил, что
>> bootchain-interactive не завязана на работе других фич из bootchain.В
>> связи с этим предлагаю вынести ее как отдельную фичу pseudo-dialogs (или
>> что-то типа того), которую могут использовать другие.
>>   
>> Я нахожу ее функционал достаточно полезным, внутри моей фичи, которая
>> осуществляет загрузку с защищенного носителя Рутокен. Так я бы смог
>> отображать в процессе загрузки меню настройки, которой мог бы
>> пользоваться администратор или пользователь. Внутри этого меню он сможет
>>
>> *  снять оверлей
>> *  изменить права доступа к защищенным разделам
>> *  разблокировать пин-код пользователя в случае необходимости
>> *
>> Все эти вещи конечно можно было бы сделать через grub или просто на
>> другой системе, но это будет уже не так удобно.
>>   
>> Так же предполагаю, что эта фича может быть использована и в других
>> сценариях общения с пользователем.
>>   
>> Что думаете по этому поводу?
> Я совсем не против добавить возможность интерактивно что-то спрашивать у
> пользователя в зависимости от возможностей терминала, если есть такая
> потребность.
>
> Правда с моей точки зрения было бы неплохо, если бы такая фича была
> работоспособна и c netconsole.
>
> Леонид, а у тебя какие планы на bootchain-interactive ?

...если же вопрос только в том, можно ли есть этого слона по частям, то 
наверное не можно, а нужно. :-) И даже решение проблемы с netconsole 
можно отложить, хотя лучше решить её сразу. И переименовать сразу можно, 
чтобы не было ассоциации с bootchain.

Вообще, все ранее обозначенные планы уже приблизились к финальной черте, 
т.е. ждать совсем недолго осталось, я надеюсь.


-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 14:43   ` Leonid Krivoshein
@ 2021-06-28 16:06     ` Alexey Gladkov
  2021-06-28 16:34       ` Leonid Krivoshein
                         ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Alexey Gladkov @ 2021-06-28 16:06 UTC (permalink / raw)
  To: make-initrd; +Cc: Leonid Krivoshein

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



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 16:06     ` Alexey Gladkov
@ 2021-06-28 16:34       ` Leonid Krivoshein
  2021-06-28 18:48         ` Alexey Gladkov
  2021-06-28 16:39       ` Leonid Krivoshein
  2021-08-22 13:09       ` Leonid Krivoshein
  2 siblings, 1 reply; 12+ messages in thread
From: Leonid Krivoshein @ 2021-06-28 16:34 UTC (permalink / raw)
  To: make-initrd


28.06.2021 19:06, Alexey Gladkov пишет:
> On Mon, Jun 28, 2021 at 05:43:48PM +0300, Leonid Krivoshein wrote:
>>> [...]
>>> Леонид, а у тебя какие планы на 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
> }
>
> Думаю, что его можно модифицировать и использовать для твоих нужд.

Для определения размеров TTY и для сохранения/восстановления консоли в 
первых реализациях я тоже использовал stty. Но потом обнаружил, что 
сохранение/восстановление поддерживается далеко не всеми TTY, поэтому 
использовал отдельную консоль, которую просто чищу за собой, а 
определение размера не проблема, dialog'ом её тоже можно решать 
достаточно надёжно. Если оставить как сейчас -- не будет лишней зависимости.


>> Второй момент куда более важный. 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, а фичу с диалогами ?

Нет, имел ввиду весь bootchain. И даже более широко. Было бы хорошо в 
самом make-initrd иметь наряду с параллельной событийно-ориентированной 
обработкой интерфейс, позволяющий выполнять что угодно последовательно, 
не только с диалогами. pipeline/bootchain эту задачу решают, но возможно 
на уровне интерфейса make-initrd её можно решить ещё лучше, а bootchain 
со своими "входами" и "выходами" сделать частным использованием этого 
общего интерфейса make-initrd. Некоторые вещи нужно обрабатывать 
последовательно, а не как карта ляжет. Например resume, fsck, создание 
оверлеев...


> Мне сразу в голову пришло примерно как это сделано в dpkg-configure. У нас
> же примерно такая же задача. У нас есть параметры, которые могут быть
> заданы, если нет, то о них нужно спросить или же использовать некие
> дефолты если возможно. Нужно будет поизучать как это у них уже
> реализовано.

Да, классная идея, но это уже следующий уровень интеллекта. Не уверен, 
что сходу достижимый, по крайней мере, без изменения интерфейса 
регистрируемых аргументов make-initrd. Но если отталкиваться не от 
параметров make-initrd, а от того, как данные описываются в d-i 
(dpkg-configure использует эту модель, если не ошибаюсь), то да, но 
скорее всего диалоги там не автоматически формируются, а тоже используют 
библиотеку доступа к этим данным. Давно изучал вопрос, поэтому плохо 
помню, что там и как.


>> При написании документации (уже около 30 страниц) обнаружил пару
>> архитектурных изъяна в bootchain и сейчас их уже почти исправил, но пока не
>> выгрузил обновления. При этом добился полной совместимости с pipeline, для
>> его пользователей теперь вообще ничего можно не менять. С ipmi/novga
>> консолями и utf8 тоже пока остаётся вопрос, как решать, ещё не заходил на
>> эту задачу. И останется всё ещё раз прогнать на стендах, так-то оно вроде
>> работало. После этого можно переходить к движению в апстрим в твоим
>> участием! :-)
> Ok. Нет проблем :)
>

-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 16:06     ` Alexey Gladkov
  2021-06-28 16:34       ` Leonid Krivoshein
@ 2021-06-28 16:39       ` Leonid Krivoshein
  2021-08-22 13:09       ` Leonid Krivoshein
  2 siblings, 0 replies; 12+ messages in thread
From: Leonid Krivoshein @ 2021-06-28 16:39 UTC (permalink / raw)
  To: make-initrd


28.06.2021 19:06, Alexey Gladkov пишет:
> [...]
>> Было бы здорово сделать весь bootchain частью
>> интерфейса make-initrd, и чтобы код разных его фич можно было более тесно
>> интегрировать с bootchain, при необходимости. В первую очередь network, да и
>> всё, что можно конфигурировать через диалоги, запрос паролей не только на
>> токены, но и crypto-luks. Но это такие мечты и отдалённые задачи, наверняка
>> решаемые уже после того, как удастся заапстримить bootchain.
> Ты наверно имел в виду не весь bootchain, а фичу с диалогами ?

Пардон, не совсем понятно я выразился. Не весь, конечно, а весь 
bootchain-core в данном контексте. Т.е. в какой-то аналогии сделать 
pipeline частью интерфейса make-initrd, а не отдельной опциональной фичей.


-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 16:34       ` Leonid Krivoshein
@ 2021-06-28 18:48         ` Alexey Gladkov
  2021-06-28 19:43           ` Leonid Krivoshein
  0 siblings, 1 reply; 12+ messages in thread
From: Alexey Gladkov @ 2021-06-28 18:48 UTC (permalink / raw)
  To: make-initrd

On Mon, Jun 28, 2021 at 07:34:02PM +0300, Leonid Krivoshein wrote:
> 
> 28.06.2021 19:06, Alexey Gladkov пишет:
> > On Mon, Jun 28, 2021 at 05:43:48PM +0300, Leonid Krivoshein wrote:
> > > > [...]
> > > > Леонид, а у тебя какие планы на 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
> > }
> > 
> > Думаю, что его можно модифицировать и использовать для твоих нужд.
> 
> Для определения размеров TTY и для сохранения/восстановления консоли в
> первых реализациях я тоже использовал stty. Но потом обнаружил, что
> сохранение/восстановление поддерживается далеко не всеми TTY, поэтому
> использовал отдельную консоль, которую просто чищу за собой, а определение
> размера не проблема, dialog'ом её тоже можно решать достаточно надёжно. Если
> оставить как сейчас -- не будет лишней зависимости.

Я не в плане делать stty а в плане вычисления rows и cols.

> > > Было бы здорово сделать весь bootchain частью
> > > интерфейса make-initrd, и чтобы код разных его фич можно было более тесно
> > > интегрировать с bootchain, при необходимости. В первую очередь network, да и
> > > всё, что можно конфигурировать через диалоги, запрос паролей не только на
> > > токены, но и crypto-luks. Но это такие мечты и отдалённые задачи, наверняка
> > > решаемые уже после того, как удастся заапстримить bootchain.
> > Ты наверно имел в виду не весь bootchain, а фичу с диалогами ?
> 
> Нет, имел ввиду весь bootchain. И даже более широко. Было бы хорошо в самом
> make-initrd иметь наряду с параллельной событийно-ориентированной обработкой
> интерфейс, позволяющий выполнять что угодно последовательно, не только с
> диалогами. pipeline/bootchain эту задачу решают, но возможно на уровне
> интерфейса make-initrd её можно решить ещё лучше, а bootchain со своими
> "входами" и "выходами" сделать частным использованием этого общего
> интерфейса make-initrd. Некоторые вещи нужно обрабатывать последовательно, а
> не как карта ляжет. Например resume, fsck, создание оверлеев...

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

> > Мне сразу в голову пришло примерно как это сделано в dpkg-configure. У нас
> > же примерно такая же задача. У нас есть параметры, которые могут быть
> > заданы, если нет, то о них нужно спросить или же использовать некие
> > дефолты если возможно. Нужно будет поизучать как это у них уже
> > реализовано.
> 
> Да, классная идея, но это уже следующий уровень интеллекта. Не уверен, что
> сходу достижимый, по крайней мере, без изменения интерфейса регистрируемых
> аргументов make-initrd. Но если отталкиваться не от параметров make-initrd,
> а от того, как данные описываются в d-i (dpkg-configure использует эту
> модель, если не ошибаюсь), то да, но скорее всего диалоги там не
> автоматически формируются, а тоже используют библиотеку доступа к этим
> данным. Давно изучал вопрос, поэтому плохо помню, что там и как.

Есть ещё одна система, которая меньше требует и которая больше мне
нрафится - kconfig. Я правда не уверен, что она будет покрывать 100% нужд.
Нужно смотреть.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 18:48         ` Alexey Gladkov
@ 2021-06-28 19:43           ` Leonid Krivoshein
  2021-06-28 23:38             ` Alexey Gladkov
  0 siblings, 1 reply; 12+ messages in thread
From: Leonid Krivoshein @ 2021-06-28 19:43 UTC (permalink / raw)
  To: make-initrd


28.06.2021 21:48, Alexey Gladkov пишет:
> On Mon, Jun 28, 2021 at 07:34:02PM +0300, Leonid Krivoshein wrote:
> [..]
>>>> Было бы здорово сделать весь bootchain частью
>>>> интерфейса make-initrd, и чтобы код разных его фич можно было более тесно
>>>> интегрировать с bootchain, при необходимости. В первую очередь network, да и
>>>> всё, что можно конфигурировать через диалоги, запрос паролей не только на
>>>> токены, но и crypto-luks. Но это такие мечты и отдалённые задачи, наверняка
>>>> решаемые уже после того, как удастся заапстримить bootchain.
>>> Ты наверно имел в виду не весь bootchain, а фичу с диалогами ?
>> Нет, имел ввиду весь bootchain. И даже более широко. Было бы хорошо в самом
>> make-initrd иметь наряду с параллельной событийно-ориентированной обработкой
>> интерфейс, позволяющий выполнять что угодно последовательно, не только с
>> диалогами. pipeline/bootchain эту задачу решают, но возможно на уровне
>> интерфейса make-initrd её можно решить ещё лучше, а bootchain со своими
>> "входами" и "выходами" сделать частным использованием этого общего
>> интерфейса make-initrd. Некоторые вещи нужно обрабатывать последовательно, а
>> не как карта ляжет. Например resume, fsck, создание оверлеев...
> Для общесистемного применения нужны usecases, иначе такой функционал будет
> лежать мёртвым грузом. Если же этот функционал нужен лишь иногда, то для
> этого есть фичи.

Конечно, но несколько штук перечислил. Мне-то не видно всех возможностей 
make-initrd, поэтому со своей колокольни для решения конкретных задач 
сходу пришло два варианта реализации: 1) перетащить названные фичи в 
bootchain или сделать зависимыми от него; 2) сделать в bootchain 
дубликаты этих фич. Тогда можно чётко выстраивать в цепочку: проверили 
диск fsck, проснулись, если это resume, построили оверлей над обычной 
rootfs. Т.е. речь не о диалогах, а о синхронизации, последовательном 
выполнении. Сейчас, если в bootchain шаг ничего не принимает на входе и 
не передаёт на выходе, он вызывает bypass_results(), связывая выход 
предыдущего шага со входом следующего. Расходуется при этом лишний 
каталог в tmpfs. Если на уровне make-initrd можно было бы выстраивать 
последовательность выполнения, то организация входов-выходов была бы 
дополнительным функционалом, в котором действительно намного меньше 
нуждающихся.


-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 19:43           ` Leonid Krivoshein
@ 2021-06-28 23:38             ` Alexey Gladkov
  2021-06-29  0:50               ` Leonid Krivoshein
  0 siblings, 1 reply; 12+ messages in thread
From: Alexey Gladkov @ 2021-06-28 23:38 UTC (permalink / raw)
  To: make-initrd

On Mon, Jun 28, 2021 at 10:43:20PM +0300, Leonid Krivoshein wrote:
> > > Нет, имел ввиду весь bootchain. И даже более широко. Было бы хорошо в самом
> > > make-initrd иметь наряду с параллельной событийно-ориентированной обработкой
> > > интерфейс, позволяющий выполнять что угодно последовательно, не только с
> > > диалогами. pipeline/bootchain эту задачу решают, но возможно на уровне
> > > интерфейса make-initrd её можно решить ещё лучше, а bootchain со своими
> > > "входами" и "выходами" сделать частным использованием этого общего
> > > интерфейса make-initrd. Некоторые вещи нужно обрабатывать последовательно, а
> > > не как карта ляжет. Например resume, fsck, создание оверлеев...
> > Для общесистемного применения нужны usecases, иначе такой функционал будет
> > лежать мёртвым грузом. Если же этот функционал нужен лишь иногда, то для
> > этого есть фичи.
> 
> Конечно, но несколько штук перечислил. Мне-то не видно всех возможностей
> make-initrd, поэтому со своей колокольни для решения конкретных задач сходу
> пришло два варианта реализации: 1) перетащить названные фичи в bootchain или
> сделать зависимыми от него; 2) сделать в bootchain дубликаты этих фич. Тогда
> можно чётко выстраивать в цепочку: проверили диск fsck, проснулись, если это
> resume, построили оверлей над обычной rootfs. Т.е. речь не о диалогах, а о
> синхронизации, последовательном выполнении.

Никакое последовательное выполнение не поможет тебе с resume и fsck. Такой
подход уже был в mkinitrd и он даже там не работал нормально. Swap может
находиться не на разделе или диске (спасибо фантазии пользователей), а на
raid, lvm и/или luks. Даже если и на разделе, то тебе нужно дождаться
инициализации _всех_ дисков, которые это делают с разной скоростью. В
любой момент времени ты просто не можешь знать все ли диски
проинициализировались. Пока всё не проининициализируется ты не можешь быть
уверен, что в T+1 не появится раздел с swap, на котором будет сигнатура
hibernate.

И уж тем более тебе это не поможет с fsck, потому что диски будут
появляться, а потом в конце появится диск с swap и сигнатурой hibernate.
У тебя будет всё та же дилемма: проверять диски или же ждать пока не
проинициализируются все диски (сколько ждать?).

Проблема resume не решается "последовательным выполнением".

Единственный выход, который мне видится с resume это заранее запомнить
swap'ы и подождать их и проверить.

Так что я не согласен с этими перечисленными юскейсами. Я не вижу иного
применения bootchain, кроме как для случаев не связанных с локальным
железом... ну почти.

> Сейчас, если в bootchain шаг ничего не принимает на входе и не передаёт
> на выходе, он вызывает bypass_results(), связывая выход предыдущего шага
> со входом следующего.  Расходуется при этом лишний каталог в tmpfs.

Ты экономишь один dentry в tmpfs ? Да будь из хоть 100 ты не сможешь
переплюнуть libcrypto, которая занимает 2,9M. Ты экономишь совсем не то.

Кроме того, мне кажется, что можно обойтись и без этого лишнего создания.

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

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 23:38             ` Alexey Gladkov
@ 2021-06-29  0:50               ` Leonid Krivoshein
  2021-06-29  8:28                 ` Alexey Gladkov
  0 siblings, 1 reply; 12+ messages in thread
From: Leonid Krivoshein @ 2021-06-29  0:50 UTC (permalink / raw)
  To: make-initrd


29.06.2021 2:38, Alexey Gladkov пишет:
> [...]
> Так что я не согласен с этими перечисленными юскейсами. Я не вижу иного
> применения bootchain, кроме как для случаев не связанных с локальным
> железом... ну почти.

OK, подождём других юскейсов...


>> Сейчас, если в bootchain шаг ничего не принимает на входе и не передаёт
>> на выходе, он вызывает bypass_results(), связывая выход предыдущего шага
>> со входом следующего.  Расходуется при этом лишний каталог в tmpfs.
> Ты экономишь один dentry в tmpfs ? Да будь из хоть 100 ты не сможешь
> переплюнуть libcrypto, которая занимает 2,9M. Ты экономишь совсем не то.

Речь конечно не об экономии, там и лишние действия выполняются, и всё 
только для того, чтобы "передать наработки следующему соседу". А оно, 
может, соседу и не потребуется.))


> Кроме того, мне кажется, что можно обойтись и без этого лишнего создания.

Возможно. Нужно смотреть код bypass_results() и bootchain-loop, но я 
подозреваю, что из-за ссылок на номера шагов и возможности их 
использования в resolve_target() без этого не обойтись.



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

-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-29  0:50               ` Leonid Krivoshein
@ 2021-06-29  8:28                 ` Alexey Gladkov
  0 siblings, 0 replies; 12+ messages in thread
From: Alexey Gladkov @ 2021-06-29  8:28 UTC (permalink / raw)
  To: make-initrd

On Tue, Jun 29, 2021 at 03:50:21AM +0300, Leonid Krivoshein wrote:
> 
> 29.06.2021 2:38, Alexey Gladkov пишет:
> > [...]
> > Так что я не согласен с этими перечисленными юскейсами. Я не вижу иного
> > применения bootchain, кроме как для случаев не связанных с локальным
> > железом... ну почти.
> 
> OK, подождём других юскейсов...

Насчёт resume наверное всё-таки стоит запоминать расположение swap'ов и
ждать их появления некоторое время (да, опять таймаут).

У меня уже мысль не городить очередной таймаут "по месту", а считать
разные типы таймаутов централизовано. Есть счётчик, который нужен уже в
двух местах: время с последнего появления диска/раздела. Его можно считать
на уровне udev и использовать в разных ситуациях.

> > > Сейчас, если в bootchain шаг ничего не принимает на входе и не передаёт
> > > на выходе, он вызывает bypass_results(), связывая выход предыдущего шага
> > > со входом следующего.  Расходуется при этом лишний каталог в tmpfs.
> > Ты экономишь один dentry в tmpfs ? Да будь из хоть 100 ты не сможешь
> > переплюнуть libcrypto, которая занимает 2,9M. Ты экономишь совсем не то.
> 
> Речь конечно не об экономии, там и лишние действия выполняются, и всё только
> для того, чтобы "передать наработки следующему соседу". А оно, может, соседу
> и не потребуется.))

Если результат вообще никому не нужен, то это ошибка в составлении
bootchain= и соответствующих параметров.

> > Кроме того, мне кажется, что можно обойтись и без этого лишнего создания.
> 
> Возможно. Нужно смотреть код bypass_results() и bootchain-loop, но я
> подозреваю, что из-за ссылок на номера шагов и возможности их использования
> в resolve_target() без этого не обойтись.

Мы знаем всю информацию и, кажется, можно выявить шаги,
которые никто не использует и не делать их. Правда, я не уверен, что
оптимизация стоит трудозатрат.

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [make-initrd] make pseudo GUI from bootchain-interactime common feature
  2021-06-28 16:06     ` Alexey Gladkov
  2021-06-28 16:34       ` Leonid Krivoshein
  2021-06-28 16:39       ` Leonid Krivoshein
@ 2021-08-22 13:09       ` Leonid Krivoshein
  2 siblings, 0 replies; 12+ messages in thread
From: Leonid Krivoshein @ 2021-08-22 13:09 UTC (permalink / raw)
  To: make-initrd


28.06.2021 19:06, Alexey Gladkov пишет:
> Кстати, однажды Олег Нестеров подсказал мне вот такой код:
>
> 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
> }
>
> Думаю, что его можно модифицировать и использовать для твоих нужд.

Да, этот код код оказался предпочтительным, в сравнении с парсингом 
вывода dialog --print-maxsize, т.к. dialog в случае netconsole сначала 
неправильно определяет размеры консоли. stty в образе initramfs 
оказался, т.е. не лишняя зависимость.


-- 
Best regards,
Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-08-22 13:09 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-28 14:01 ` [make-initrd] make pseudo GUI from bootchain-interactime common feature Alexey Gladkov
2021-06-28 14:43   ` Leonid Krivoshein
2021-06-28 16:06     ` Alexey Gladkov
2021-06-28 16:34       ` Leonid Krivoshein
2021-06-28 18:48         ` Alexey Gladkov
2021-06-28 19:43           ` Leonid Krivoshein
2021-06-28 23:38             ` Alexey Gladkov
2021-06-29  0:50               ` Leonid Krivoshein
2021-06-29  8:28                 ` Alexey Gladkov
2021-06-28 16:39       ` Leonid Krivoshein
2021-08-22 13:09       ` Leonid Krivoshein
2021-06-28 15:57   ` Leonid Krivoshein

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