Xen
xen是上个世纪九十年代,出自英国伦敦剑桥大学的两个研究员之手。它是个开源的虚拟器,直接运行在硬件上,也就是说他能直接驱动硬件设备。
xen 是个怪胎,需要直接跑到硬件上,在xen 上每个虚拟机都叫做Dom ,安装上xen hypervisor 之后,首先启动的是Dom0(Dom0是第一个虚拟机),是必须安装的,所有的管理接口都要有Dom0实现。
Xen hypervisor和Dom0的区别。
xen hypervisor : 是计算机硬件的抽象层,直接附加在硬件上,运行在硬件上,把获得的计算能力通过抽象接口,提供给guest,将CPU资源按需分配,将内存资源分配,将中断请求映射,并负责提供一个console,
Dom0: 是一个特权域,可直接访问硬件io资源,可以为其他非特权提供io,Dom0 中的内核是特定的,运行半虚拟化后端。他还要调用hyper call。
所以说,各DomU对CPU,内存,中断的调用使用xen hypervisor,对io调用使用Dom0
对于xen先前是有所了解的,但是一直没有操作,今天大早起床开始尝试编译的方式实现xen,一直搞到现在,总算成功了。一下是详细步骤。
编译安装xen
[root@localhost ~] # yum groupinstall "Development Tools" //安装搜需要的包组
[root@localhost ~] # yum install hmaccalc ncurses-devel zlib-devel openssl-devel python-devel bridge-utils libtool-ltdl iasl xorg-x11* //在此解决依赖关系。
到http://www.acpica.org/downloads下载并安装acpica并且解压。
[root@localhost ~]# ls
acpica-unix-20150204 install.log
acpica-unix-20150204.tar.gz install.log.syslog
anaconda-ks.cfg
[root@localhost ~]# cd acpica-unix-20150204
[root@localhost acpica-unix-20150204]# make
[root@localhost acpica-unix-20150204]# make install
到下面地址下载:dev86
ftp://mirror.switch.ch/pool/4/mirror/centos/6/os/x86_64/Packages/
dev86-0.16.17-15.1.el6.x86_64.rpm
[root@www ~]# rpm -ivh dev86-0.16.17-15.1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:dev86 ########################################### [100%]
[root@www ~]#
到http://xenproject.org/downloads/xen-archives/supported-xen-41-series/xen-411.html 下载最新的 Xen 源代码
[root@localhost ~]# ls
acpica-unix-20150204 install.log
acpica-unix-20150204.tar.gz install.log.syslog xen-4.1.1.tar.gz anaconda-ks.cfg
[root@localhost xen-4.1.1]# make world //在此会有警告信息我遇到的缺少makeinfo,latex和fig2dev,在此会报缺少包都要一一装上。我在此缺少texinfo,latex,fig2dev.
[root@localhost xen-4.1.1]# yum install texinfo
[root@localhost xen-4.1.1]# yum install texlive-latex
[root@localhost xen-4.1.1]# yum install transfig
再次执行以上make world
[root@localhost xen-4.1.1]# make install
[root@localhost xen-4.1.1]# chkconfig --add xend
[root@localhost xen-4.1.1]# chkconfig --add xendomains
[root@localhost xen-4.1.1]# chkconfig --add xencommons
[root@localhost xen-4.1.1]# chkconfig xend on
[root@localhost xen-4.1.1]# chkconfig xendomains on
[root@localhost xen-4.1.1]# chkconfig xencommons on
[root@localhost xen-4.1.1]#
下面是编译安装linux3.0.20内核
然后解压,修改,编译,编译模块,安装模块,安装内核
[root@www ~]# tar xf linux-3.0.20.tar.gz
[root@www ~]# cd linux-3.0.20
[root@www linux-3.0.20]# ls
arch COPYING CREDITS Documentation Kbuild Kconfig MAINTAINERS Makefile README REPORTING-BUGS
root@www linux-3.0.20]# ls
arch crypto fs Kbuild MAINTAINERS README security virt
block Documentation include Kconfig Makefile REPORTING-BUGS sound
COPYING drivers init kernel mm samples tools
CREDITS firmware ipc lib net scripts usr
[root@www linux-3.0.20]# make menuconfig
找到Device Drivers --->
进入后选择Xen driver support --->
进入以后,将全部选项改成*。在此*表示将该功能编译到内核,M的表示编译成加载模块,空表示不编译到内核中。如下图
接下来就是退出并且保存已修改的项。
[root@www linux-3.0.20]# make && make modules && make modules_install && make install && depmod 3.0.20
这一步遇到了错误,在网上找了诸多解决方案都没有成功,错误如下。