UML安装配置指南
Wang Yao [wangyao@cs.hit.edu.cn]
2008.03.02
注:这里用Host代表本地主机,UML代表UML虚拟机。
############################################
安装UML
############################################
我们选择最新的2.6.24内核
1.编译UML内核
Host# make defconfig ARCH=um
Host# make menuconfig ARCH=um
Host# make ARCH=um
Host# make modules ARCH=um
如果出现错误:
Host# make mrproper
Host# make mrproper ARCH=um
清理一下
2.构建root文件系统
我们比较懒,直接到[]下载现成的文件系统
Debian-4.0/Debian-4.0-x86-root_fs.bz2
3.安装模块
Host# mount -o loop Debian-4.0-x86-root_fs root_fs
Host# make _modinst_
MODLIB=$ROOTFS_MOUNTED_DIR/lib/modules/linux-2.6.24
ARCH=um
或者是
Host# make modules_install INSTALL_MOD_PATH=/uml/root_fs ARCH=um
Host# chroot $ROOTFS_MOUNTED_DIR
#/sbin/depmod -ae 2.6.24
############################################
hostfs设置
############################################
1.编译内核的时候,选择上hostfs模块
UML-specific options --> Host filesystem
2.在UML中mount
UML# mkdir -p /host
挂载Host的整个跟分区到UML的/host中
UML# mount none /host -t hostfs
或者是挂载Host中某一个用户的目录到UML的/host中
UML# mount none /host -t hostfs -o /home/user
可以修改/etc/fstab配置文件,实现自动挂载
none /host hostfs defaults 1 1
############################################
网络设置
############################################
1.在Host安装uml-utilities
Host# apt-get install uml-utilities
2.启动的时候指定UML的eth0
Host# ./linux ubd0=/uml/Debian-4.0-x86-root_fs mem=128M eth0=tuntap,,,192.168.1.11 umid=ubuntu
或者是等UML虚拟机启动之后,进行设置
host% uml_mconsole umid eth0=tuntap,,,192.168.0.254 <--- 测试没有成功
也可以修改系统网络配置文件:
1>直接在Host的/etc/network/interfaces中修改
auto tap0
iface tap0 inet static
address 192.168.1.11
netmask 255.255.255.0
tunctl_user username
说明:此处添加的是静态ip地址,你可以根据自己的需要设置。username是指可以启动tunctl的用户,当然是填自己的用户名了。
2>配置/etc/default/uml-utilities文件使uml_switch连接到此接口。
也就是在此配置文件中添加
UML_SWITCH_OPTIONS="-tap tap0"行。
3>启动 tap0接口:
引用:
Host# /sbin/ifup tap0
4>重新启动uml守护进程:
Host# /etc/init.d/uml-utilities restart
3.UML虚拟机启动之后,设置UML的IP
UML-Debian:~# ifconfig eth0 192.168.1.111
* modprobe tun
* ifconfig tap0 192.168.1.11 netmask 255.255.255.255 up
* bash -c echo 1 > /proc/sys/net/ipv4/ip_forward
* route add -host 192.168.1.111 dev tap0
* bash -c echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp
注意:这里取得IP是192.168.1.11,跟Host网段可以一致也可以不一致。
如果网段一致,那么UML相当于本地网络中一个独立的主机;如果不一致的话,可以设置成NAT,将Host和UML设置成一个网络。
下面我们是采用NAT方式进行设置的,采用桥接的话,修改默认路由
3.如果想跟外部网络通信的话,必须添加UML的默认路由:
UML# route add default gw 192.168.1.11
UML-Debian:~# route add default gw 192.168.1.11
UML-Debian:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.1.11 0.0.0.0 UG 0 0 0 eth0
4.如果不方便将UML主机作为本地网络的一个独立主机的话,可以将UML跟Host设置成NAT
Host# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
5.接下来设置DNS服务器:
UML-Debian:~# cat /etc/resolv.conf
# insert your own settings here!
nameserver 202.118.224.101
测试一下网络
UML-Debian:~# traceroute 202.118.250.19
traceroute to 202.118.250.19 (202.118.250.19), 30 hops max, 40 byte packets
1 192.168.1.11 (192.168.1.11) 12.543 ms 0.204 ms 0.146 ms
2 10.0.0.1 (10.0.0.1) 1.893 ms 1.017 ms 1.003 ms
3 202.118.233.254 (202.118.233.254) 6.998 ms 2.012 ms 1.212 ms
4 202.118.168.211 (202.118.168.211) 1.383 ms 1.445 ms 1.515 ms
5 202.118.250.19 (202.118.250.19) 1.491 ms 1.382 ms 1.304 ms
UML-Debian:~# ping -c3
PING (202.118.224.25) 56(84) bytes of data.
64 bytes from (202.118.224.25): icmp_seq=1 ttl=60 time=1.32 ms
64 bytes from (202.118.224.25): icmp_seq=2 ttl=60 time=1.21 ms
64 bytes from (202.118.224.25): icmp_seq=3 ttl=60 time=1.26 ms
--- ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2013ms
rtt min/avg/max/mdev = 1.215/1.268/1.322/0.052 ms
############################################
参考文献
############################################
(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
阅读(2291) | 评论(0) | 转发(0) |