http://blog.chinaunix.net/uid-26061689-id-2981914.html
http://www.mediaonfire.com/en/tech_tips/QEMUNetworking.html
https://people.gnome.org/~markmc/qemu-networking.html
http://opencsl.openfoundry.org/Lab03_root_filesystem.rst.html
http://www.osslab.com.tw/Hardware/Open_Embedded_System/ARM/ARM_Simulator_on_x86_with_Qemu/%E5%9C%A8x86_%E6%A8%A1%E6%93%AC%E7%92%B0%E5%A2%83%E4%B8%8B%E6%B8%AC%E8%A9%A6ARM_Ubuntu
http://blog.roodo.com/use_the_force/archives/2717044.html
http://user.frdm.info/ckhung/b/sa/qemu.php
http://idobest.pixnet.net/blog/post/22040220-%5B%E8%BD%89%E8%B2%BC%5D-qemu-%E7%B6%B2%E8%B7%AF%E8%A8%AD%E5%AE%9A
http://mikelev.in/2010/07/qemu-network-qemu-networking/
The following steps showing about how to enable internet function for qemu:
00. Host PC environment
Linux yen-desktop 3.2.0-48-generic #74-Ubuntu SMP Thu Jun 6 19:43:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
sudo apt-get install uml-utilities
sudo apt-get install bridge-utils
[Trying records]
sudo apt-get install uml-utilities
正在讀取套件清單... 完成
正在重建相依關係
正在讀取狀態資料... 完成
uml-utilities 已經是最新版本了。
以下套件為自動安裝,並且已經無用:
libtxc-dxtn-s2tc0 libllvm3.1
使用 'apt-get autoremove' 來將其移除。
升級 0 個,新安裝 0 個,移除 0 個,有 0 個未被升級。
sudo apt-get install bridge-utils
正在讀取套件清單... 完成
正在重建相依關係
正在讀取狀態資料... 完成
bridge-utils 已經是最新版本了。
以下套件為自動安裝,並且已經無用:
libtxc-dxtn-s2tc0 libllvm3.1
使用 'apt-get autoremove' 來將其移除。
升級 0 個,新安裝 0 個,移除 0 個,有 0 個未被升級。
02.Host PC Setting Commands
ifconfig eth0 down
brctl addbr br0
brctl addif br0 eth0
brctl stp br0 off
brctl setfd br0 1
brctl sethello br0 1
ifconfig br0 0.0.0.0 promisc up
ifconfig eth0 0.0.0.0 promisc up
dhclient br0
brctl show br0
brctl showstp br0
tunctl -t tap0 -u root
brctl addif br0 tap0
ifconfig tap0 0.0.0.0 promisc up
brctl showstp br0
[Trying records]
yen0430@yen-desktop:/$ brctl
Usage: brctl [commands]
commands:
addbr <bridge> add bridge
delbr <bridge> delete bridge
addif <bridge> <device> add interface to bridge
delif <bridge> <device> delete interface from bridge
hairpin <bridge> <port> {on|off} turn hairpin on/off
setageing <bridge> <time> set ageing time
setbridgeprio <bridge> <prio> set bridge priority
setfd <bridge> <time> set bridge forward delay
sethello <bridge> <time> set hello time
setmaxage <bridge> <time> set max message age
setpathcost <bridge> <port> <cost> set path cost
setportprio <bridge> <port> <prio> set port priority
show [ <bridge> ] show a list of bridges
showmacs <bridge> show a list of mac addrs
showstp <bridge> show bridge stp info
stp <bridge> {on|off} turn stp on/off
yen0430@yen-desktop:/$ sudo brctl addbr br0
[sudo] password for yen0430:
yen0430@yen-desktop:/$ sudo brctl addif br0 eth0
yen0430@yen-desktop:/$ sudo brctl stp br0 off
yen0430@yen-desktop:/$ sudo brctl setfd br0 1
yen0430@yen-desktop:/$ sudo brctl sethello br0 1
yen0430@yen-desktop:/$ sudo ifconfig br0 0.0.0.0 promisc up
yen0430@yen-desktop:/$ sudo ifconfig eth0 0.0.0.0 promisc up
yen0430@yen-desktop:/$ sudo dhclient br0
yen0430@yen-desktop:/$ sudo brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.eca86b8de3e0 no eth0
yen0430@yen-desktop:/$ sudo brctl showstp br0
br0
bridge id 8000.eeeeeeeeeeeeeee
designated root 8000.eeeeeeeeeeeee
root port 0 path cost 0
max age 20.00 bridge max age 20.00
hello time 1.00 bridge hello time 1.00
forward delay 1.00 bridge forward delay 1.00
ageing time 300.01
hello timer 0.06 tcn timer 0.00
topology change timer 0.00 gc timer 271.03
flags
eth0 (1)
port id 8001 state forwarding
designated root 8000.eeeeeeeeeeee path cost 4
designated bridge 8000.eeeeeeeeeeee message age timer 0.00
designated port 8001 forward delay timer 0.00
designated cost 0 hold timer 0.06
flags
yen0430@yen-desktop:/$ ifconfig
br0 Link encap:Ethernet HWaddr eeeeeeeeeeeeeeeeee
inet addr:xxx.xx.4.92 Bcast:xxx.xx.255.255 Mask:255.255.0.0
inet6 addr: fe80::eeeeeeeeeeeeeee/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:2196 errors:0 dropped:0 overruns:0 frame:0
TX packets:258 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:375516 (375.5 KB) TX bytes:36069 (36.0 KB)
eth0 Link encap:Ethernet HWaddr eeeeeeeeeeeeee
inet6 addr: fe80::eeeeeeeeeeeeeeeeeee/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:33131 errors:0 dropped:0 overruns:0 frame:0
TX packets:13408 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14094542 (14.0 MB) TX bytes:2130457 (2.1 MB)
Interrupt:20 Memory:f7c00000-f7c20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2646 errors:0 dropped:0 overruns:0 frame:0
TX packets:2646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:276862 (276.8 KB) TX bytes:276862 (276.8 KB)
yen0430@yen-desktop:~$ sudo tunctl -t tap0 -u root
inet addr:xxx.xx.4.92 Bcast:xxx.xx.255.255 Mask:255.255.0.0
inet6 addr: fe80::eeeeeeeeeeeeeee/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:2196 errors:0 dropped:0 overruns:0 frame:0
TX packets:258 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:375516 (375.5 KB) TX bytes:36069 (36.0 KB)
eth0 Link encap:Ethernet HWaddr eeeeeeeeeeeeee
inet6 addr: fe80::eeeeeeeeeeeeeeeeeee/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:33131 errors:0 dropped:0 overruns:0 frame:0
TX packets:13408 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14094542 (14.0 MB) TX bytes:2130457 (2.1 MB)
Interrupt:20 Memory:f7c00000-f7c20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2646 errors:0 dropped:0 overruns:0 frame:0
TX packets:2646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:276862 (276.8 KB) TX bytes:276862 (276.8 KB)
yen0430@yen-desktop:~$ sudo tunctl -t tap0 -u root
Set 'tap0' persistent and owned by uid 0
yen0430@yen-desktop:~$ sudo brctl addif br0 tap0
yen0430@yen-desktop:~$ sudo ifconfig tap0 0.0.0.0 promisc up
yen0430@yen-desktop:~$ sudo brctl showstp br0
br0
bridge id 8000.eeeeeeeeeeeeeeeeee
designated root 8000.eeeeeeeeeeeeeeee
root port 0 path cost 0
max age 20.00 bridge max age 20.00
hello time 1.00 bridge hello time 1.00
forward delay 1.00 bridge forward delay 1.00
ageing time 300.01
hello timer 0.08 tcn timer 0.00
topology change timer 0.00 gc timer 50.04
flags
eth0 (1)
port id 8001 state forwarding
designated root 8000.eeeeeeeeeeeeee path cost 4
designated bridge 8000.eeeeeeeeeeeee message age timer 0.00
designated port 8001 forward delay timer 0.00
designated cost 0 hold timer 0.11
flags
tap0 (2)
port id 8002 state disabled
designated root 8000.eeeeeeeeeeeee path cost 100
designated bridge 8000.eeeeeeeeeeeee message age timer 0.00
designated port 8002 forward delay timer 0.00
designated cost 0 hold timer 0.00
flags
yen0430@yen-desktop:~$ sudo brctl addif br0 tap0
yen0430@yen-desktop:~$ sudo ifconfig tap0 0.0.0.0 promisc up
yen0430@yen-desktop:~$ sudo brctl showstp br0
br0
bridge id 8000.eeeeeeeeeeeeeeeeee
designated root 8000.eeeeeeeeeeeeeeee
root port 0 path cost 0
max age 20.00 bridge max age 20.00
hello time 1.00 bridge hello time 1.00
forward delay 1.00 bridge forward delay 1.00
ageing time 300.01
hello timer 0.08 tcn timer 0.00
topology change timer 0.00 gc timer 50.04
flags
eth0 (1)
port id 8001 state forwarding
designated root 8000.eeeeeeeeeeeeee path cost 4
designated bridge 8000.eeeeeeeeeeeee message age timer 0.00
designated port 8001 forward delay timer 0.00
designated cost 0 hold timer 0.11
flags
tap0 (2)
port id 8002 state disabled
designated root 8000.eeeeeeeeeeeee path cost 100
designated bridge 8000.eeeeeeeeeeeee message age timer 0.00
designated port 8002 forward delay timer 0.00
designated cost 0 hold timer 0.00
flags
03. Add br0 and tap0 to /etc/network/interfaces
yen0430@yen-desktop:~$ sudo vim /etc/network/interfaces
yen0430@yen-desktop:~$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
# The bridge network interface(s)
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
# The tap0 network interface(s)
auto tap0
iface tap0 inet manual
pre-up tunctl -t tap0 -u root
pre-up ifconfig tap0 0.0.0.0 promisc up
post-up brctl addif br0 tap0
yen0430@yen-desktop:~$ sudo vim /etc/network/interfaces
yen0430@yen-desktop:~$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
# The bridge network interface(s)
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
# The tap0 network interface(s)
auto tap0
iface tap0 inet manual
pre-up tunctl -t tap0 -u root
pre-up ifconfig tap0 0.0.0.0 promisc up
post-up brctl addif br0 tap0
04. Add eth0 to target machine/board root file system
yen0430@yen-desktop:~$ vim ${TARGET_BOARD_ROOTFS}/etc/network/interfaces
# Configure Loopback
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
[NOTES]
For buildroot, add these to " buildroot/system/skeleton/etc/network/interfaces " as default.
05. Run qemu
yen0430@yen-desktop:~$ sudo qemu-system-i386 -kernel output/images/bzImage -m 1024 -net nic,model=ne2k_pci -net tap
Could not open option rom 'pxe-ne2k_pci.rom': No such file or directory
[NOTES]
[qemu command]
qemu-system-i386
qemu-system-x86_64
[use 'bzImage' as kernel image]
-kernel output/images/bzImage
Other items:
Linux/Multiboot boot specific:
-kernel bzImage use 'bzImage' as kernel image
-append cmdline use 'cmdline' as kernel command line
-initrd file use 'file' as initial ram disk
[set virtual RAM size to megs MB [default=384]]
-m 1024
[create a new Network Interface Card and connect it to VLAN 'n']
-net nic,model=ne2k_pci
[connect the host TAP network interface to VLAN 'n' and use the network scripts 'file' (default=/etc/qemu-ifup) ]
-net tap
沒有留言:
張貼留言