Project

General

Profile

Net not up » History » Version 1

Vitaly Omelchenko, 04/19/2022 01:44 PM

1 1 Vitaly Omelchenko
h2. Проблема с сетевым интерфейсом на специфической конфигурации ядра
2
3
Во вложении конфигурация ядра с включенными опциями CONFIG_DEBUG_KMEMLEAK и CONFIG_KASAN.
4
5
После загрузки в эмуляторе ядра, скомпилированного в данной конфигурации, сетевой интерфейс виртуальной машины не поднимается, виртуальная машина по сети недоступна, в системном логе сообщение:
6
<pre>
7
Cannot find device "eth0"
8
</pre>
9
10
"Ядро версии 5.10":http://kernel-mirror.intra.ispras.ru/pub/scm/linux/kernel/git/lvc/linux-stable.git/ компилируется компилятором "GCC версии 10.3.0":http://kernelci-storage.intra.ispras.ru/tools/crosstool/files/bin/x86_64/10.3.0/x86_64-gcc-10.3.0-nolibc-x86_64-linux.tar.xz
11
<pre>
12
# KBUILD -- путь к каталогу со сборкой
13
make ARCH=x86_64 CROSS_COMPILE=x86_64-linux- O=$KBUILD-j8 bzImage modules
14
</pre>
15
16
Ядро загружается при помощи эмулятора QEMU версии 4.2.1 в Ubuntu 20.4: 
17
<pre>
18
# KERNEL -- путь к сжатому образу ядра
19
# ROOTFS -- путь к образу корневой файловой системы
20
qemu-system-x86_64 -m 8G -monitor stdio \
21
-kernel $KERNEL/bzImage \ 
22
-append "root=/dev/sda net.ifnames=0" \
23
-drive file=$ROOTFS/disk.img,format=raw,if=none,id=disk -snapshot \
24
-drive driver=blkreplay,if=none,image=disk,id=disk-rr \
25
-device ide-hd,drive=disk-rr \
26
-netdev user,id=net0,hostfwd=tcp:127.0.0.1:10021-:22 \
27
-device e1000,netdev=net0
28
</pre>
29
30
Образ корневой файловой системы, сформированный при помощи инструмента debbootsrap на основе дистрибутива Debian 11, также во вложении (логин в консоли под @root@ без пароля, приватный ключ для логина по ssh во вложении).
31
32
При загрузке ядра в эмуляторе QEMU с параметром, отключающим опцию CONFIG_DEBUG_KMEMLEAK, сетевой интерфейс виртуальной машины поднимается, виртуальная машина по сети доступна:
33
<pre>
34
# KERNEL -- путь к сжатому образу ядра
35
# ROOTFS -- путь к образу корневой файловой системы
36
qemu-system-x86_64 -m 8G -monitor stdio \
37
-kernel $KERNEL/bzImage \ 
38
-append "root=/dev/sda net.ifnames=0 kmemleak=off" \
39
-drive file=$ROOTFS/disk.img,format=raw,if=none,id=disk -snapshot \
40
-drive driver=blkreplay,if=none,image=disk,id=disk-rr \
41
-device ide-hd,drive=disk-rr \
42
-netdev user,id=net0,hostfwd=tcp:127.0.0.1:10021-:22 \
43
-device e1000,netdev=net0
44
</pre>
45
46
Также работоспособность сетевого интерфейса восстанавливается при сборке конфигурации с выключенной опцией CONFIG_KASAN, даже при наличии включенной опции CONFIG_DEBUG_KMEMLEAK.