From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,BAYES_00, RP_MATCHES_RCVD autolearn=unavailable autolearn_force=no version=3.4.1 Message-ID: Date: Wed, 29 Sep 2021 11:18:15 +0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.1 Content-Language: ru To: make-initrd@lists.altlinux.org References: <0449f9ee-3752-0972-a40d-5f3f50f5e6e9@basealt.ru> <20210923140546.kho57ezxxsh74nwt@example.org> <20210923143624.pv4hbukvgtt77t4f@example.org> <37bffecd-1b55-87c7-9c0e-da391998f62b@basealt.ru> <20210927155920.ceczqzlt65qhbygu@example.org> <444f9100-b03b-16c9-08b2-1c36952c2eac@gmail.com> From: =?UTF-8?B?0JDQvdGC0L7QvSDQnNC40LTRjtC60L7Qsg==?= In-Reply-To: <444f9100-b03b-16c9-08b2-1c36952c2eac@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: Re: [make-initrd] =?utf-8?b?0JTQvtCx0LDQstC40YLRjCB1ZGV2INC/0YDQsNCy?= =?utf-8?b?0LjQu9C+INCyIGluaXRyZCDRh9C10YDQtdC3IGluaXRyZC5taw==?= X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Sep 2021 04:18:22 -0000 Archived-At: List-Archive: 28.09.2021 01:54, Leonid Krivoshein пишет: > > 27.09.2021 18:59, Alexey Gladkov пишет: >> 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 и какой версии. > > Насколько я понял, проблема затрагивает только stage2 с универсальной загрузкой, даже точнее инсталлятор, который настраивает eth0, если мы грузимся изначально по сети, а в установленной системе после перезагрузки там оказывается какой-нибудь enp0s3 с настройкой etcnet для eth0. > > Тут вопрос в том, что конкретно в systemd/udevd отвечает за данное переименование, почему оно не срабатывает в том случае, если мы уже подняли сеть в stage1 и как сделать, чтобы если сеть поднималась в stage1, интерфейсу давалось аналогичное имя? Или наоборот: чтобы если мы его уже настроили как eth0, то чтобы оно не переименовывалось? Кстати, ведь тут можно генерировать тот же 60-persistent-net.rule для целевой системы. > Наконец-то разобрался. Нужно в /etc/initrd.mk дописать: PUT_UDEV_RULES += *-net-setup-link.rules *-net-description.rules PUT_FILES += /lib/systemd/network/99-default.link Только нужен исправленный make-initrd-2.24.0-alt2. На этом варианте и остановлюсь. -- С уважением, Антон Мидюков