| Summary: | Cannot migrate network interface because there is no usable MAC address on this system | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vladislav Glinkin <glinkinvd> | ||||
| Component: | rear | Assignee: | Andrew Vasilyev <andy> | ||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | andy | ||||
| Version: | unstable | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
(Ответ для Vladislav Glinkin на комментарий #0) > layout/save/default/450_check_network_files.sh - отвечает за > конфигурационные файлы сетевой подсистемы. Тут, кстати говоря, вообще ни > слова об etcnet Разумеется, откуда им знать про etcnet? > rescue/GNU/Linux/310_network_devices.sh - генерирует сетевые устройства на > основе запущенной системы Здесь сказано, что параметры сети можно задать при загрузке ядра: ip=192.168.100.2 nm=255.255.255.0 netdev=ens19 gw=192.168.100.1 ("# If IP address plus optionally netmask, network device, and default gateway # were specified at recovery system boot time via kernel command line parameters like ...") (Ответ для Andrew Vasilyev на комментарий #1) > Разумеется, откуда им знать про etcnet? Это я к тому, что, возможно, для Альта будет полезно копировать её в собираемый образ. > Здесь сказано, что параметры сети можно задать при загрузке ядра: > > ip=192.168.100.2 nm=255.255.255.0 netdev=ens19 gw=192.168.100.1 > > ("# If IP address plus optionally netmask, network device, and default > gateway > # were specified at recovery system boot time via kernel command line > parameters like ...") Да, так можно делать передав всё это в KERNEL_CMDLINE="'ip=..' 'nm=...' 'netdev=...' 'gw=...'" в файле /etc/rear/local.conf Но толку от этого не будет, поскольку здесь проблема заключается в отсутствии сетевых интерфейсов, а не в их некорректной конфигурации. (Ответ для Vladislav Glinkin на комментарий #2) > (Ответ для Andrew Vasilyev на комментарий #1) > > Разумеется, откуда им знать про etcnet? > Это я к тому, что, возможно, для Альта будет полезно копировать её в > собираемый образ. А смысл? Кто их будет использовать? > > Здесь сказано, что параметры сети можно задать при загрузке ядра: > > > > ip=192.168.100.2 nm=255.255.255.0 netdev=ens19 gw=192.168.100.1 > > > > ("# If IP address plus optionally netmask, network device, and default > > gateway > > # were specified at recovery system boot time via kernel command line > > parameters like ...") > > Да, так можно делать передав всё это в KERNEL_CMDLINE="'ip=..' 'nm=...' > 'netdev=...' 'gw=...'" в файле /etc/rear/local.conf > > Но толку от этого не будет, поскольку здесь проблема заключается в > отсутствии сетевых интерфейсов, а не в их некорректной конфигурации. Т.е. "ip link set dev ens19 up" не поможет? Значит, в образе нет сетевых драйверов и ядро не видит сетевые адаптеры. Это тупик. (Ответ для Andrew Vasilyev на комментарий #3) > Т.е. "ip link set dev ens19 up" не поможет? Значит, в образе нет > сетевых драйверов и ядро не видит сетевые адаптеры. Это тупик. Такого тупика быть не должно. Да, как оказывается, причина была в том, что модули ядра не грузились. Согласно /usr/share/rear/conf/default.conf порядок таков: # Enforce to load these modules in the given order in the rescue/recovery system. # We also load modules listed in /etc/modules. # The order is # 1) /etc/modules # 2) MODULES_LOAD # 3) modules loaded by udev or systemd. # ReaR also takes the list of modules from your initrd and adds that to MODULES_LOAD. MODULES_LOAD=() Только вот скрипты, которые занимаются обработкой initrd работают некорректно. Их необходимо поправить. /usr/share/rear/rescue/GNU/Linux/220_load_modules_from_initrd.sh /usr/share/rear/rescue/GNU/Linux/260_collect_initrd_modules.sh Прошу рассмотреть следующие изменения и поправить их, если необходимо, на ваш взгляд: --- a/usr/share/rear/rescue/GNU/Linux/220_load_modules_from_initrd.sh +++ b/usr/share/rear/rescue/GNU/Linux/220_load_modules_from_initrd.sh @@ -39,4 +39,12 @@ if test -s /etc/initramfs-tools/modules ; then ) fi +#ALT +if test -s /boot/initrd-$(uname -r).img ; then + files=$(initrd-ls /boot/initrd-$(uname -r).img | awk '{print $11}' | grep '.ko.zst') + for module in $files ; do + MODULES_LOAD+=($(basename $module .ko.zst)) + done +fi + --- a/usr/share/rear/rescue/GNU/Linux/260_collect_initrd_modules.sh +++ b/usr/share/rear/rescue/GNU/Linux/260_collect_initrd_modules.sh @@ -1,6 +1,6 @@ # purpose is to saved the current list of modules in the running initrd image : > $VAR_DIR/recovery/initrd_modules -for m in $( gunzip -c /boot/{initrd,initramfs}-${KERNEL_VERSION}.img 2>/dev/null | cpio -t 2>/dev/null | grep ".ko$" ) +for m in $( initrd-ls /boot/initrd-$(uname -r).img | awk '{print $11}' | grep '.ko.zst' ) do - basename $m .ko >> $VAR_DIR/recovery/initrd_modules + basename $m .ko.zst >> $VAR_DIR/recovery/initrd_modules done После данных правок модули грузятся корректно. Прошу проверить из задания #398044 (Ответ для Andrew Vasilyev на комментарий #5) > Прошу проверить из задания #398044 С #398044 проблемы с загрузкой модулей не возникает. |
Created attachment 19913 [details] Лог сборки образа Версия пакета: rear-2.9-alt2 Шаги воспроизведения: 1) # echo "Yes" | rear format /dev/sdb && \ cat > /etc/rear/local.conf << EOF OUTPUT=USB BACKUP=NETFS BACKUP_URL=usb:///dev/disk/by-label/REAR-000 EOF 2) # rear -v mkrescue 3) Загрузиться в созданный образ Фактический результат: При загрузке в собранный образ и выполнении /etc/scripts/system-setup.d/* скриптов 55-migrate-network-devices.sh сообщает об ошибке: Cannot migrate network interface because there is no usable MAC address on this system По каким-то причинам все сетевые устройства, кроме lo - отсутствуют в собранном образе. Т.е., буквально, в /syc/class/net/ кроме lo ничего не лежит. Дополнительная информация: При создании образа выполняются следующие скрипты для настройки сети: # rear -s mkrescue | grep network Source layout/save/default/450_check_network_files.sh Source rescue/GNU/Linux/230_storage_and_network_modules.sh Source rescue/GNU/Linux/310_network_devices.sh layout/save/default/450_check_network_files.sh - отвечает за конфигурационные файлы сетевой подсистемы. Тут, кстати говоря, вообще ни слова об etcnet rescue/GNU/Linux/230_storage_and_network_modules.sh - определяет драйвера rescue/GNU/Linux/310_network_devices.sh - генерирует сетевые устройства на основе запущенной системы При сборке образа каких-либо ошибок нет. Вывод этапа rescue: ... Running 'rescue' stage ====================== Creating recovery system root filesystem skeleton layout Handling network interface 'ens19' ens19 is a physical device Handled network interface 'ens19' Skipping network interface 'lo': not bound to any physical interface. ... Также прикладываю лог сборки образа в debug режиме.