Xen的半虚拟化(PV)虚拟机的安装是比较麻烦的,因为不能像平时安装系统一样,使用GUI来安装(我不了解怎样用命令行安装一个linux系统。唉……)。所以得用一些其他的办法。这里记录一下我使用的两种方法:rsync和xen-tools。
- 使用xen-tools(推荐)
使用xen-tools来安装DomU,好处是方便省事不折腾。推荐使用这种办法。
apt-get安装依赖包:
debootstrap
libtext-template-perl
config-inifiles-perl
安装xen-tools。因为我的xen是自己安装的,用不了apt-get里的老版本tools,所以我用源码安装。下载源码后直接make install即可。(脚本嘛)
使用xen-create-image安装DomU命令行:
xen-create-image
--hostname=debian-pv # 虚拟机名字
--lvm=vg0 # lvm卷组
--memory=512M
--image-dev=/dev/vg0/PV # lvm主分区
--swap-dev=/dev/vg0/swap # swap分区
--dist=squeeze # 新鲜的大便系统
--ip=10.0.0.1 --nameserver=***** # 网络设定(nat方式)
--passwd --keep --verbose # 其他的选项
耐心地等待下载完成。对应的虚拟机配置文件(debian-pv.cfg)会生成在/etc/xen/下。可以烤到方便的位置。然后就可以xm create 亨受安装好的虚拟机了!
note:
不要使用xl(XenLight)启动虚拟机,因为xl不会载入/etc/xen/scripts里的脚本,网络配置会有问题。
xen-create-image坏处是只能安装debian(和centos),版本有限定,而且网速要快。DomU是全新的系统,需要安装各种软件。
其实还有别的安装方式:比如可以下载好压缩包然后本地安装。或者类似下面的rsync的安装:把 --dist=squeeze换成--install-method=copy --install-source=/。当然,没有测试。
- 使用rsync或者cp同步Dom0文件,手动配置config
这种办法可以复制一个和Dom0一模一样的DomU,因为内核版本/安装的软件都是一样的,所以非常好用,当然是配置好以后。比如我在Dom0里配好了一个apache服务器,rsync同步过去之后启动domu,domu上会激活一个一模一样的web服务器!
1. 拷贝文件。
首先挂载虚拟机镜像。
sudo mount -o loop /dev/vg0/pv ~/virt/pv
然后同步。
sudo rsync -avH --exclude=/home/viktor/src --exclude=/home/viktor/virt --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/tmp --exclude=/usr/src \
--exclude=/var / ~/virt/pv
cd ~/virt/pv
mkdir {media,mnt,proc,tmp,usr/src}
这时要小心的调整rsync的--exclude选项,确保把文件系统里以下的内容,全部用--exclude排除:(建议存成脚本)
- 所有的动态文件夹(例如/proc)。其中/sys和/dev可能要保留
- 不需要的数据文件夹(例如/usr/src,经常数G的代码,还有自己的主目录)
- 镜像文件自身挂载的位置(这里是~/virt/pv)
同步的时候在/sys和/dev里会有一些错误,不用理会。
mkdir把刚才没有同步的文件夹重新建立。
2. 修改镜像
修改镜像里的etc/fstab文件:
修改pv/etc/fstab文件
# 原主分区改成/dev/xvda1
/dev/xvda1 / ext4 errors=remount-ro 0 1
# 原swap分区改成/dev/xvda2
/dev/xvda2 none swap sw 0 0
# 其他的删掉
检查etc/securetty文件,如果hvc0被注释掉了,把它加上。否则会出现
虚拟机不显示登陆提示 不能登录 的问题
3. 编辑虚拟机配置文件pv.cfg
config文件:(ref: http://www.virtuatopia.com/index.php/Building_a_Xen_Virtual_Guest_Filesystem_using_Logical_Volume_Management_(LVM))
kernel="/boot/vmlinuz-3.2.6"
ramdisk="/boot/initrd.img-3.2.6"
name="mint-pv"
memory="512"
disk=['phy:Group0/PV,xvda1,w', 'phy:Group0/Swap,xvda2,w'] # lvm卷使用phy前缀。镜像文件使用file前缀。
root='/dev/xvda1 ro'
vif=['ip=10.0.0.1']
dhcp="dhcp"
vfb = [ 'type=vnc' ]
vnclisten = '127.0.0.1'
extra='xencons=hvc0' # 如果需要runlevel 3可以在xencons前面加上。
on_poweroff='destroy'
其中extra部分:xen4.1版本的控制台配置是:xencons=hvc0。用其他的(比如console=tty之类的)会出现xm console(或者vnc)不显示登陆提示 不能登录
这时把镜像卸载。就可以尝试启动虚拟机了。Hope you good luck!
note:
不要使用xl(XenLight)启动虚拟机,因为xl不会载入/etc/xen/scripts里的脚本,网络配置会有问题。
自己使用的时候,domu启动时总是提示挂载ext4分区失败等等各种不稳定情况。出现这些意外,就很难解决了。
另外,PV DomU是没有图形界面的(Dom0和Domu只有一方可以使用pci显卡设备)。所以把Dom0克隆到DomU,把GUI的部分也克隆过去了,其实有些浪费,而且会带来一些问题。如果Domu出现GUI相关的问题,请在配置文件里加入 extra=3
ps:
使用dd生成img镜像文件:
dd if=/dev/zero of=ubuntu.img bs=1M count=0 seek=8K
使用dd命令。这里count=0 seek=8K是把文件大小直接调整到1M*8K=8GB,并不写入任何数据。如果是count=8K那就会真正地填上0,很耗时间。(note:ext3文件系统只支持4GB单个文件。更大的就需要ext4了……)