qemu network not working needed for tftp booting

1.2k views Asked by At

Hi, I was trying to make network work on qemu-system-arm uboot for tftp/dhcp booting , Could not understand QEMU 5.0.0 networking configuration needed , can you help on this.

$qemu-system-arm --version QEMU emulator version 5.0.0

Yocto BSP used: https://github.com/ahmedkassem56/meta-qemuarma9.git

$ cat /etc/qemu-ifup

#!/bin/sh
set -x
/sbin/ip a add 192.168.0.1/255.255.255.0 dev $1
/sbin/ip link set $1 up

$sudo chmod +x /etc/qemu-ifup

$ sudo qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot.elf -nographic -net tap,id=tap1,script=/etc/qemu-ifup -net nic,id=nic1

+ /sbin/ip a add 192.168.0.1/255.255.255.0 dev tap1
+ /sbin/ip link set tap1 up

U-Boot 2020.01 (Jan 06 2020 - 20:56:31 +0000)

DRAM:  256 MiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC:   MMC: 0
Loading Environment from EXT4... Card did not respond to voltage select!
In:    serial
Out:   serial
Err:   serial
Net:   smc911x-0
Hit any key to stop autoboot:  0 
=> setenv serverip 192.168.0.1
=> setenv ipaddr 192.168.0.2
=> setenv netmask 255.255.255.0
=> setenv gatewayip 192.168.1.0
=> ping 192.168.0.1
smc911x: MAC 52:54:00:12:34:56
smc911x: detected LAN9118 controller
smc911x: phy initialized
smc911x: MAC 52:54:00:12:34:56
Using smc911x-0 device

ARP Retry count exceeded; starting again
smc911x: MAC 52:54:00:12:34:56
ping failed; host 192.168.0.1 is not alive
=> 
1

There are 1 answers

0
SK17 On BEST ANSWER

Thankfully qemu network is working now with the below setup ..

Ref: Build a complete virtual ARM development environment based on QEMU (uboot+linux+rootfs)

~/ProjectWork/bin/$cat tuntap.sh

set -x

ETH=enp2s0   #Ethernet interface in your HOST 
USR=junno    #User name- whoami

if test -z $1 ; then
        echo need a arg: down/up
        exit
fi

if [ "up" = $1 ] ; then

        brctl addbr br0

        ifconfig $ETH down
        brctl addif br0 $ETH

        #Close Spanning Tree Protocol
        brctl stp br0 off

        ifconfig br0 10.8.8.1 netmask 255.255.255.0 promisc up  #3
        ifconfig $ETH 10.8.8.10 netmask 255.255.255.0 promisc up #2

        tunctl -t tap0 -u $USR
        ifconfig tap0 10.8.8.11 netmask 255.255.255.0 promisc up #4
        brctl addif br0 tap0
else
        ifconfig tap0 down
        brctl delif br0 tap0

        ifconfig $ETH down
        brctl delif br0 enp2s0

        ifconfig br0 down
        brctl delbr br0

        ifconfig $ETH 10.8.8.10 netmask 255.255.255.0  #2
fi

Add below lines $vi ~/.bashrc

alias ifup_tap='sudo ~/ProjectWork/bin/tuntap.sh up'
alias ifdown_tap='sudo ~/ProjectWork/bin/tuntap.sh down'

$ source ~/.bashrc

HOST:

cp zImage-initramfs-qemuarma9.bin /tftpboot/
cp vexpress-v2p-ca9-qemuarma9.dtb /tftpboot/

~/ProjectWork/bin$ ifdown_tap
~/ProjectWork/bin$ ifup_tap

TARGET:

~/ProjectWork/bin$ sudo qemu-system-arm -M vexpress-a9 -m 512 -nographic -net nic -net tap,ifname=tap0,script=no -kernel u-boot.elf

U-Boot 2020.01 (Jan 06 2020 - 20:56:31 +0000)

DRAM:  512 MiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC:   MMC: 0
Loading Environment from EXT4... Card did not respond to voltage select!
In:    serial
Out:   serial
Err:   serial
Net:   smc911x-0
Hit any key to stop autoboot:  1 
=>
=>setenv serverip 10.8.8.1; setenv ipaddr 10.8.8.2; setenv netmask 255.255.255.0; 
=>ping 10.8.8.1
 host 10.8.8.1 is alive
    
//For initramfs
=>setenv bootargs "console=ttyAMA0,115200 root=/dev/ram rw"
=>tftp 0x60000000 zImage-initramfs-qemuarma9.bin
=>tftp 0x70000000 vexpress-v2p-ca9-qemuarma9.dtb
=>bootz 0x60000000 - 0x70000000