[make-initrd] Добавить udev правило в initrd через initrd.mk

Alexey Gladkov gladkov.alexey at gmail.com
Mon Sep 27 18:59:20 MSK 2021


On Mon, Sep 27, 2021 at 10:38:40PM +0700, Антон Мидюков wrote:
> 23.09.2021 21:36, Alexey Gladkov пишет:
> > On Thu, Sep 23, 2021 at 09:20:44PM +0700, Антон Мидюков wrote:
> >>>> Обнаружил, что сетевой интерфейс включенный в initrd остаётся с именем eth0 при сетевой
> >>>> установке. Что приводит к тому, что в инсталяторе настраиваем eth0, а в установленной системе
> >>>> имеем его с именем enp0s8 подобным без конфигурации. Так что к установленной системе по сети после установки уже
> >>>> можно и не подключиться (сетевой интерфейс подключен один).
> >>>
> >>> Переименовывает systemd или что-то около его. Насколько я помню на это
> >>> влияет присутствие dmidecode.
> >>>
> >>> Это не моё дело, но инсталлер неправ, когда использует имена без
> >>> последующей привязки имени к mac или businfo>> Соответственно, появилась мысль, что нужно отработать в initrd udev-правило переименования интерфейса.
> >>>
> >>> initrd как раз ничего не переименовывает. Имя eth* каноническое.
> >>>
> >>
> >> Это я знаю. Но проблема в том, что уже поднятый интерфейс не переименовывается в stage2.
> >> Отсюда мысль, что нужно переименовать его ещё в initrd до его поднятия.
> > 
> > Я предлагал наоборот в stage2 добавить аналог цикла:
> > 
> > https://github.com/osboot/make-initrd/blob/master/features/network/data/lib/initrd/cmdline.d/network#L165-L175
> > 
> 
> Возможно, это хорошая идея.
> Но почему-то я не увидел /etc/udev/rules.d/60-persistent-net.rules в initrd.
> Загружался с ip=dhcp stop=bootchain
> Фича network уже должна была отработать. Сетевые интерфейсы настроены.

Правила /etc/udev/rules.d/60-persistent-net.rules создаются/дополняются
только в случае если пользователь указал ifname=.

Я подумал, что ненужно лезть без спросу куда не просили. Но ничего не
мешает фиксировать интерфейсы в правилах всегда.

Можно даже передавать эту информацию в том или ином виде через
/dev/initramfs/ следующему шагу.

> > или в системе их кто-то всё равно пытается переименовать ?
> > 
> 
> Настроенные в initrd интерфейсы никто не переименовывает в stage2. Отсюда и проблема.
> Мне кажется, нужно передавать правило udev в stage2, чтобы при установке скопировать в устанавливаемую
> систему. Тогда проблема бы решилась.

Можно передавать правило. Можно передавать более общую информацию, на
основе которой можно сгенерировать не только правило. Например, если был
передан ip=dhcp то initrd может передать на каком интерфейсе отозвался
dhcpd и какой версии.

> -- 
> С уважением, Антон Мидюков <antohami at basealt.ru>
> _______________________________________________
> Make-initrd mailing list
> Make-initrd at lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/make-initrd

-- 
Rgrds, legion



More information about the Make-initrd mailing list