[make-initrd] udhcpc script в фиче network
Alexey Gladkov
gladkov.alexey at gmail.com
Fri Sep 24 22:00:28 MSK 2021
On Fri, Sep 24, 2021 at 08:31:50PM +0300, Leonid Krivoshein wrote:
> Привет!
>
>
> 23.09.2021 14:38, Alexey Gladkov пишет:
> > On Thu, Sep 23, 2021 at 05:40:10AM +0300, Leonid Krivoshein wrote:
> > > > Этот репозитории повторяет стратегию make-initrd-propagator, который
> > > > как-то встраивался в make-initrd. И то и другое отдельно стоящие вещи в
> > > > себе. Новый, правда, интегрирован с основным кодом лучше.
> > > Я так понимаю, это всё из-за интеграции с network. Но посуди сам: pipeline и
> > > network, плюс ещё несколько новых фич, это и есть тот набор, что ты сделал
> > > на замену пропагатора, я лишь приделываю к этому диалоги и совместимость с
> > > нынешним stage2. Если что-то не так приделываю, можно же это предметно
> > > обсуждать. Да, я сначала думал делать полный или частичный форк фичи
> > > network, потому что были большие сомнения, что удастся с ней
> > > интегрироваться. Но это последнее, что нужно было altboot, чтобы быть больше
> > > похожим на propagator (по возможностям) и удалось обойтись без форка, в
> > > отличии от pipeline. Ты можешь сказать, чем плоха такая интеграция? http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=9f555ab3a44c83e2c54c949f2d9401d6f6995ed2;hb=0b2522e81ea6279295bae02a8aa77e84c86d3918
> > > -- работает просто идеально.
>
> Тут надо пояснить, что о работе и интеграции говорилось с учётом ранее
> сказанного и того факта, что waitnet времянка снаружи, а не заапстримленный
> код внутри make-initrd. При создании waitnet ставилась совершенно
> определённая цель и в этом плане она выполнена на 100%, далее объясню,
> почему...
>
>
> > К вопросу о ревью: вот и как предполагается комментировать код с git.alt ?
> > Ок, буду по ссылкам.
> >
> > http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=9f555ab3a44c83e2c54c949f2d9401d6f6995ed2;hb=0b2522e81ea6279295bae02a8aa77e84c86d3918#l12
>
> Уже понял, что лучше отдельными патчами в рассылку. Просто, когда-то давно
> ты и так принимал.
>
>
> > Про это я уже писал. Это проверяется не так.
>
> С has_feature() я разобрался. И в новой версии уже она. Но пока код не
> заапстримлен, полагаться на API в make-initrd и тем более привязываться
> жёстко к каким-то фичам весьма рисково: любая твоя новая сборка с таким
> изменением сможет поломать работу ещё не заапстримленного altboot, поэтому я
> иду по пути минимальной привязки на данном этапе. Поэтому и:
>
> > Остальной интегрируется так, что не использует ничего из того с чем
> > интегрируется.
> >
> > http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=9f555ab3a44c83e2c54c949f2d9401d6f6995ed2;hb=0b2522e81ea6279295bae02a8aa77e84c86d3918#l32
> >
> > В network-sh-functions есть ipv4_enabled.
>
> Разумеется, я внимательно изучил код фичи и видел эту функцию.
>
>
> > http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=9f555ab3a44c83e2c54c949f2d9401d6f6995ed2;hb=0b2522e81ea6279295bae02a8aa77e84c86d3918#l51
> >
> > Теряются абсолютно все ошибки. Ошибки в ip=, в macaddr, в указании масок.
> > Вместо всего этого будет "can't reconfigure network settings". Этого быть
> > не должно.
>
> Тут я полностью согласен. Но уже говорил, что код не финальный. waitnet --
> времянка для выяснения конкретной возможности. Если выкинуть этот код,
> выкинуть шаг waitnet из цепочки загрузки, все 4 сетевых метода сейчас будут
> работать без него. Надо будет указывать ip=dhcp в /proc/cmdline или задавать
> другие сетевые настройки. Поэтому отправка в /dev/null сейчас сделана чисто
> чтобы не портить внешний вид диалога, наверное, лучше отправлять в 1>&2 в
> этом месте.
>
>
> > Также я уже говорил, что я думаю про дёргание /lib/initrd/cmdline.d/network.
> >
> > http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=9f555ab3a44c83e2c54c949f2d9401d6f6995ed2;hb=0b2522e81ea6279295bae02a8aa77e84c86d3918#l56
> >
> > Этот шаг можно выполнить лишь один раз.
>
> Не согласен! :-)
Ты делаешь внутри условия запись:
if [ ! -s "$NETBOOT_IFNAME" ]; then
...
echo "$netdev" >"$NETBOOT_IFNAME"
fi
Больше ты этот файл нигде не пишешь:
http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git&a=search&h=0b2522e81ea6279295bae02a8aa77e84c86d3918&st=grep&s=NETBOOT_IFNAME
то есть после записи в этот файл этот if никогда больше не выполнится.
Этот шаг можно выполнить лишь один раз.
> И waitnet демонстрирует это без чистки предыдущей
> конфигурации. Объясню почему. Сейчас waitnet смотрит, была ли выполнена
> конфигурация. И если конфигурировался только lo, то повторный запуск без
> чистки ни на что не повлияет. Он же не создаст дублирующего правила udev,
> т.к. перед дёрганием явно задаётся IFNAME="0".
>
>
> > Это не вяжется у меня с
> >
> > "Can't bridge up network interface. Try with other network settings, wired
> > connection and/or cable."
> >
> > Если пользователь попробует тот же интерфейс с другими настройками, то
> > второй раз проверки не будет ???
>
> На этом диалоге ранее выполнялся перезапуск машины, в версии 0.1.5-alt3
> решил в этом месте перезапустить altboot -- сейчас тут возврат в начальное
> меню, где можно выбрать другой метод загрузки, не по сети. Т.е., прошло 16
> секунд, сеть так и не поднялась. Если этого мало, пользователь дойдёт сюда
> снова. Но может и другой путь выбрать для загрузки.
>
>
> > http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=9f555ab3a44c83e2c54c949f2d9401d6f6995ed2;hb=0b2522e81ea6279295bae02a8aa77e84c86d3918#l65
> >
> > Хардкод имени интерфейса. is_loopback().
>
> Не только, это ещё и break loop / защита от пустого каталога. Обычно я тут
> ставлю "_".
Тогда так и нужно писать:
for d in /sys/class/net/*; do
[ -d "$d" ] || continue
...
done
И не нужно отдельно вписывать lo. Он всегда там есть.
>
> > http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=9f555ab3a44c83e2c54c949f2d9401d6f6995ed2;hb=0b2522e81ea6279295bae02a8aa77e84c86d3918#l67
> >
> > Для чего эта проверка ?
>
> Чтобы предотвратить дальнейшую работу цикла, если мы имеем дело не с сетевым
> интерфейсом.
В этом каталоге только сетевые интерфейсы.
> И ещё проверка того факта, что с момента вышестоящей команды ls
> интерфейс не исчез.
Это бессмысленно т.к. интерфейс может исчезнуть сразу после этой проверки.
> > http://git.altlinux.org/tasks/index/sisyphus/tested/285722/gears/100/git?p=git;a=blob;f=bootchain-waitnet/data/lib/bootchain/waitnet;h=9f555ab3a44c83e2c54c949f2d9401d6f6995ed2;hb=0b2522e81ea6279295bae02a8aa77e84c86d3918#l73
> >
> > Я полагаю это проверка на то что интерфейс поднят ? Если да, то is_link_up
> > Если проверка на присутствие адреса, то "/.initrd/online/$NET_IF".
>
> Да, разумеется, про более тесную интеграцию я уже выше написал. Где-то ранее
> мы как раз обсуждали, ты же сам и говорил, что надёжнее не дёргать
> внутренности make-initrd, а проверять через ip.
Эм. Кажется, ты меня неправильно понял. Где я такое писал ?
> waitnet -- "проверка боем" того факта, что внутри make-initrd можно повторно
> дёрнуть фичу network, выполнив конфигурирование в том случае, если его ещё
> не было, возможность передать ему вполне конкретные настройки. Правильное
> название этой фичи -- bootchain-network, правильное название шага с
> диалогами (!) -- neconfig или netsetup, основная цель -- "не делать форк
> фичи network" достигнута.
>
> Разумеется, netconfig/netsetup при апстириме нужно будет интегрировать с
> фичей network более жёстко, но тогда тебе придётся следить в обеих местах,
> чтобы не разъезжалось. Собственно, именно это и было целью эксперимента
> "waitnet", и целью одной из так и не состоявшихся встреч -- обсудить
> принципиальную возможность интеграции существующих фич с
> bootchain/interactive.
>
>
> > > > Кроме того, если тебе нужно поведение propagator, то он уже есть и незачем
> > > > его переизобретать.
> > > Выше озвучивались не просто общие слова -- у нас куча граблей и нет способа
> > > быстро перейти на make-initrd + pipeline с ними. Вот простейший пример, мы
> > > готовимся избавиться от isolinux для legacy/x86, но сколько это будет
> > > тянуться -- неизвестно. Он сам (его брэндинг) добавляет опции пропагатора в
> > > загрузку и на это приходится ориентироваться, так как если не работает,
> > > сразу баг.
> > Я уж не знаю вашей кухни, но вообще-то, да, это сразу бага.
> > Бага на брэндинг. Он передаёт устаревшие параметры.
>
> Всё так, но надо учитывать, что их куча, и нет цели и возможности исправить
> это всё сразу.
Это не оправдание для костылей любой ценой в новом коде.
> > [...]
> > А тут ты про некую последовательность коммитов говорил, но где они ???
> > Я до сих пор не получил ни одного коммита. Все эти разговоры пустая
> > болтовня какая-то.
>
> И с этим вроде разобрались, а то github, ещё PR какой-то.
Я предложил несколько альтернативных вариантов. В целом, github это всё
тот же git репозиторий, только в дополнение он сам вызывает некоторые мои
тесты.
--
Rgrds, legion
More information about the Make-initrd
mailing list