Project

General

Profile

Actions

Проблема с сетевым интерфейсом на специфической конфигурации ядра

Во вложении конфигурация ядра с включенными опциями CONFIG_DEBUG_KMEMLEAK и CONFIG_KASAN.

После загрузки в эмуляторе ядра, скомпилированного в данной конфигурации, сетевой интерфейс виртуальной машины не поднимается, виртуальная машина по сети недоступна, в системном логе сообщение:

Cannot find device "eth0" 

Ядро версии 5.10 компилируется компилятором GCC версии 10.3.0

# KBUILD -- путь к каталогу со сборкой
make ARCH=x86_64 CROSS_COMPILE=x86_64-linux- O=$KBUILD-j8 bzImage modules

Ядро загружается при помощи эмулятора QEMU версии 4.2.1 в Ubuntu 20.4:

# KERNEL -- путь к сжатому образу ядра
# ROOTFS -- путь к образу корневой файловой системы
qemu-system-x86_64 -m 8G -monitor stdio \
-kernel $KERNEL/bzImage \ 
-append "root=/dev/sda net.ifnames=0" \
-drive file=$ROOTFS/disk.img,format=raw,if=none,id=disk -snapshot \
-drive driver=blkreplay,if=none,image=disk,id=disk-rr \
-device ide-hd,drive=disk-rr \
-netdev user,id=net0,hostfwd=tcp:127.0.0.1:10021-:22 \
-device e1000,netdev=net0

Образ корневой файловой системы, сформированный при помощи инструмента debbootsrap на основе дистрибутива Debian 11, также во вложении (логин в консоли под root без пароля, приватный ключ для логина по ssh во вложении).

При загрузке ядра в эмуляторе QEMU с параметром, отключающим опцию CONFIG_DEBUG_KMEMLEAK, сетевой интерфейс виртуальной машины поднимается, виртуальная машина по сети доступна:

# KERNEL -- путь к сжатому образу ядра
# ROOTFS -- путь к образу корневой файловой системы
qemu-system-x86_64 -m 8G -monitor stdio \
-kernel $KERNEL/bzImage \ 
-append "root=/dev/sda net.ifnames=0 kmemleak=off" \
-drive file=$ROOTFS/disk.img,format=raw,if=none,id=disk -snapshot \
-drive driver=blkreplay,if=none,image=disk,id=disk-rr \
-device ide-hd,drive=disk-rr \
-netdev user,id=net0,hostfwd=tcp:127.0.0.1:10021-:22 \
-device e1000,netdev=net0

Также работоспособность сетевого интерфейса восстанавливается при сборке конфигурации с выключенной опцией CONFIG_KASAN, даже при наличии включенной опции CONFIG_DEBUG_KMEMLEAK.

Updated by Vitaly Omelchenko over 2 years ago · 1 revisions