- 论坛徽章:
- 0
|
参考文档 用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这个问题。
|
|