BV1AL 之無所不記

2007-04-04

經由tunneling bridge 給qemu VM

這次的 Debian(etch) LiveCD 使用 kernel 2.6.18-4-486 所以可以用 kqemu
來加速, 這樣跑 guest OS 感覺就好多了, 也就是同片 LiveCD(or USB
flash) 只要 RAM 跟 CPU夠大夠強, 除了 host OS 之外還可以跑多個
guest OS.

mknod /dev/kqemu c 250 0 -m 666
modprobe kqemu
1. file: /etc/qemu-ifup
#!/bin/bash
ifconfig ${1##/*/} 0.0.0.0 promisc up
brctl addif br0 ${1##/*/}

2. bridge up
ifconfig eth0 0.0.0.0 promisc up
brctl addbr br0
brctl setfd br0 0
brctl sethello br0 0
brctl stp br0 off
brctl addif br0 eth0
#這時 eth0 是沒有 IP 的, 往後 host OS 的 IP 是改用 br0 而非 eth0
可以 ifconfig eth0 xxxxx 或 dhclient eth0 來assign IP

3. qemu start with tap bridge
qemu -cdrom /dev/cdrom -net nic -net tap
(qemu -boot c /dev/hda -net nic -net tap)

4. 在 guest OS 裡也跟 host OS 一樣可以任意 assign IP for eth0

5. 這時 host OS 跟 guest OS 都同處於一個 subnet 下, 而有各自不同的 IP
不用 bridge 的話只能由 host OS 用 IPMasquerade 方式讓 guest OS 連線,
guest OS 無法直接接觸 host OS 所在 subnet.
qemu 的啟動指令兩者都一樣, 只有 /etc/qemu-ifup 不同, 不用 bridge 時是
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1

6. 取消 bridge
ifconfig br0 down
brctl delif br0 eth0
brctl delbr br0
這時 host OS 也失去 br0 IP, 要重新對 eth0 assign IP, 所以其實不必取消
bridge, 在中止 qemu 後 host OS 仍繼續使用 br0 對外連線.

0 Comments:

張貼留言

<< Home