apt-getでuml-utilitiesをインストールすると、/etc/init.d/uml-utilitiesができる。これはlinux起動時にuml_switchというアプリを動かす。
このアプリはuser mode linux上のゲストOSにネットワーク(Layer2HUB、Layer2switchとも言う)を提供する。
たとえば、ゲストOS起動時のパラメータで
linux eth0=daemon
のように「daemon」と指定するとuml_switchに繋いでくれる。
ただし、ubuntu 12.04のデフォルトでは閉じたネットワークなので外には出られない。
/etc/init.d/uml-utilitiesを
UML_SWITCH_OPTIONS="-tap tap0"
のように変えると外に出るためのtapデバイスを用意してくれる。
tunctl -u uml-net -t tap0
このようにtap0をuml-netユーザで使用すると予約しておけば、uml_switchをrootで動かさなくてもtapデバイスを作成できる。
#通常、tapデバイスはrootでないと作れない
これでtap0ができるのでホストOSでブリッジなどを作成して繋いでやる。
brctl addbr br0
brctl stp br0 off
brctl addif br0 eth0
brctl addif br0 tap0
ifconfig eth0 up
ifconfig br0 up
ifconfig tap0 up
ゲストOS用のネットワークが1つしかないのは不便なのでいくつか作成する。
ネットワークの識別はunix domian socketで行う。
/etc/init.d/uml-utilitiesの
UML_SWITCH_CTL="$UML_DIR/uml_switch.ctl"がそのファイル名。
このファイル名やpidファイル名を各ネットワークで分ける。
ゲストOS起動時は
linux eth-=daemon,,unix,/var/run/uml-utilities/uml_switch.ctl
とネットワークを指定する。
----------------------------------------
追記
/etc/network/interfaces例
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports eth0 tap0
bridge_stp off
bridge_wait 0
bridge_fd 0
up echo 0 > /sys/devices/virtual/$IFACE/bridge/multicast_snooping
pre-up ifconfig eth0 up
pre-up tunctl -u uml-net -t tap0
0 件のコメント:
コメントを投稿