Ванильное ядро ​​Linux на QEMU и работа в сети с eth0

Я загрузил и скомпилировал ядро ​​vanilla linux (3.7.1). Я использовал busybox для ramdisk, а затем загрузил его с помощью QEMU. Это моя командная строка QEMU

qemu-system-i386 -kernel bzImage -initrd ramdisk.img -append "root=/dev/ram rw console=ttyS0 rdinit=/bin/ash" -nographic -net nic -net user

все идет хорошо. Однако я не могу использовать сеть на ванильном ядре с busybox.

'ifup eth0' говорит мне

/ # ifup eth0
ip: SIOCGIFFLAGS: No such device

Я гуглил в Интернете, но не могу понять... некоторые советы были бы хорошими, спасибо заранее.


person daehee    schedule 27.06.2014    source источник


Ответы (1)


Скорее всего не загружен драйвер (в вашем примере должен быть e1000) или устройство имеет другое имя.

В /sys/class/net/ вы должны найти список всех доступных сетевых устройств. Если их нет (кроме lo) драйвер не загружается.

В мониторе qemu введите «info pci», и он покажет вам PCI-адрес вашей сетевой карты. Это должно выглядеть так:

...
Bus  0, device   3, function 0:
  Ethernet controller: PCI device 8086:100e
...

Это устройство соответствует /sys/devices/pci0000:00/0000:00:03.0/. Файлы «vendor» и «device» должны содержать «0x8086» и «0x100e», которые являются PCI-id сверху и по которым ядро ​​определяет драйвер для загрузки.

Попробуйте загрузить его вручную с помощью «modprobe e1000» или insmod. При загрузке должна быть символическая ссылка с именем «драйвер». Если нет, то "dmesg" должен дать вам причину, почему нет.

person Jörg Schulz    schedule 18.03.2016