Проблема с сетевым интерфейсом на специфической конфигурации ядра¶
Во вложении конфигурация ядра с включенными опциями 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