plantegg 发表于 2015-10-11 14:50:58

在ubuntu7.10 Desktop上安装和使用Xen虚拟机

基本概念:
Guest operating system, 就是虚拟机,也叫domU, 它们安装在
Host operating system, 也叫dom0

我的安装环境:
一台普通的台式机
CPU: AMD Sempron(tm) Processor 3200+
一块以太网卡, 用ifconfig可以看到interface name为:eth0。如果不是eth0, 或使用的是无线网卡,使用以下安装配置可能虚拟机的网络会不通。
IDE硬盘。用df可以看到,/dev/hda1。 如果是sata等硬盘,可能看到的是/dev/sda1。
关于硬盘分区的问题要注意,虚拟机使用的映射后的硬盘分区(不管是从物理分区映射的,还是从一个映像文件映射的)必须是唯一的,不能被dom0或其他domU使用。

1. 安装xen
sudo apt-get install ubuntu-xen-desktop
2. xen基本配置
sudo vi /etc/xen/xend-config.sxp
把 # (network-script network-bridge) 这一行前的#去掉,意思就是会使用bridge的方式

sudo vi /etc/modules
在文件里加上一行: loop max_loop=64
如果loop行已存在,就改成一样的。

3. 重启机器
启动时用的内核应该是 Xen 3.1 / Ubuntu 7.10, kernel 2.6.22-14-xen, 如果不是(应该不会),可能需要手工选择。
启动成功后,可以用 uname -a 检查内核版本是否为 2.6.22-14-xen
用 sudo xm list 可以看到只有Domain-0,没有其他虚拟机

4. 准备安装虚拟机了
我要安装的虚拟机仍然是ubuntu7.10 Desktop, 因为我只是需要多个环境做一些分布式系统的测试,没有必要安装其他不同的Linux发行版或windows.
我使用 xen-create-image 脚本生成虚拟机,有一个配置文件 /etc/xen-tools/xen-tools.conf 里定义了这个脚本要用的一些缺省参数。
为了方便起见,修改一下这个配置文件, 不改也可以,不过运行 xen-create-image就要带很多参数,太麻烦了。
sudo vi /etc/xen-tools/xen-tools.conf
注意修改以下内容:

dir = /home/xen          #虚拟机映像文件将生成在这个目录下
dist   = gutsy             #缺省安装的是ubuntu 7.10
gateway   = 192.168.100.101    #虚拟机的网络配置
netmask   = 255.255.255.0
broadcast = 192.168.100.255
passwd = 1            #虚拟机的root的口令

5. 生成虚拟机
目前xen-create-image的缺省配置是从 ubuntu remote repository安装, 如果你的网络慢,要安装很长时间。
如果你有ubuntu的光盘或iso文件安装就快了。
把光盘放入光驱,你应该可以在/media/cdrom下看到光盘的内容
如果是iso文件,你可以用命令: sudo mount -o loop -t iso9960 ubuntu710.iso /mnt/tmp

运行:
sudo xen-create-image --ip=192.168.100.2 --hostname=vm01 --mirror=file:///media/cdrom --mac=00:60:00:00:00:10
最后,会出现:
Setting up root password
Enter new UNIX password:
设置一个虚拟机的root口令

安装结束:
在目录 /home/xen/domains/vm01/ 下会有两个映像文件 disk.imgswap.img
还有一个配置文件 /etc/xen/vm01.cfg

这里: 我们为虚拟机配置一个static 的IP地址、主机名和mac地址。
特别是mac地址,最好设置一个,否则会出现这种情况,虚拟机第一次启动网络好的,第二次启动就不好了,据说是因为没有配,mac地址每次启动时会自动分配,所以重启后就变了,所以就不通了。如果你没有配,也有解决办法,自己查google吧。
另外有文档上说: xen-create-image 要加上参数 -ide , 我认为这个和虚拟机分区映射有关系。 如果你的硬盘是sata硬盘,分区已经使用了/dev/sda1, xen-create-image生成的虚拟机的分区也映射为/dev/sda1, 这是就有问题了,如果加了 -ide参数,虚拟机使用的分区就映射为hda1了。我的硬盘是IDE硬盘,所以不用加这个参数。
如果你要生成多个虚拟机并同时启动,这时就要手工改一些东西了,后面讨论,先把第一个搞出来比较重要。

6. 启动虚拟机
sudo xm create -c /etc/xen/vm01.cfg

-c 就是启动后进入虚拟机的console, 如果没有-c, 可以用命令: sudo xm console vm01 进入, CTRL+] 退出 console

7. 启动后不动了(hang)

[ 6131.825816] EXT3-fs: mounted filesystem with ordered data mode.
[ 6132.138032]   
[ 6132.138048]   ***************************************************************
[ 6132.138054]   ***************************************************************
[ 6132.138060]   ** WARNING: Currently emulating unsupported memory accesses**
[ 6132.138065]   **          in /lib/tls glibc libraries. The emulation is    **
[ 6132.138070]   **          slow. To ensure full performance you should      **
[ 6132.138075]   **          install a 'xen-friendly' (nosegneg) version of   **
[ 6132.138081]   **          the library, or disable tls support by executing **
[ 6132.138086]   **          the following as root:                           **
[ 6132.138091]   **          mv /lib/tls /lib/tls.disabled                  **
[ 6132.138097]   ** Offending process: init (pid=1525)                        **
[ 6132.138102]   ***************************************************************
[ 6132.138107]   ***************************************************************
[ 6132.138112]   
[ 6132.138116] Continuing...
[ 6137.633792]

先把虚拟机关了
sudo xm list    可以看到有个名字叫vm01的虚拟机
sudo xm destroy vm01

注意:上面信息中所说的操作应该是虚拟机中的操作,但虚拟机都启动不起来如何mv呢?
办法是可以把映像文件disk.img挂载在一个目录下,到目录里修改,这个方法很重要,以后会经常使用。
sudo mount -o loop /home/xen/domains/vm01/disk.img /mnt/tmp/
sudo mv /mnt/tmp/lib/tls /mnt/tmp/lib/tls.disabled
sudo umount /mnt/tmp

再次启动虚拟机
sudo xm create -c /etc/xen/vm01.cfg

8. 还是启动后不动了(hang)
最后几行为:
fuse init (API version 7.8)
Failure registering capabilities with primary security module.
thermal: Unknown symbol acpi_processor_set_thermal_limit
kjournald starting.Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.

google后,找到解决办法(不明白原理)

sudo vi /etc/xen/vm01.cfg
加入这一行:
extra = 'xencons=tty'

先把虚拟机关了
sudo xm destroy vm01
再次启动虚拟机
sudo xm create -c /etc/xen/vm01.cfg

9. 又不动了,问题真多啊
最后一行为:
* Setting the system clock

google后找到参考文档: https://lists.ubuntu.com/archives/ubuntu-users/2007-November/131096.html

先把虚拟机关了
sudo xm destroy vm01
sudo mount -o loop /home/xen/domains/vm01/disk.img /mnt/tmp/
sudo vi /mnt/tmp/etc/default/rcS
加一行:
HWCLOCKACCESS=no
sudo vi /mnt/tmp/etc/udev/rules.d/85-hwclock.rules
把KERNEL=="rtc", ACTION=="add", RUN+="set_hwclock"这一行注释了,前面加#
sudo umount /mnt/tmp

再次启动虚拟机
sudo xm create -c /etc/xen/vm01.cfg

10. 终于启动成功了
用root登录进去, ping 网络也是好的。就此,第一个虚拟机就好了,修改/etc/apt/sources.list之后,就可以用apt-get安装其他软件了。

11. 部署第二个、第三个虚拟机
虽然已经成功启动了一个ubuntu7.10的虚拟机,我还想再启动一个。
这次不用再用上面的过程了,既然用的是映像文件,拷贝一份就可以了吧。

先把虚拟机关了
sudo xm destroy vm01
拷贝映像文件
cd /home/xen/domains/
sudo cp -r vm01 vm02
拷贝配置文件
sudo cp /etc/xen/vm01.cfg /etc/xen/vm02.cfg

sudo vi /etc/xen/vm02.cfg
其中有几行为:
root      = '/dev/sda1 ro'
disk      = [ 'file:/home/xen/domains/vm01/disk.img,sda1,w', 'file:/home/xen/domains/vm01/swap.img,sda2,w' ]

这里如果之前创建的虚拟机vm01启动了,这个vm02的分区和vm01一样是不能同时启动的,我们改为sdb。 还有文件路径。
root      = '/dev/sdb1 ro'
disk      = [ 'file:/home/xen/domains/vm02/disk.img,sdb1,w', 'file:/home/xen/domains/vm02/swap.img,sdb2,w' ]

主机名改为:
name      = 'vm02'

network改为:
vif         = [ 'ip=192.168.100.3,mac=00:60:00:00:00:11' ]
注意 mac地址也要改

这样还没完,你想vm02是从vm01拷贝过来的,里面的各种配置没变啊。
sudo mount -o loop /home/xen/domains/vm02/disk.img /mnt/tmp/

修改fstab
sudo vi /mnt/tmp/etc/fstab
把sda改为sdb, 因为这虚拟机我们把分区映射到sdb了,为了和vm01区分开来。

修改主机名
sudo vi /mnt/tmp/etc/hostname
改为vm02

修改IP地址
sudo vi /mnt/tmp/etc/network/interfaces
把address 改为 192.168.100.3

修改mac地址
sudo vi /mnt/tmp/etc/udev/rules.d/70-persistent-net.rules
把下一行中的00:60:00:00:00:10 给为 00:60:00:00:00:11
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:60:00:00:00:11", NAME="eth0"

sudo umount /mnt/tmp/
启动虚拟机vm02
sudo xm create -c /etc/xen/vm02.cfg
启动虚拟机vm01
sudo xm create -c /etc/xen/vm01.cfg

登录进去,网络应该都是互通的。

需要更多的虚拟机如法炮制就可以了。

12. 总结
在ubuntu下使用xen虚拟机,感觉问题满多的。也许使用centos5会方便很多,以后再试吧。
还有就是在笔记本环境下,用的是无线网络,虚拟机的网络始终没配通,我已经快失去信心了。也许再坚持一下就出来了:)

参考:
http://www.howtoforge.com/ubuntu-7.10-server-install-xen-from-ubuntu-repositories
http://www.linuxsir.org/main/?q=node/188             版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: 在ubuntu7.10 Desktop上安装和使用Xen虚拟机