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] udhcpc script в фиче network
Date: Thu, 23 Sep 2021 01:06:33 +0300
Message-ID: <b5a40877-30a3-6d5b-8664-a53e85528594@gmail.com> (raw)
In-Reply-To: <20210922190348.rrn3cjywjwwcrhbl@example.org>


22.09.2021 22:03, Alexey Gladkov пишет:
> On Wed, Sep 22, 2021 at 07:12:06PM +0300, Leonid Krivoshein wrote:
>> [...] Поэтому
>> я бы предпочёл не менять нынешнюю конструкцию, конфигурировать в диалогах
>> после запуска udev то, что не было сконфигурировано в командой строке, на
>> худой конец, прибегать к технике повторного сканирования, реализованной в
>> пропагаторе. И пусть параллельно с этим отрабатывают эвенты udev.
> А то что хочешь делать ты не ложится в текущую архитектуру. Во многих
> местах код рассчитывает, что конфигурация уже задана. Настройка сети одно
> из таких мест. Эвенты от интерфейса будут проигнорированы если нет
> конфигурации.

В сегодняшней версии 0.1.5-alt3 эту проблему устранили, благодаря тебе, 
конечно лучше глянуть код. Уже проверил и скоро выгружу. Теперь сеть 
идеально взлетает без диалогов и без форка фичи network. Без диалогов -- 
временная мера, просто сделан задел на будущее. Если сравнивать altboot 
с propagator, то один из минусов первого -- отсутствие диалогов 
конфигурирования сети. Но благодаря фиче network в самом make-initrd это 
можно пережить, хотя лучше, чтобы эти диалоги тоже были. Другой минус, я 
надеюсь, мы тоже почти преодолели -- он в теме. Теперь все те же опции 
мы можем брать по протоколу DHCP. А других минусов нет, остаются только 
плюсы, их становится всё больше.


> То есть придётся понимать такую ситуацию и ставить очередь network на
> паузу в ueventd. Это решит одну проблему, но все.

Как раз я представлял себе работу всего pipeline/bootchain с диалогами, 
в целом, как полноценную программу, работающую в обычной среде. Мы же не 
останавливаем в stage2 работающий udev каждый раз, когда нам что-то 
нужно. Propagator работает параллельно с udev, такое же поведение у 
altboot. Главное, как мне кажется, это две вещи: make-initrd при 
root=pipeline/bootchain ни при каких обстоятельствах не должен найти 
корень раньше, чем ему об этом скажет pipeline/bootchain, какие бы 
эвенты ему не пришлось параллельно обрабатывать. И второе: код самих 
pipeline/bootchain/altboot должен быть готовым работать в ситуации 
готовности к начальной загрузке, чтобы сканировать, ждать, если 
устройств ещё нет, при этом не создавать рейсов. Тогда эта концепция 
будет работать. Про диалоги и опции конфигурирования отдельно скажу.


> Если ты хочешь вернуться в начало, то нужно будет уметь откатываться на
> исходное состояние и начинать с начала. К этому некоторый код вообще не
> готов.

К этому всегда должен быть готов код в altboot. Сейчас он пишется с 
таким расчётом. Сеть там просто единожды опрашивается, поднятый 
интерфейс запоминается. При перезапуске altboot используется ранее 
созданная конфигурация. Пока так...


> Начало происходить то чего я опасался.

Не начало и не начнёт. Напротив, ждём не дождёмся, когда это закончится! 
Вот и Антон Мидюков вчера настаивал, чтобы я приступил к процессу 
апстрима, т.к. почти все его замечания были устранены, а он проверяет на 
всех мыслимых кейсах и регулярках, на разных архитектурах. Не начнёт, 
потому что мне эту ношу не потянуть, я лишь помогу в той части, что 
обещал, но не более.


> Ты где-то отдельно пишешь код

Код отправляю пока в Сизиф и в локальную гитовницу:

git.altlinux.org/people/klark/packages/make-initrd-bootchain.git


> вместо того чтобы обсуждать и порциями добавлять.

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

Лично мне кажется, что ни один пакет у нас так пристально не проверялся, 
попадая в обычные продукты. Но altboot -- важное звено в процессе 
загрузки и моя задача учесть совместимость с уже сделанным в Альте за 
многие годы.


> В итоге ты уверенно
> движешься к форку уже самого make-initrd (именно это ты и делаешь,
> поверь).

Поверь, этому не бывать! ;-)


> Ты уже спроектировал и реализовал свою систему так с чем я не
> могу согласиться.

Предлагаю не делать поспешных выводов. Фичи pipeline и network ты 
спроектировал. propagtor проектировал не я, но мне приходится во многом 
повторять его и его поведение, при этом я стараюсь не делать форк фич 
там, где это возможно, мы решаем задачу по избавлению от propagator и 
запихиванию его функционала в make-initrd. Всё это проделано зря, если 
вместо propagator предложить в чистом виде pipeline или иную новую 
концепцию загрузки, которая будет идеальной с точки зрения make-initrd, 
но непригодной для реального применения без переделки всего остального.

Как раз я старался учесть возможность перехода в будущем на более 
правильные концепции. Но сейчас и тебе надо принять, как данность, что 
пусть "функционал пропагатора" с твоей точки зрения не идеален, лучше 
чтобы он был внутри make-initrd и работал как 1/80 часть его рантайма, а 
не наоборот, чтобы настоящий propagator полностью выкидывал и заменял 
собой все 100% рантайма make-initrd. Можно и нужно обсуждать, как лучше 
сделать это, не ломая совместимости, и учитывая потребности перехода на 
что-то более правильное в перспективе.


> И я до сих пор не видел ни одного патча. Поэтому для
> меня каждая твоя проблема является большим сюрпризом.

Кажется, несколько попыток я уже делал, в частности, отдельно предлагал 
bootchain-interactive. Но, как я понял, ты хочешь принять всё одним 
разом, и только после тщательной проверки всей связки. Так мы этой 
проверкой сейчас занимаемся. После этого мне ещё README для каждой фичи 
писать и только потом делать коммиты в апстрим -- таков был план.


> [...]
> Я говорил про удаление всей конфигурации не только из-за IFNAME. Если у
> тебя был dhcp на интерфейсе, а теперь пользователь хочет статику, то dhcp
> нужно аккуратно остановить.

В текущей простой ситуации, которую нельзя назвать финальным/идеальным 
вариантом, у пользователя нет шансов что-либо захотеть. :-)

http://git.altlinux.org/gears/m/make-initrd-bootchain.git?p=make-initrd-bootchain.git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=5a1a8d2acd09c06d8091b921803850ea313de2ed;hb=9305bcd041b50b018d7fa4c11cebac4123514b26#l24

Т.е. в версии 0.1.5-alt2 тут вообще диалог о том, что "перезагрузись и 
сконфигурируй сеть через /proc/cmdline". В версии 0.1.5-alt3 этот же 
диалог и перезагрузка будет только в случае, если недоступен протокол IPv4.


> [...]
> Сначала я хочу понять зачем так в принципе делать т.к. cmdline.d/network
> не для этого вообще. Мне кажется странным пытаться сконфигурировать сеть
> путём эмуляции указания /proc/cmdline.

/proc/cmdline удобен тем, что можно что-то подлатать на лету, обойти 
проблемы, но это не лучшее место для хранения конфигурации. Даже 
ядерщики дожили до bootconfig. Я понимаю, что когда ты писал код фич, ты 
не рассчитывал на их повторный запуск. Но как мне быть, если нужно не 
сконфигурированную фичу сконфигурировать и перезапустить? Не делать же 
очередной форк!

Твоя фича рассчитывает на параметры из /proc/cmdline. А полная 
совместимость с пропагатором требует другого синтаксиса, который я мог 
бы расширить. В общем, я прикладываю усилия, чтобы использовать твою 
готовую фичу. И кажется, это удалось! Я же как раз не хочу делать форк 
всей или даже части фичи network, хотя и она "часть замены пропагатора", 
напротив, есть желание пристроится к уже готовому.


> [...]
> Я с самого начала обсуждения диалогов говорил, что они должны быть сделаны
> на системном уровне, чтобы весь код был готов к изменению параметров, но
> почему-то меня не услышали.

Тебе видней, как это реализовать на системном уровне, разве кто-то будет 
возражать! Я не так хорошо пока знаю архитектуру make-initrd, но 
предлагал перетащить на верхний уровень bootchain-interactive. Кстати, 
только сегодня думал, что может как раз не стоит перетаскивать, а лучше 
оставить в составе пошаговой загрузки на отдельном терминале. Потому что 
разные фичи (запущенные демоны) должны выстраиваться в очередь, диалоги 
не должны мешаться, они не всегда бывают диалогами ввода. Про перевод 
всех параметров /proc/cmdline в форму диалогов я правда слышу в первый 
раз. Мне кажется сомнительной такая возможность. Но пристраивание 
диалогов к имеющимся фичам мы тоже хотели с тобой обсудить и возможно 
нам сегодня удалось это реализовать, ниже-то речь как раз об этом:

>>>> Если удастся найти рабочий вариант с диалогами настройки сети "вдогонку", у
>>>> нас снимется много вопросов о том, как интегрировать bootchain/interactive с
>>>> уже имеющимися фичами make-initrd. Будет хороший пример, как это можно
>>>> сделать.


P.S.: Если хочешь, давай остановимся на версии 0.1.5-alt3 и начнём её 
апстримить. Вот прямо сегодня! :-) А там уже будем обсуждать изменения, 
необходимые сразу и после апстрима. Я уверен, что хуже от этого никому 
не станет. Даже если что-то там ещё окажется не идеальным, наличие 
altboot внутри make-initrd не помешает никому собирать образы с 
проверенным пропагатором. И никто не заставляет ставить фичи типа 
make-initrd-bootchain в свою систему. К тому же эта версия последняя, 
исправляющая замечания, две следующие планировались по "хотелкам", 
которые можно отложить на полгода. Самое жёсткое пересечение -- это форк 
фичи pipeline в bootchain, только оно может затронуть нынешних 
пользователей pipeline, коих не так много.


-- 
Best regards,
Leonid Krivoshein.



  reply	other threads:[~2021-09-22 22:06 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-17 20:48 Leonid Krivoshein
2021-09-17 22:08 ` Alexey Gladkov
2021-09-19 21:50   ` Leonid Krivoshein
2021-09-21 22:51     ` Leonid Krivoshein
2021-09-22  0:16       ` Leonid Krivoshein
2021-09-22 10:01       ` Alexey Gladkov
2021-09-22 10:09     ` Alexey Gladkov
2021-09-22 10:56       ` Leonid Krivoshein
2021-09-22 11:41         ` Alexey Gladkov
2021-09-22 12:06           ` Leonid Krivoshein
2021-09-22 13:08             ` Alexey Gladkov
2021-09-22 14:46                 ` Alexey Gladkov
2021-09-22 16:12                   ` Leonid Krivoshein
2021-09-22 19:03                     ` Alexey Gladkov
2021-09-22 22:06                       ` Leonid Krivoshein [this message]
2021-09-23  0:45                         ` Alexey Gladkov
2021-09-23  2:31                           ` Антон Мидюков
2021-09-23  8:59                             ` Alexey Gladkov
2021-09-23 20:40                               ` Leonid Krivoshein
2021-09-23 21:15                                 ` Alexey Gladkov
2021-09-23 21:55                                   ` Arseny Maslennikov
2021-09-23 22:41                                     ` Alexey Gladkov
2021-09-23 22:51                                       ` Leonid Krivoshein
2021-09-23 22:56                                   ` Leonid Krivoshein
2021-09-23 23:31                                     ` Alexey Gladkov
2021-09-23  2:40                           ` Leonid Krivoshein
2021-09-23 11:38                             ` Alexey Gladkov
2021-09-24 17:31                               ` Leonid Krivoshein
2021-09-24 18:35                                 ` Leonid Krivoshein
2021-09-24 19:00                                 ` Alexey Gladkov
2021-09-24 20:09                                   ` Leonid Krivoshein
2024-03-07 19:18   ` Leonid Krivoshein
2024-03-12 17:42     ` 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=b5a40877-30a3-6d5b-8664-a53e85528594@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