Bug 56579 - Cannot migrate network interface because there is no usable MAC address on this system
Summary: Cannot migrate network interface because there is no usable MAC address on th...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rear (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Andrew Vasilyev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-10-23 15:47 MSK by Vladislav Glinkin
Modified: 2025-10-24 19:46 MSK (History)
1 user (show)

See Also:


Attachments
Лог сборки образа (1.06 MB, text/x-log)
2025-10-23 15:47 MSK, Vladislav Glinkin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vladislav Glinkin 2025-10-23 15:47:23 MSK
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 режиме.
Comment 1 Andrew Vasilyev 2025-10-23 19:40:26 MSK
(Ответ для 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 ...")
Comment 2 Vladislav Glinkin 2025-10-24 12:38:39 MSK
(Ответ для 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

Но толку от этого не будет, поскольку здесь проблема заключается в отсутствии сетевых интерфейсов, а не в их некорректной конфигурации.
Comment 3 Andrew Vasilyev 2025-10-24 15:01:31 MSK
(Ответ для 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" не поможет? Значит, в образе нет
  сетевых драйверов и ядро не видит сетевые адаптеры. Это тупик.
Comment 4 Vladislav Glinkin 2025-10-24 18:18:56 MSK
(Ответ для 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

После данных правок модули грузятся корректно.
Comment 5 Andrew Vasilyev 2025-10-24 19:24:17 MSK
  Прошу проверить из задания #398044
Comment 6 Vladislav Glinkin 2025-10-24 19:43:05 MSK
(Ответ для Andrew Vasilyev на комментарий #5)
>   Прошу проверить из задания #398044

С #398044 проблемы с загрузкой модулей не возникает.
Comment 7 Repository Robot 2025-10-24 19:46:11 MSK
rear-2.9-alt3 -> sisyphus:

Wed Oct 22 2025 Andrew A. Vasilyev <andy@altlinux> 2.9-alt3
- fix path to ssh config files and sshd (Closes: #56564)
- not build as noarch due to Requires: (Closes: #56456)
- add support for ALT kernel modules (Closes: #56579) (tnx glinkinvd@)