分类: LINUX
2010-09-26 17:13:20
在 CentOS 源码编译安装 Xen 的过程和 的过程差不多,只是第一步安装编译所需要的工具和软件包有所不同,后续步骤有点小差别,不过方法都是一样的,这也说明各个 Linux 发行版之间的区别真的不大,没有必要为而发愁。编译一个 Xen 内核和编译一个普通 Linux 内核没有什么不同,如果发现编译后的内核启动不了,出现 kernel panic 的情况,多半是内核与机器的硬件没有配置好的原因,和 Xen 没有关系,比如常见的 switchroot: mount failed: No such file or directory 就可能是因为内核配置的时候忘了加上 root 的硬盘驱动,也可能找到驱动了但是挂载的时候发现文件系统类型不对,等等。VPSee 在一台 Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz, 4GB 机器上使用最新的 Xen 4.0.0 源代码和 CentOS 5.4 完成以下操作。这里还有在 的详细过程。如果觉得源码安装很麻烦的话,这里有 的二进制安装过程。
首先最小化安装 CentOS,然后安装编译 Xen 和 Linux xen kernel 所需要的软件包:
安装完以上软件包后,剩下的操作就和 差不多了。
到 下载最新的 Xen 源代码,然后解开、编译、安装,标准的 Linux 软件源码安装动作:
上面 make stubdom 的时候会从网上自动下载一些东西,所以如果是用代理上网的话需要在自己根目录下的 .wgetrc 里加上代理服务器,以便 wget 能通过代理正常下载:
加入到启动脚本:
下载 Linux 内核后给内核打 xen 补丁:
配置带 xen 的 Linux 内核:
配置好内核参数以后,保存并退出,开始编译 Linux 内核:
更新 grub:
重启系统,确认 Xen 安装成功:
如果把正在运行的 Xen 内核的操作系统看成 host 的话,那么运行在 host 上面的操作系统就可以看成 guest。先建一个目录用来存放所有的 guest 操作系统的 image,vm01.img,vm02.img,等等,1个 guest 对应1个 image。
# mkdir /vm # cd /vm # virt-install What is the name of your virtual machine? <-- vm01 How much RAM should be allocated (in megabytes)? <-- 256 What would you like to use as the disk (path)? <-- /vm/vm01.img How large would you like the disk (/vm/vm01.img) to be (in gigabytes)? <-- 4 Would you like to enable graphics support? (yes or no) <-- no What is the install location? <--
或者可以把上面简化成1条命令:
# virt-install -n vm01 -r 256 -f /vm/vm01.img -s 4 --nographics -p -l
需要注意的是上面如果是 -p(paravirtualized)的话就不能直接从 iso 文件安装,必须把 iso 文件解出来后放到一个 http/ftp 服务器上安装,只有 fully virtualized 的才可以从 iso 文件、CD-ROM 等安装。还要注意的是,paravirtualized 需要修改过的操作系统内核,所以不能安装 Windows, fully virtualized 可以用来安装 Windows 只要 CPU 支持 Virtualization(Intel VT or AMD V)。所以这里需要先安装和配置一个 web 服务器,然后把 iso 文件解压到 web 服务器能访问的目录下()。如果网速够快,可以从 Internet 上直接安装,把 换成
按照 CentOS 的安装程序完成 CentOS 操作系统(guest)的安装后,看看 guest 的配置文件:
# cat /etc/xen/vm01 name = "vm01" uuid = "b4910b6d-b205-6f86-c145-3c0895cb20c5" maxmem = 256 memory = 256 vcpus = 1 bootloader = "/usr/bin/pygrub" on_poweroff = "destroy" on_reboot = "restart" on_crash = "restart" vfb = [ ] disk = [ "tap:aio:/vm/vm01.img,xvda,w" ] vif = [ "mac=00:16:d2:0a:66:6d,bridge=xenbr0" ]
看看 guest 是否启动:
# /usr/sbin/xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1220 2 r----- 4691.3 vm01 9 255 1 -b---- 16.9
安装成功后就可以登录 guest 了,
# /usr/sbin/xm console vm01
如果要退出 guest 的话,用 Ctrl + ],就会回到 host。
如果想每次启动 host 时自动启动 guest 的话:
# ln -s /etc/xen/vm01 /etc/xen/auto
如果觉得安装 guest 操作系统太麻烦,可以到 下载一个已经装好的镜像文件,然后在 host 下启动 guest 镜像就可以了。下载和启动 Ubuntu 9.04 的镜像:
# wget sites/default/files/ubuntu/ ubuntu.9-04.x86.20090514.img.tar.bz2 # tar jxvf ubuntu.9-04.x86.20090514.img.tar.bz2 # mv ubuntu.9-04.x86.xen3.pygrub.cfg /etc/xen/ubuntu.9-04.cfg # mv ubuntu.9-04.x86.img /vm/ubuntu.9-04.img # /usr/sbin/xm create -f ubuntu.9-04.cfg # /usr/sbin/xm list # /usr/sbin/xm console ubuntu.9-04
从 下载的镜像文件的初始用户名和密码为:root/password
如果是从 下载的操作系统镜像,可能没有设置 swap,需要自己添加 swap 分区,可以做个 swap 镜像文件当作 swap 分区用。Xen 与 OpenVZ 相比有个好处就是 Xen 可以有自己的 swap 分区,甚至 guest 可以自己设置 swap. 先建个 512MB(524288B,1GB = 1048576B)大小的文件,转化成 swap 格式:
# dd if=/dev/zero of=ubuntu.9-04.swap bs=1024 count=524288 # /sbin/mkswap ubuntu.9-04.swap
修改 /etc/xen/ubuntu.9-04,修改 disk 这一行:
# vi /etc/xen/ubuntu.9-04.cfg disk = ['file:/vm/ubuntu.9-04.img,sda1,w','file:/vm/ubuntu.9-04.swap,sda2,w']
启动 guest 系统,登录后修改 /etc/fstab,重启后用 top 看看 Swap 分区有没有被激活:
# vi /etc/fstab /dev/sda2 swap swap defaults,noatime 0 0 # shutdown -r now # top ... Mem: 262284k total, 46480k used, 215804k free, 3176k buffers Swap: 524280k total, 0k used, 524280k free, 17196k cached
xm create -c /path/to/config - Start a virtual machine.
xm shutdown - Stop a virtual machine.
xm destroy - Stop a virtual machine immediately without shutting it down. It's as if you switch off the power button.
xm list - List all running systems.
xm console - Log in on a virtual machine.
xm help - List of all commands.
chinaunix网友2010-09-29 11:34:33
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com