embedded-linux - qemu network not working needed for tftp booting
问题描述
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
=>
解决方案
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
推荐阅读
- python - 选择特定时间间隔的最大值
- react-native - 如何在本机反应中以html格式显示json输出
- ms-access - 使用 BOOLEAN 值过滤查询时出现 Firebird 问题
- reactjs - 在 Reactjs 生产模式下,当我使用浏览器路由器时,我的应用程序不会更改 url 并且不会渲染组件,但它可以与 hashrouter 一起正常工作
- ruby-on-rails - RoR 中 ||= 和辅助方法的主要任务是什么?
- android - 生物识别提示未显示面部解锁提示
- api - Flutter - 我正在尝试根据 api 响应打印一个文本框
- android - 创建 Xamarin.Forms 视图,显示每个句子可点击的段落
- go - 使用 kafka 消费者渠道和上下文的 Go 例程
- outlook - 以编程方式将 LDAP 帐户添加到 MS Outlook