实验环境 :Windows XP 32b
VMware Workstation 7
CentOS 5.4 Linux kernel 2.6.18-164.el5 (客户机)
目 标:安装xen虚拟化环境,启动至少两台虚拟机,实现虚拟机桥接通信,进而进行MPI实验
//机器配置不高,CentOS安装时分配内存、硬盘都不充足,
安装过程 :
1.查看硬件是否支持Xen虚拟化
半虚拟化:
x86_64位机支持半虚拟化;x86 32位机 CPU 需要支持pae (Page Size Extensions)技术;
判断方法,见示例一:
[root@localhost ~]# cat /proc/cpuinfo | grep flags
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht nx constant_tsc pni
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht nx constant_tsc pni
全虚拟化:
CPU 需要虚拟化技术,Intel 提供VT技术,AMD 提供 SVM 技术,在flags中的标识分别为 vmx , svm
由此可知,示例一中的CPU不支持全虚拟化。
支持全虚拟化CPU举例,示例二,
[root@A ~]# cat /proc/cpuinfo | grep flags
flags : fpu tsc msr pae cx8 apic mtrr cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc pnivmx est ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm
2.环境准备(安装依赖工具包),下载安装xen hypervisor , Xen 内核 (参照Xen v3.0 用户手册)
#yum install "Development Tools" // 使用代理,勿忘export http_proxy , 当然也可以选择从光盘安装,
// yum --enablerepo =c5-media install *** 我是找不到安装盘 了
//CentOS 5.4 过于Old了,默认的镜像服务器已经不存储相关文件了,
//参照readme中所述,可修改CentOS.Base.repo中的baseurl ( http://vault.centos.org/5.4...)
// yum 配置好可谓 “事半功倍”
# wget http://bits.xensource.com/oss-xen/release/3.4.4/xen-3.4.4.tar.gz //一样要注意http_proxy问题
//下载 xen ,这里我下的是Xen 3.4.4 ,以前没什么安装经验,这次选3.的也是随性的
#tar zvxf xen-3.4.4.tar.gz // ./xen-3.4.4/README 中有Quick-Start Guide - Source Release,可参照
// 指明了部分依赖的软件包
* GCC v3.4 or later
* GNU Make
* GNU Binutils
* Development install of zlib (e.g., zlib-dev)
* Development install of Python v2.3 or later (e.g., python-dev)
* Development install of curses (e.g., libncurses-dev)
* Development install of openssl (e.g., openssl-dev)
* Development install of x11 (e.g. xorg-x11-dev)
* bridge-utils package (/sbin/brctl)
* iproute package (/sbin/ip)
* hotplug or udev
#cd xen-3.4.4/tools/check
#./chk build //查看缺少哪些依赖工具包
# ./chk install
示例三
[root@localhost check]# ./chk build
Xen CHECK-BUILD Tue Mar 26 22:43:21 PDT 2013
Checking check_crypto_lib: OK
Checking check_curl: unused, OK
Checking check_openssl_devel:
*** check_openssl_devel FAILED : missing openssl headers
Checking check_python: OK
Checking check_python_devel: OK
Checking check_x11_devel:
*** check_x11_devel FAILED: can't find X11 headers
OK
Checking check_xgettext: OK
Checking check_xml2: unused, OK
Checking check_zlib_devel: OK
Checking check_zlib_lib: OK
//表示缺少openssl_devel , x11_devel//缺什么装什么,yum install openssl_devel// yum install x11_devel
[root@localhost check]# ./chk build
Xen CHECK-BUILD Tue Mar 26 23:03:22 PDT 2013
Checking check_crypto_lib: OK
Checking check_curl: unused, OK
Checking check_openssl_devel: OK
Checking check_python: OK
Checking check_python_devel: OK
Checking check_x11_devel: OK
Checking check_xgettext: OK
Checking check_xml2: unused, OK
Checking check_zlib_devel: OK
Checking check_zlib_lib: OK
[root@localhost check]# ./chk install
Xen CHECK-INSTALL Tue Mar 26 23:18:34 PDT 2013
Checking check_brctl: OK
Checking check_crypto_lib: OK
Checking check_curl: unused, OK
Checking check_iproute: OK
Checking check_python: OK
Checking check_python_xml: OK
Checking check_udev: which: no udevadm in (/sbin) //没解决
OK
Checking check_xml2: unused, OK
Checking check_zlib_lib: OK
# hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg // 这步实施成功的前提是安装了mercurial,
//依旧要注意网络配置,解决clone 耗时过长的问题
# cp -r ./linux-2.6.18-xen.hg ../xen-3.4.4/
# //make 过程中会 Updating linux-2.6.18-xen.hg to revision tip. 很耗时。可以这样,但我没这么做
// 文件xen-3.4.4/buildconfigs/src.hg-clone# vi buildconfigs/src.hg-clone
去掉从网上更新补丁的代码,最后的示例如下:
# Mercurial
HG ?= hg
LINUX_SRCDIR ?= linux-$(LINUX_VER)-xen.hg
# Repository to clone.
XEN_LINUX_HGREPO ?= $$(sh buildconfigs/select-repository $(LINUX_SRCDIR) $(LINUX_SRC_PATH))
# Set XEN_LINUX_HGREV to update to a particlar revision. XEN_LINUX_HGREV ?= tip $(LINUX_SRCDIR)/.valid-src: $(__XEN_LINUX_UPDATE)
set -e ; \ //这句前面要有tab键,否则会报错
touch $@
// 编译,补丁stubdom 网上说有这些包,下载好放到 /xen3.4.4/stubdom/下,我也下了几个没有装的包
//grub-0.97.tar.gz newlib-1.16.0.tar.gz pciutils-2.2.9.tar.gz lwip-1.3.0.tar.gz pciutils-2.2.9.tar.bz2 zlib-1.2.3.tar.gz
# make dist
# make install
//首次时,可用make world, 即 make clean +make dist
//README中使用 make dist,它 是由 make xen (make install-xen ), make kernels(make install-kernels),
//make tools(make install-tools), make stubdom (make install-stubdom ), make docs(make install-docs)
// 可采用分步方法,这样也好分析错误。
//make dist -j 4 表示用4个线程, 执行快速不易发现错误可采用 make dist 2>/error.txt
//Makefile:21: === libgcrypt not installed: falling back to libcrypto === 安装libgcrypt-dev包
//在编译安装过程中可能出现include2/asm/byteorder.h:5:28: error: linux/compiler.h: No such file or directory
//此错误可以忽略
# mkinitrd -v -f initrd-2.6.18.8-xen.img 2.6.18.8-xen//在make stubdom可能也会出现问题,它只是一个补丁集,同可以忽略
# mv initrd-2.6.18.8-xen.img /boot/
# vi /boot/grub/grub.conf //更新引导信息
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=1
fallback=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-164.el5.img
title xen3.4.4
root(hd0,0)
kernel /xen-3.4.gz
module /vmlinuz-2.6.18.8-xen ro root=LABEL=/ rhgb quiet//root与黄色保持一致
module /initrd-2.6.18.8-xen.img
# /sbin/chkconfig --add xend //设置xend开机自启动
# /sbin/chkconfig --add xendomains
# /sbin/chkconfig --add xencommons
# /sbin/chkconfig xend on
# /sbin/chkconfig xendomains on
# /sbin/chkconfig xencommons on
# reboot //完成了!