免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1326 | 回复: 0

为qemu中的u-boot增加网络支持 [复制链接]

论坛徽章:
0
发表于 2011-12-22 08:51 |显示全部楼层
参考文档
用TAP方式让QEMU虚拟机与host联网
http://apps.hi.baidu.com/share/detail/32162067

在tun.ko安装好后,要修改/etc/qemu-ifup, 我发现这个文件已经存在了,且都有执行权限,不知道是不是装qemu的时候安装好的。
把他的内容修改为
#!/bin/sh
/sbin/ifconfig $1 192.168.1.90

因为我的网络环境是网关是192.168.1.1,tap网口的ip设为192.168.1.90. 在随后的u-boot中,把他的ip设为同一网段内的ip即可,我的主机ip是192.168.1.101,qemu虚拟的versatilepb开发板的smsc91c111在u-boot中的ip设为192.168.1.91.

现在要打开tftp server
sudo /etc/ini.d/xinetd restart
确认我的/tftpboot目录下有bootrom.bin文件。

这时就可以启动qemu了。增加-net nic -net tap 命令
===
ldm@ldm-TOP2:/etc$ sudo qemu-system-arm -M versatilepb -nographic -net nic -net tap -kernel ~/binary/versatilepb-u-boot-201003.bin


U-Boot 2010.03 ( 8月 11 2011 - 17:06:03)

DRAM:   0 kB
## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
Flash:  0 kB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   SMC91111-0
VersatilePB # set serverip 192.168.1.101
VersatilePB # set ipaddr 192.168.1.91
VersatilePB # tftp bootrom.bin
SMC91111: PHY auto-negotiate timed out
SMC91111: MAC 52:54:00:12:34:56
Using SMC91111-0 device
TFTP from server 192.168.1.101; our IP address is 192.168.1.91
Filename 'bootrom.bin'.
Load address: 0x7fc0
Loading: #####################
done
Bytes transferred = 299880 (49368 hex)
VersatilePB #
===

现在还有两个问题。
一个是执行qemu后,firefox就上不料网了。
先执行
sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.90/24 -j MASQUERADE
再执行qemu,就可以上网了。

http://hi.baidu.com/liu_bin0101/blog/item/b13cb0d97161772b10df9bcc.html
说,是router没有设置。
另一个是在主机ping 192.168.1.90能够ping通。但是ping虚拟板的192.168.1.91就ping不通。

小窍门1:
sudo qemu-system-arm -M versatilepb -nographic -net nic,vlan=0,macaddr=00:4c:4c:00:00:01 -net tap,vlan=0 -kernel ~/binary/versatilepb-u-boot-201003.bin
这条命令可以修改91c111的mac地址
小窍门2:
由于每次都要输入set ipaddr xxx; set serverip xxx,太麻烦了。
可以修改u-boot_maindir/include/configs/versatile.h
在源码中增加环境变量
#define CONFIG_IPADDR           192.168.1.91
#define CONFIG_NETMASK          255.255.255.0
#define CONFIG_SERVERIP         192.168.1.101
再 make distclean
make versatilepb_config
make
生成的新u-boot.bin就有ip的设定了。
小窍门3:
再在相同的文件里增加
#define CONFIG_BOOTCOMMAND "tftp 7C00000 bootrom.bin; go 7C00000"
然后
make versatile
生成的image就支持bootcmd了。

小窍门4:
tftp的时候,总会报“SMC91111: PHY auto-negotiate timed out”,修改相同文件,
#define CONFIG_SMC91111_EXT_PHY
重新编译u-boot能fix这个问题。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP