Здравствуйте Подскажите, что нужно прописать в initrd.mk, чтобы добавить udev правило в initrd? Хочу ради эксперимента добавить /lib/udev/rules.d/80-net-setup-link.rules. Кажется, именно оно отвечает за то, что сетевые интерфейсы переименовываются в в enp0s8 подобные названия. Обнаружил, что сетевой интерфейс включенный в initrd остаётся с именем eth0 при сетевой установке. Что приводит к тому, что в инсталяторе настраиваем eth0, а в установленной системе имеем его с именем enp0s8 подобным без конфигурации. Так что к установленной системе по сети после установки уже можно и не подключиться (сетевой интерфейс подключен один). Соответственно, появилась мысль, что нужно отработать в initrd udev-правило переименования интерфейса. -- С уважением, Антон Мидюков <antohami@basealt.ru>
On Thu, Sep 23, 2021 at 08:37:08PM +0700, Антон Мидюков wrote: > Здравствуйте > > Подскажите, что нужно прописать в initrd.mk, чтобы добавить udev правило в initrd? > Хочу ради эксперимента добавить /lib/udev/rules.d/80-net-setup-link.rules. Это можно сделать двумя способами. Либо с помощью фичи add-udev-rules, которая активна по умолчанию: PUT_UDEV_RULES += *-net-setup-link.rules либо просто: PUT_FILES += /lib/udev/rules.d/80-net-setup-link.rules > Кажется, именно оно отвечает за то, что сетевые интерфейсы переименовываются в > в enp0s8 подобные названия. Это не оно. > Обнаружил, что сетевой интерфейс включенный в initrd остаётся с именем eth0 при сетевой > установке. Что приводит к тому, что в инсталяторе настраиваем eth0, а в установленной системе > имеем его с именем enp0s8 подобным без конфигурации. Так что к установленной системе по сети после установки уже > можно и не подключиться (сетевой интерфейс подключен один). Переименовывает systemd или что-то около его. Насколько я помню на это влияет присутствие dmidecode. Это не моё дело, но инсталлер неправ, когда использует имена без последующей привязки имени к mac или businfo. > Соответственно, появилась мысль, что нужно отработать в initrd udev-правило переименования интерфейса. initrd как раз ничего не переименовывает. Имя eth* каноническое. -- Rgrds, legion
23.09.2021 21:05, Alexey Gladkov пишет: > On Thu, Sep 23, 2021 at 08:37:08PM +0700, Антон Мидюков wrote: >> Здравствуйте >> >> Подскажите, что нужно прописать в initrd.mk, чтобы добавить udev правило в initrd? >> Хочу ради эксперимента добавить /lib/udev/rules.d/80-net-setup-link.rules. > > Это можно сделать двумя способами. Либо с помощью фичи add-udev-rules, > которая активна по умолчанию: > > PUT_UDEV_RULES += *-net-setup-link.rules > Спасибо! > либо просто: > > PUT_FILES += /lib/udev/rules.d/80-net-setup-link.rules > >> Кажется, именно оно отвечает за то, что сетевые интерфейсы переименовываются в >> в enp0s8 подобные названия. > > Это не оно. > >> Обнаружил, что сетевой интерфейс включенный в initrd остаётся с именем eth0 при сетевой >> установке. Что приводит к тому, что в инсталяторе настраиваем eth0, а в установленной системе >> имеем его с именем enp0s8 подобным без конфигурации. Так что к установленной системе по сети после установки уже >> можно и не подключиться (сетевой интерфейс подключен один). > > Переименовывает systemd или что-то около его. Насколько я помню на это > влияет присутствие dmidecode. > > Это не моё дело, но инсталлер неправ, когда использует имена без > последующей привязки имени к mac или businfo>> Соответственно, появилась мысль, что нужно отработать в initrd udev-правило переименования интерфейса. > > initrd как раз ничего не переименовывает. Имя eth* каноническое. > Это я знаю. Но проблема в том, что уже поднятый интерфейс не переименовывается в stage2. Отсюда мысль, что нужно переименовать его ещё в initrd до его поднятия. -- С уважением, Антон Мидюков <antohami@basealt.ru>
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 или в системе их кто-то всё равно пытается переименовать ? -- Rgrds, legion
[-- Attachment #1: Type: text/plain, Size: 3108 bytes --] On Thu, Sep 23, 2021 at 04:05:46PM +0200, Alexey Gladkov wrote: > On Thu, Sep 23, 2021 at 08:37:08PM +0700, Антон Мидюков wrote: > > Здравствуйте > > > > Подскажите, что нужно прописать в initrd.mk, чтобы добавить udev правило в initrd? > > Хочу ради эксперимента добавить /lib/udev/rules.d/80-net-setup-link.rules. > > Это можно сделать двумя способами. Либо с помощью фичи add-udev-rules, > которая активна по умолчанию: > > PUT_UDEV_RULES += *-net-setup-link.rules > > либо просто: > > PUT_FILES += /lib/udev/rules.d/80-net-setup-link.rules > > > Кажется, именно оно отвечает за то, что сетевые интерфейсы переименовываются в > > в enp0s8 подобные названия. > > Это не оно. > > > Обнаружил, что сетевой интерфейс включенный в initrd остаётся с именем eth0 при сетевой > > установке. Что приводит к тому, что в инсталяторе настраиваем eth0, а в установленной системе > > имеем его с именем enp0s8 подобным без конфигурации. Так что к установленной системе по сети после установки уже > > можно и не подключиться (сетевой интерфейс подключен один). > > Переименовывает systemd или что-то около его. Переименовывает сам udevd, т. е. его встроеннный компонент: https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-net_setup_link.c https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-net_id.c >> % cat /lib/udev/rules.d/80-net-setup-link.rules >> # do not edit this file, it will be overwritten on update >> >> SUBSYSTEM!="net", GOTO="net_setup_link_end" >> >> IMPORT{builtin}="path_id" >> >> ACTION=="remove", GOTO="net_setup_link_end" >> >> IMPORT{builtin}="net_setup_link" ^^^^^^^^^^^^^^ Вот здесь этот компонент и вступает в игру. >> >> NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}" >> >> LABEL="net_setup_link_end" > Насколько я помню на это > влияет присутствие dmidecode. > > Это не моё дело, но инсталлер неправ, когда использует имена без > последующей привязки имени к mac или businfo. > > > Соответственно, появилась мысль, что нужно отработать в initrd udev-правило переименования интерфейса. > > initrd как раз ничего не переименовывает. Имя eth* каноническое. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --]
On Thu, Sep 23, 2021 at 05:43:07PM +0300, Arseny Maslennikov wrote: > On Thu, Sep 23, 2021 at 04:05:46PM +0200, Alexey Gladkov wrote: > > On Thu, Sep 23, 2021 at 08:37:08PM +0700, Антон Мидюков wrote: > > > Здравствуйте > > > > > > Подскажите, что нужно прописать в initrd.mk, чтобы добавить udev правило в initrd? > > > Хочу ради эксперимента добавить /lib/udev/rules.d/80-net-setup-link.rules. > > > > Это можно сделать двумя способами. Либо с помощью фичи add-udev-rules, > > которая активна по умолчанию: > > > > PUT_UDEV_RULES += *-net-setup-link.rules > > > > либо просто: > > > > PUT_FILES += /lib/udev/rules.d/80-net-setup-link.rules > > > > > Кажется, именно оно отвечает за то, что сетевые интерфейсы переименовываются в > > > в enp0s8 подобные названия. > > > > Это не оно. > > > > > Обнаружил, что сетевой интерфейс включенный в initrd остаётся с именем eth0 при сетевой > > > установке. Что приводит к тому, что в инсталяторе настраиваем eth0, а в установленной системе > > > имеем его с именем enp0s8 подобным без конфигурации. Так что к установленной системе по сети после установки уже > > > можно и не подключиться (сетевой интерфейс подключен один). > > > > Переименовывает systemd или что-то около его. > > Переименовывает сам udevd, т. е. его встроеннный компонент: > https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-net_setup_link.c > https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-net_id.c Пытается переименовать именно оно, вы правы. Но делает она по каким-то полиси: https://github.com/systemd/systemd/blob/42ffc40ce382dfda5f2a100698673bc252a72194/src/udev/net/link-config.c#L455 > >> % cat /lib/udev/rules.d/80-net-setup-link.rules > >> # do not edit this file, it will be overwritten on update > >> > >> SUBSYSTEM!="net", GOTO="net_setup_link_end" > >> > >> IMPORT{builtin}="path_id" > >> > >> ACTION=="remove", GOTO="net_setup_link_end" > >> > >> IMPORT{builtin}="net_setup_link" > ^^^^^^^^^^^^^^ > Вот здесь этот компонент и вступает в игру. > >> > >> NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}" > >> > >> LABEL="net_setup_link_end" Но это правило есть и у меня на системе, но переименования не случается. Почему этого не происходит у меня я пока не понял. -- Rgrds, legion
[-- Attachment #1: Type: text/plain, Size: 2885 bytes --] On Thu, Sep 23, 2021 at 05:22:22PM +0200, Alexey Gladkov wrote: > On Thu, Sep 23, 2021 at 05:43:07PM +0300, Arseny Maslennikov wrote: > > On Thu, Sep 23, 2021 at 04:05:46PM +0200, Alexey Gladkov wrote: > > > On Thu, Sep 23, 2021 at 08:37:08PM +0700, Антон Мидюков wrote: > > > > Обнаружил, что сетевой интерфейс включенный в initrd остаётся с именем eth0 при сетевой > > > > установке. Что приводит к тому, что в инсталяторе настраиваем eth0, а в установленной системе > > > > имеем его с именем enp0s8 подобным без конфигурации. Так что к установленной системе по сети после установки уже > > > > можно и не подключиться (сетевой интерфейс подключен один). > > > > > > Переименовывает systemd или что-то около его. > > > > Переименовывает сам udevd, т. е. его встроенный компонент: > > https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-net_setup_link.c > > https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-net_id.c > > Пытается переименовать именно оно, вы правы. Но делает она по каким-то > полиси: > > https://github.com/systemd/systemd/blob/42ffc40ce382dfda5f2a100698673bc252a72194/src/udev/net/link-config.c#L455 ...Описанным в systemd.link(5). [1] > > >> % cat /lib/udev/rules.d/80-net-setup-link.rules > > >> # do not edit this file, it will be overwritten on update > > >> > > >> SUBSYSTEM!="net", GOTO="net_setup_link_end" > > >> > > >> IMPORT{builtin}="path_id" > > >> > > >> ACTION=="remove", GOTO="net_setup_link_end" > > >> > > >> IMPORT{builtin}="net_setup_link" > > ^^^^^^^^^^^^^^ > > Вот здесь этот компонент и вступает в игру. > > >> > > >> NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}" > > >> > > >> LABEL="net_setup_link_end" > > Но это правило есть и у меня на системе, но переименования не случается. > Почему этого не происходит у меня я пока не понял. Может, лежит в нужном месте .link-файл, в котором указано не переименовывать (см. ман-страницу). Или не лежит, а замазан (т. е. действительны результаты работы команды `ln -s /dev/null /etc/systemd/network/99-default.link') [1] https://man7.org/linux/man-pages/man5/systemd.link.5.html [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --]
23.09.2021 21:20, Антон Мидюков пишет:
> 23.09.2021 21:05, Alexey Gladkov пишет:
>> On Thu, Sep 23, 2021 at 08:37:08PM +0700, Антон Мидюков wrote:
>>> Здравствуйте
>>>
>>> Подскажите, что нужно прописать в initrd.mk, чтобы добавить udev правило в initrd?
>>> Хочу ради эксперимента добавить /lib/udev/rules.d/80-net-setup-link.rules.
>>
>> Это можно сделать двумя способами. Либо с помощью фичи add-udev-rules,
>> которая активна по умолчанию:
>>
>> PUT_UDEV_RULES += *-net-setup-link.rules
>>
>
> Спасибо!
>
Этот вариант приводит к проблеме. В initrd не попадают:
/etc/udev/rules.d/50-udev-default.rules
/etc/udev/rules.d/60-persistent-input.rules
/etc/udev/rules.d/60-persistent-storage.rules
/etc/udev/rules.d/80-drivers.rules
--
С уважением, Антон Мидюков <antohami@basealt.ru>
On Thu, Sep 23, 2021 at 06:39:38PM +0300, Arseny Maslennikov wrote:
> On Thu, Sep 23, 2021 at 05:22:22PM +0200, Alexey Gladkov wrote:
> > On Thu, Sep 23, 2021 at 05:43:07PM +0300, Arseny Maslennikov wrote:
> > > On Thu, Sep 23, 2021 at 04:05:46PM +0200, Alexey Gladkov wrote:
> > > > On Thu, Sep 23, 2021 at 08:37:08PM +0700, Антон Мидюков wrote:
> > > > > Обнаружил, что сетевой интерфейс включенный в initrd остаётся с именем eth0 при сетевой
> > > > > установке. Что приводит к тому, что в инсталяторе настраиваем eth0, а в установленной системе
> > > > > имеем его с именем enp0s8 подобным без конфигурации. Так что к установленной системе по сети после установки уже
> > > > > можно и не подключиться (сетевой интерфейс подключен один).
> > > >
> > > > Переименовывает systemd или что-то около его.
> > >
> > > Переименовывает сам udevd, т. е. его встроенный компонент:
> > > https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-net_setup_link.c
> > > https://github.com/systemd/systemd/blob/main/src/udev/udev-builtin-net_id.c
> >
> > Пытается переименовать именно оно, вы правы. Но делает она по каким-то
> > полиси:
> >
> > https://github.com/systemd/systemd/blob/42ffc40ce382dfda5f2a100698673bc252a72194/src/udev/net/link-config.c#L455
>
> ...Описанным в systemd.link(5). [1]
>
> > > >> % cat /lib/udev/rules.d/80-net-setup-link.rules
> > > >> # do not edit this file, it will be overwritten on update
> > > >>
> > > >> SUBSYSTEM!="net", GOTO="net_setup_link_end"
> > > >>
> > > >> IMPORT{builtin}="path_id"
> > > >>
> > > >> ACTION=="remove", GOTO="net_setup_link_end"
> > > >>
> > > >> IMPORT{builtin}="net_setup_link"
> > > ^^^^^^^^^^^^^^
> > > Вот здесь этот компонент и вступает в игру.
> > > >>
> > > >> NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"
> > > >>
> > > >> LABEL="net_setup_link_end"
> >
> > Но это правило есть и у меня на системе, но переименования не случается.
> > Почему этого не происходит у меня я пока не понял.
>
> Может, лежит в нужном месте .link-файл, в котором указано не
> переименовывать (см. ман-страницу). Или не лежит, а замазан (т. е.
> действительны результаты работы команды `ln -s /dev/null
> /etc/systemd/network/99-default.link')
>
> [1] https://man7.org/linux/man-pages/man5/systemd.link.5.html
У меня нет systemd вообще. Также нет каталога /etc/systemd/network.
Ну да ладно. Видимо, это частности конкретной системы.
--
Rgrds, legion
On Thu, Sep 23, 2021 at 11:12:35PM +0700, Антон Мидюков wrote:
> Этот вариант приводит к проблеме. В initrd не попадают:
> /etc/udev/rules.d/50-udev-default.rules
> /etc/udev/rules.d/60-persistent-input.rules
> /etc/udev/rules.d/60-persistent-storage.rules
> /etc/udev/rules.d/80-drivers.rules
# initrd-ls /boot/initrd.img |grep -e udev-default.rules -e persistent-input.rules -e persistent-storage.rules -e drivers.rules
2 -rw-r--r-- 1 0 0 3885 Jan 01 01:00:00 1970 ./etc/udev/rules.d/50-udev-default.rules
2 -rw-r--r-- 1 0 0 2651 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-input.rules
2 -rw-r--r-- 1 0 0 7967 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-storage.rules
2 -rw-r--r-- 1 0 0 556 Jan 01 01:00:00 1970 ./etc/udev/rules.d/80-drivers.rules
За их попадание отвечает add-udev-rules.
Расскажите, как собираете образ и какая версия make-initrd ?
--
Rgrds, legion
24.09.2021 02:13, Alexey Gladkov пишет:
> On Thu, Sep 23, 2021 at 11:12:35PM +0700, Антон Мидюков wrote:
>> Этот вариант приводит к проблеме. В initrd не попадают:
>> /etc/udev/rules.d/50-udev-default.rules
>> /etc/udev/rules.d/60-persistent-input.rules
>> /etc/udev/rules.d/60-persistent-storage.rules
>> /etc/udev/rules.d/80-drivers.rules
>
> # initrd-ls /boot/initrd.img |grep -e udev-default.rules -e persistent-input.rules -e persistent-storage.rules -e drivers.rules
> 2 -rw-r--r-- 1 0 0 3885 Jan 01 01:00:00 1970 ./etc/udev/rules.d/50-udev-default.rules
> 2 -rw-r--r-- 1 0 0 2651 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-input.rules
> 2 -rw-r--r-- 1 0 0 7967 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-storage.rules
> 2 -rw-r--r-- 1 0 0 556 Jan 01 01:00:00 1970 ./etc/udev/rules.d/80-drivers.rules
>
> За их попадание отвечает add-udev-rules.
>
> Расскажите, как собираете образ и какая версия make-initrd ?
>
Собираю в mkimage-profiles regular-net-install.iso:
make-initrd 2.24.0-alt1
make-initrd --no-checks AUTODETECT= -v -k 5.13.18-un-def-alt1
В нормальном режиме воспроизвести не получается.
Если добавляю в /etc/initrd.mk:
PUT_UDEV_RULES += *-net-setup-link.rules
В выводе make-initrd:
[00:00:03] Putting udev rules ...
put-rules: Copying udev rules ...
'/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules'
'/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules'
find-udev-rule-externals: import{builtin} = path_id
find-udev-rule-externals: import{builtin} = net_setup_link
put-tree: Copying '/tmp/make-initrd.qK7agTPYz/modules' recursively ...
Если не добавляю, то:
[00:00:01] Putting udev rules ...
put-rules: Copying udev rules ...
'/usr/share/make-initrd/features/add-udev-rules/rules.d/50-udev-default.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/50-udev-default.rules'
'/usr/share/make-initrd/features/add-udev-rules/rules.d/60-persistent-input.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/60-persistent-input.rules'
'/usr/share/make-initrd/features/add-udev-rules/rules.d/60-persistent-storage.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/60-persistent-storage.rules'
'/usr/share/make-initrd/features/add-udev-rules/rules.d/80-drivers.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/80-drivers.rules'
put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/50-udev-default.rules
put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/60-persistent-storage.rules
put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/80-drivers.rules
find-udev-rule-externals: run{builtin} = kmod load $env{MODALIAS}
find-udev-rule-externals: run{builtin} = kmod load tifm_sd
find-udev-rule-externals: run{builtin} = kmod load tifm_ms
find-udev-rule-externals: run{builtin} = kmod load ms_block mspro_block
find-udev-rule-externals: run{builtin} = kmod load i2o_block
find-udev-rule-externals: run{builtin} = kmod load ppdev
find-udev-rule-externals: run{builtin} = kmod load sm_ftl
find-udev-rule-externals: import{program} = ata_id --export $devnode
find-udev-rule-externals: import{program} = ata_id --export $devnode
find-udev-rule-externals: import{program} = ata_id --export $devnode
find-udev-rule-externals: import{builtin} = usb_id
find-udev-rule-externals: import{program} = scsi_id --export --whitelisted -d $devnode
find-udev-rule-externals: import{program} = scsi_id --export --whitelisted -d $devnode
find-udev-rule-externals: import{builtin} = path_id
find-udev-rule-externals: import{builtin} = blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}
find-udev-rule-externals: import{builtin} = blkid --noraid
find-udev-rule-externals: import{builtin} = blkid
find-udev-rule-externals: import{builtin} = usb_id
find-udev-rule-externals: import{builtin} = path_id
find-udev-rule-externals: run{program} = $env{REMOVE_CMD}
find-udev-rule-externals: import{builtin} = usb_id
find-udev-rule-externals: import{builtin} = hwdb --subsystem=usb
find-udev-rule-externals: import{builtin} = hwdb --subsystem=$env{SUBSYSTEM}
put-tree: Copying '/tmp/make-initrd.HHFhQe74V/modules' recursively ...
--
С уважением, Антон Мидюков <antohami@basealt.ru>
24.09.2021 11:22, Антон Мидюков пишет:
> 24.09.2021 02:13, Alexey Gladkov пишет:
>> On Thu, Sep 23, 2021 at 11:12:35PM +0700, Антон Мидюков wrote:
>>> Этот вариант приводит к проблеме. В initrd не попадают:
>>> /etc/udev/rules.d/50-udev-default.rules
>>> /etc/udev/rules.d/60-persistent-input.rules
>>> /etc/udev/rules.d/60-persistent-storage.rules
>>> /etc/udev/rules.d/80-drivers.rules
>>
>> # initrd-ls /boot/initrd.img |grep -e udev-default.rules -e persistent-input.rules -e persistent-storage.rules -e drivers.rules
>> 2 -rw-r--r-- 1 0 0 3885 Jan 01 01:00:00 1970 ./etc/udev/rules.d/50-udev-default.rules
>> 2 -rw-r--r-- 1 0 0 2651 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-input.rules
>> 2 -rw-r--r-- 1 0 0 7967 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-storage.rules
>> 2 -rw-r--r-- 1 0 0 556 Jan 01 01:00:00 1970 ./etc/udev/rules.d/80-drivers.rules
>>
>> За их попадание отвечает add-udev-rules.
>>
>> Расскажите, как собираете образ и какая версия make-initrd ?
>>
>
> Собираю в mkimage-profiles regular-net-install.iso:
>
> make-initrd 2.24.0-alt1
>
> make-initrd --no-checks AUTODETECT= -v -k 5.13.18-un-def-alt1
>
> В нормальном режиме воспроизвести не получается.
> Если добавляю в /etc/initrd.mk:
> PUT_UDEV_RULES += *-net-setup-link.rules
>
> В выводе make-initrd:
>
> [00:00:03] Putting udev rules ...
> put-rules: Copying udev rules ...
> '/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules'
> '/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules'
> find-udev-rule-externals: import{builtin} = path_id
> find-udev-rule-externals: import{builtin} = net_setup_link
> put-tree: Copying '/tmp/make-initrd.qK7agTPYz/modules' recursively ...
>
C make-initrd 2.22.0-alt1 на p10 точно также.
--
С уважением, Антон Мидюков <antohami@basealt.ru>
On Fri, Sep 24, 2021 at 11:22:55AM +0700, Антон Мидюков wrote: > 24.09.2021 02:13, Alexey Gladkov пишет: > > On Thu, Sep 23, 2021 at 11:12:35PM +0700, Антон Мидюков wrote: > >> Этот вариант приводит к проблеме. В initrd не попадают: > >> /etc/udev/rules.d/50-udev-default.rules > >> /etc/udev/rules.d/60-persistent-input.rules > >> /etc/udev/rules.d/60-persistent-storage.rules > >> /etc/udev/rules.d/80-drivers.rules > > > > # initrd-ls /boot/initrd.img |grep -e udev-default.rules -e persistent-input.rules -e persistent-storage.rules -e drivers.rules > > 2 -rw-r--r-- 1 0 0 3885 Jan 01 01:00:00 1970 ./etc/udev/rules.d/50-udev-default.rules > > 2 -rw-r--r-- 1 0 0 2651 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-input.rules > > 2 -rw-r--r-- 1 0 0 7967 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-storage.rules > > 2 -rw-r--r-- 1 0 0 556 Jan 01 01:00:00 1970 ./etc/udev/rules.d/80-drivers.rules > > > > За их попадание отвечает add-udev-rules. > > > > Расскажите, как собираете образ и какая версия make-initrd ? > > > > Собираю в mkimage-profiles regular-net-install.iso: > > make-initrd 2.24.0-alt1 > > make-initrd --no-checks AUTODETECT= -v -k 5.13.18-un-def-alt1 Раз уж вы пришли в эту рассылку, то воспользуюсь случаем! )) Я хочу ещё раз обратить внимание, что если пользователь отключает AUTODETECT, по сути переходит в expert mode. Он сам должен добавлять фичи и модули в зависимости от версии make-initrd. Отключение AUTODETECT было реализовано для тех кто хочет собрать себе очень кастомное решение. > В нормальном режиме воспроизвести не получается. > Если добавляю в /etc/initrd.mk: > PUT_UDEV_RULES += *-net-setup-link.rules > > В выводе make-initrd: > > [00:00:03] Putting udev rules ... > put-rules: Copying udev rules ... > '/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules' > '/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules' > find-udev-rule-externals: import{builtin} = path_id > find-udev-rule-externals: import{builtin} = net_setup_link > put-tree: Copying '/tmp/make-initrd.qK7agTPYz/modules' recursively ... Всё верно. Правило добавилось, вызовы утилит нашлись. > Если не добавляю, то: > > [00:00:01] Putting udev rules ... > put-rules: Copying udev rules ... > '/usr/share/make-initrd/features/add-udev-rules/rules.d/50-udev-default.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/50-udev-default.rules' > '/usr/share/make-initrd/features/add-udev-rules/rules.d/60-persistent-input.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/60-persistent-input.rules' > '/usr/share/make-initrd/features/add-udev-rules/rules.d/60-persistent-storage.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/60-persistent-storage.rules' > '/usr/share/make-initrd/features/add-udev-rules/rules.d/80-drivers.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/80-drivers.rules' > put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/50-udev-default.rules > put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/60-persistent-storage.rules > put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/80-drivers.rules Стоп. Вы хотите сказать, что при указании: PUT_UDEV_RULES += *-net-setup-link.rules не попали вот эти правила ? -- Rgrds, legion
24.09.2021 16:53, Alexey Gladkov пишет: > On Fri, Sep 24, 2021 at 11:22:55AM +0700, Антон Мидюков wrote: >> 24.09.2021 02:13, Alexey Gladkov пишет: >>> On Thu, Sep 23, 2021 at 11:12:35PM +0700, Антон Мидюков wrote: >>>> Этот вариант приводит к проблеме. В initrd не попадают: >>>> /etc/udev/rules.d/50-udev-default.rules >>>> /etc/udev/rules.d/60-persistent-input.rules >>>> /etc/udev/rules.d/60-persistent-storage.rules >>>> /etc/udev/rules.d/80-drivers.rules >>> >>> # initrd-ls /boot/initrd.img |grep -e udev-default.rules -e persistent-input.rules -e persistent-storage.rules -e drivers.rules >>> 2 -rw-r--r-- 1 0 0 3885 Jan 01 01:00:00 1970 ./etc/udev/rules.d/50-udev-default.rules >>> 2 -rw-r--r-- 1 0 0 2651 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-input.rules >>> 2 -rw-r--r-- 1 0 0 7967 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-storage.rules >>> 2 -rw-r--r-- 1 0 0 556 Jan 01 01:00:00 1970 ./etc/udev/rules.d/80-drivers.rules >>> >>> За их попадание отвечает add-udev-rules. >>> >>> Расскажите, как собираете образ и какая версия make-initrd ? >>> >> >> Собираю в mkimage-profiles regular-net-install.iso: >> >> make-initrd 2.24.0-alt1 >> >> make-initrd --no-checks AUTODETECT= -v -k 5.13.18-un-def-alt1 > > Раз уж вы пришли в эту рассылку, то воспользуюсь случаем! )) > > Я хочу ещё раз обратить внимание, что если пользователь отключает > AUTODETECT, по сути переходит в expert mode. Он сам должен добавлять фичи > и модули в зависимости от версии make-initrd. > > Отключение AUTODETECT было реализовано для тех кто хочет собрать себе > очень кастомное решение. > Да, сборка универсального initrd для загрузки iso как раз такое кастомное решение. >> В нормальном режиме воспроизвести не получается. >> Если добавляю в /etc/initrd.mk: >> PUT_UDEV_RULES += *-net-setup-link.rules >> >> В выводе make-initrd: >> >> [00:00:03] Putting udev rules ... >> put-rules: Copying udev rules ... >> '/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules' >> '/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules' >> find-udev-rule-externals: import{builtin} = path_id >> find-udev-rule-externals: import{builtin} = net_setup_link >> put-tree: Copying '/tmp/make-initrd.qK7agTPYz/modules' recursively ... > > Всё верно. Правило добавилось, вызовы утилит нашлись. > >> Если не добавляю, то: >> >> [00:00:01] Putting udev rules ... >> put-rules: Copying udev rules ... >> '/usr/share/make-initrd/features/add-udev-rules/rules.d/50-udev-default.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/50-udev-default.rules' >> '/usr/share/make-initrd/features/add-udev-rules/rules.d/60-persistent-input.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/60-persistent-input.rules' >> '/usr/share/make-initrd/features/add-udev-rules/rules.d/60-persistent-storage.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/60-persistent-storage.rules' >> '/usr/share/make-initrd/features/add-udev-rules/rules.d/80-drivers.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/80-drivers.rules' >> put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/50-udev-default.rules >> put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/60-persistent-storage.rules >> put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/80-drivers.rules > > Стоп. Вы хотите сказать, что при указании: > > PUT_UDEV_RULES += *-net-setup-link.rules > > не попали вот эти правила ? > Да. Но вне hasher такое повторить не могу. -- С уважением, Антон Мидюков <antohami@basealt.ru>
On Fri, Sep 24, 2021 at 11:22:55AM +0700, Антон Мидюков wrote:
> 24.09.2021 02:13, Alexey Gladkov пишет:
> > On Thu, Sep 23, 2021 at 11:12:35PM +0700, Антон Мидюков wrote:
> >> Этот вариант приводит к проблеме. В initrd не попадают:
> >> /etc/udev/rules.d/50-udev-default.rules
> >> /etc/udev/rules.d/60-persistent-input.rules
> >> /etc/udev/rules.d/60-persistent-storage.rules
> >> /etc/udev/rules.d/80-drivers.rules
> >
> > # initrd-ls /boot/initrd.img |grep -e udev-default.rules -e persistent-input.rules -e persistent-storage.rules -e drivers.rules
> > 2 -rw-r--r-- 1 0 0 3885 Jan 01 01:00:00 1970 ./etc/udev/rules.d/50-udev-default.rules
> > 2 -rw-r--r-- 1 0 0 2651 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-input.rules
> > 2 -rw-r--r-- 1 0 0 7967 Jan 01 01:00:00 1970 ./etc/udev/rules.d/60-persistent-storage.rules
> > 2 -rw-r--r-- 1 0 0 556 Jan 01 01:00:00 1970 ./etc/udev/rules.d/80-drivers.rules
> >
> > За их попадание отвечает add-udev-rules.
> >
> > Расскажите, как собираете образ и какая версия make-initrd ?
> >
>
> Собираю в mkimage-profiles regular-net-install.iso:
>
> make-initrd 2.24.0-alt1
>
> make-initrd --no-checks AUTODETECT= -v -k 5.13.18-un-def-alt1
>
> В нормальном режиме воспроизвести не получается.
> Если добавляю в /etc/initrd.mk:
> PUT_UDEV_RULES += *-net-setup-link.rules
>
> В выводе make-initrd:
>
> [00:00:03] Putting udev rules ...
> put-rules: Copying udev rules ...
> '/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules'
> '/lib/udev/rules.d/80-net-setup-link.rules' -> '/tmp/make-initrd.qK7agTPYz/modules/etc/udev/rules.d/80-net-setup-link.rules'
> find-udev-rule-externals: import{builtin} = path_id
> find-udev-rule-externals: import{builtin} = net_setup_link
> put-tree: Copying '/tmp/make-initrd.qK7agTPYz/modules' recursively ...
>
> Если не добавляю, то:
>
> [00:00:01] Putting udev rules ...
> put-rules: Copying udev rules ...
> '/usr/share/make-initrd/features/add-udev-rules/rules.d/50-udev-default.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/50-udev-default.rules'
> '/usr/share/make-initrd/features/add-udev-rules/rules.d/60-persistent-input.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/60-persistent-input.rules'
> '/usr/share/make-initrd/features/add-udev-rules/rules.d/60-persistent-storage.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/60-persistent-storage.rules'
> '/usr/share/make-initrd/features/add-udev-rules/rules.d/80-drivers.rules' -> '/tmp/make-initrd.HHFhQe74V/modules/etc/udev/rules.d/80-drivers.rules'
> put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/50-udev-default.rules
> put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/60-persistent-storage.rules
> put-rules: WARNING: Found two udev rules with the same name but different content: /lib/udev/initramfs-rules.d/80-drivers.rules
> find-udev-rule-externals: run{builtin} = kmod load $env{MODALIAS}
> find-udev-rule-externals: run{builtin} = kmod load tifm_sd
> find-udev-rule-externals: run{builtin} = kmod load tifm_ms
> find-udev-rule-externals: run{builtin} = kmod load ms_block mspro_block
> find-udev-rule-externals: run{builtin} = kmod load i2o_block
> find-udev-rule-externals: run{builtin} = kmod load ppdev
> find-udev-rule-externals: run{builtin} = kmod load sm_ftl
> find-udev-rule-externals: import{program} = ata_id --export $devnode
> find-udev-rule-externals: import{program} = ata_id --export $devnode
> find-udev-rule-externals: import{program} = ata_id --export $devnode
> find-udev-rule-externals: import{builtin} = usb_id
> find-udev-rule-externals: import{program} = scsi_id --export --whitelisted -d $devnode
> find-udev-rule-externals: import{program} = scsi_id --export --whitelisted -d $devnode
> find-udev-rule-externals: import{builtin} = path_id
> find-udev-rule-externals: import{builtin} = blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}
> find-udev-rule-externals: import{builtin} = blkid --noraid
> find-udev-rule-externals: import{builtin} = blkid
> find-udev-rule-externals: import{builtin} = usb_id
> find-udev-rule-externals: import{builtin} = path_id
> find-udev-rule-externals: run{program} = $env{REMOVE_CMD}
> find-udev-rule-externals: import{builtin} = usb_id
> find-udev-rule-externals: import{builtin} = hwdb --subsystem=usb
> find-udev-rule-externals: import{builtin} = hwdb --subsystem=$env{SUBSYSTEM}
> put-tree: Copying '/tmp/make-initrd.HHFhQe74V/modules' recursively ...
# initrd-diff /tmp/initrd-5.10.62-std-def-alt1.img{.old,}
--- initrd-5.10.62-std-def-alt1.img.old
+++ initrd-5.10.62-std-def-alt1.img
@@ -366,4 +366 @@
-2 xz -rw-r--r-- 1 0 0 3885 ./etc/udev/rules.d/50-udev-default.rules
-2 xz -rw-r--r-- 1 0 0 2651 ./etc/udev/rules.d/60-persistent-input.rules
-2 xz -rw-r--r-- 1 0 0 7967 ./etc/udev/rules.d/60-persistent-storage.rules
-2 xz -rw-r--r-- 1 0 0 556 ./etc/udev/rules.d/80-drivers.rules
+2 xz -rw-r--r-- 1 0 0 295 ./etc/udev/rules.d/80-net-setup-link.rules
Да, это бага. Спасибо!
Пока что кладите это правило PUT_FILES. Там нет вызова внешних утилит и
ничего страшного не будет.
--
Rgrds, legion
24.09.2021 12:58, Alexey Gladkov пишет:
> # initrd-diff /tmp/initrd-5.10.62-std-def-alt1.img{.old,}
> --- initrd-5.10.62-std-def-alt1.img.old
> +++ initrd-5.10.62-std-def-alt1.img
> @@ -366,4 +366 @@
> -2 xz -rw-r--r-- 1 0 0 3885 ./etc/udev/rules.d/50-udev-default.rules
> -2 xz -rw-r--r-- 1 0 0 2651 ./etc/udev/rules.d/60-persistent-input.rules
> -2 xz -rw-r--r-- 1 0 0 7967 ./etc/udev/rules.d/60-persistent-storage.rules
> -2 xz -rw-r--r-- 1 0 0 556 ./etc/udev/rules.d/80-drivers.rules
> +2 xz -rw-r--r-- 1 0 0 295 ./etc/udev/rules.d/80-net-setup-link.rules
>
> Да, это бага. Спасибо!
>
> Пока что кладите это правило PUT_FILES. Там нет вызова внешних утилит и
> ничего страшного не будет.
В этой связи три вопроса:
1. Ничего, что временно откачу изменения с переходом на PUT_UDEV_RULES?
2. Что надо сделать, чтобы заработала has_feature() ? а то сейчас
command not found.
3. Это нормально, что в /etc/{os,initrd}-release попадает последняя
апстримная версия (2.24.0), а не та, с которой я собираю образ (2.24.1)?
--
Best regards,
Leonid Krivoshein.
24.09.2021 16:17, Leonid Krivoshein пишет: > 2. Что надо сделать, чтобы заработала has_feature() ? а то сейчас > command not found. Ой, с command not found явно мой косяк, видимо не подключен initrd-sh-functions. Этого же достаточно или надо явно включать какую-нибудь фичу? > 3. Это нормально, что в /etc/{os,initrd}-release попадает последняя > апстримная версия (2.24.0), а не та, с которой я собираю образ (2.24.1)? > И 4) как я понял, initrd_release() в API рантайма пока нет? -- Best regards, Leonid Krivoshein.
On Fri, Sep 24, 2021 at 04:17:06PM +0300, Leonid Krivoshein wrote: > > 24.09.2021 12:58, Alexey Gladkov пишет: > > # initrd-diff /tmp/initrd-5.10.62-std-def-alt1.img{.old,} > > --- initrd-5.10.62-std-def-alt1.img.old > > +++ initrd-5.10.62-std-def-alt1.img > > @@ -366,4 +366 @@ > > -2 xz -rw-r--r-- 1 0 0 3885 ./etc/udev/rules.d/50-udev-default.rules > > -2 xz -rw-r--r-- 1 0 0 2651 ./etc/udev/rules.d/60-persistent-input.rules > > -2 xz -rw-r--r-- 1 0 0 7967 ./etc/udev/rules.d/60-persistent-storage.rules > > -2 xz -rw-r--r-- 1 0 0 556 ./etc/udev/rules.d/80-drivers.rules > > +2 xz -rw-r--r-- 1 0 0 295 ./etc/udev/rules.d/80-net-setup-link.rules > > > > Да, это бага. Спасибо! > > > > Пока что кладите это правило PUT_FILES. Там нет вызова внешних утилит и > > ничего страшного не будет. > > В этой связи три вопроса: > > 1. Ничего, что временно откачу изменения с переходом на PUT_UDEV_RULES? Я уже исправил это. Скоро отправлю в master и сделаю новою сборку пакета. Мне кажется лучше подождать фикса. > 2. Что надо сделать, чтобы заработала has_feature() ? а то сейчас command > not found. Эта функция есть всегда: $ git grep has_feature data/bin/initrd-sh-functions:127:has_feature() > 3. Это нормально, что в /etc/{os,initrd}-release попадает последняя > апстримная версия (2.24.0), а не та, с которой я собираю образ (2.24.1)? Откуда у тебя 2.24.1, если такой версии ещё не было ? Расскажи как именно ты собираешь ? -- Rgrds, legion
On Fri, Sep 24, 2021 at 04:52:37PM +0300, Leonid Krivoshein wrote:
>
> 24.09.2021 16:17, Leonid Krivoshein пишет:
> > 2. Что надо сделать, чтобы заработала has_feature() ? а то сейчас
> > command not found.
>
> Ой, с command not found явно мой косяк, видимо не подключен
> initrd-sh-functions.
> Этого же достаточно или надо явно включать какую-нибудь фичу?
>
>
> > 3. Это нормально, что в /etc/{os,initrd}-release попадает последняя
> > апстримная версия (2.24.0), а не та, с которой я собираю образ (2.24.1)?
> >
>
> И 4) как я понял, initrd_release() в API рантайма пока нет?
Видимо я подзабыл про неё. Напомни, эта функция должна возвращать релиз
make-initrd ?
--
Rgrds, legion
24.09.2021 17:29, Alexey Gladkov пишет: > On Fri, Sep 24, 2021 at 04:17:06PM +0300, Leonid Krivoshein wrote: >> 24.09.2021 12:58, Alexey Gladkov пишет: >>> # initrd-diff /tmp/initrd-5.10.62-std-def-alt1.img{.old,} >>> --- initrd-5.10.62-std-def-alt1.img.old >>> +++ initrd-5.10.62-std-def-alt1.img >>> @@ -366,4 +366 @@ >>> -2 xz -rw-r--r-- 1 0 0 3885 ./etc/udev/rules.d/50-udev-default.rules >>> -2 xz -rw-r--r-- 1 0 0 2651 ./etc/udev/rules.d/60-persistent-input.rules >>> -2 xz -rw-r--r-- 1 0 0 7967 ./etc/udev/rules.d/60-persistent-storage.rules >>> -2 xz -rw-r--r-- 1 0 0 556 ./etc/udev/rules.d/80-drivers.rules >>> +2 xz -rw-r--r-- 1 0 0 295 ./etc/udev/rules.d/80-net-setup-link.rules >>> >>> Да, это бага. Спасибо! >>> >>> Пока что кладите это правило PUT_FILES. Там нет вызова внешних утилит и >>> ничего страшного не будет. >> В этой связи три вопроса: >> >> 1. Ничего, что временно откачу изменения с переходом на PUT_UDEV_RULES? > Я уже исправил это. Скоро отправлю в master и сделаю новою сборку пакета. > Мне кажется лучше подождать фикса. > >> 2. Что надо сделать, чтобы заработала has_feature() ? а то сейчас command >> not found. > Эта функция есть всегда: > > $ git grep has_feature > data/bin/initrd-sh-functions:127:has_feature() Да, уже разобрался. >> 3. Это нормально, что в /etc/{os,initrd}-release попадает последняя >> апстримная версия (2.24.0), а не та, с которой я собираю образ (2.24.1)? > Откуда у тебя 2.24.1, если такой версии ещё не было ? > Расскажи как именно ты собираешь ? Локально. А теперь и в таске #285908. Но туда не смотри, я пришлю как договорились отдельными патчами. С первой итерацией уложился в 1.5 суток, тестирование мной прошло успешно. Надеюсь, дальше дело быстрее пойдёт. -- Best regards, Leonid Krivoshein.
24.09.2021 17:31, Alexey Gladkov пишет:
>> 4) как я понял, initrd_release() в API рантайма пока нет?
> Видимо я подзабыл про неё. Напомни, эта функция должна возвращать релиз
> make-initrd ?
У меня аналогичная функция initrd_version() возвращает сейчас строку
"2.24.0", т.е. читает VERSION_ID из релиз-файла.
--
Best regards,
Leonid Krivoshein.
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 уже должна была отработать. Сетевые интерфейсы настроены. > или в системе их кто-то всё равно пытается переименовать ? > Настроенные в initrd интерфейсы никто не переименовывает в stage2. Отсюда и проблема. Мне кажется, нужно передавать правило udev в stage2, чтобы при установке скопировать в устанавливаемую систему. Тогда проблема бы решилась. -- С уважением, Антон Мидюков <antohami@basealt.ru>
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@basealt.ru> > _______________________________________________ > Make-initrd mailing list > Make-initrd@lists.altlinux.org > https://lists.altlinux.org/mailman/listinfo/make-initrd -- Rgrds, legion
27.09.2021 18:38, Антон Мидюков пишет: > 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 уже должна была отработать. Сетевые интерфейсы настроены. > >> или в системе их кто-то всё равно пытается переименовать ? > Настроенные в initrd интерфейсы никто не переименовывает в stage2. Отсюда и проблема. Проблема в другом: когда мы грузимся с сетевыми параметрами, runtime make-initrd настраивает сетевую карту, даже если не переименовывает интерфейс, в другом случае он ничего не делает, так как нет сетевых параметров, тогда это делается в stage2. Как я понял, ты хочешь, чтобы независимо от сетевых параметров настройки интерфейсов были одинаковы в stage1 и stage2, для этого в stage1 нужны правила, которые будут попадать в initramfs и отрабатывать независимо от включенности фичи network. С этим может возникнуть одна проблема: если эти правила не успеют отработать до того, как будет найден корень, данное решение не поможет. К слову, фича network переименовывает интерфейс только если её об этом попросить, лишь в этом случае создаётся 60-persistent-net.rules. > Мне кажется, нужно передавать правило udev в stage2, чтобы при установке скопировать в устанавливаемую > систему. Тогда проблема бы решилась. Ни в коем случае. Потому что суммарный набор правил в stage2 всё равно будет непредсказуемым, stage1 об этом ничего не знает. Наверное, правильное направление -- разместить в stage1 те же udev rules около 8?-network-*, которые есть в stage2, для явного переименования интерфейса может отработать фича network, избежать рейса с тем, кто раньше -- найдётся корень или применятся правила к интерфейсам можно лишь опять же включив явно настройки ip. -- Best regards, 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 для целевой
системы.
--
Best regards,
Leonid Krivoshein.
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.
На этом варианте и остановлюсь.
--
С уважением, Антон Мидюков <antohami@basealt.ru>