之后的一段时间里面将会围绕Xen开展工作,所以这一系列博客就记录一下学习的过程和问题。本篇介绍如何从源码编译并运行Xen。主要部分都是从大哥那里现学现卖的:)
原文地址
官网教程也介绍的比较详细。
相关书籍里面介绍了许多相关的书能帮助学习和开发。
#直接安装
据说很简单
1  | sudo aptitude -P install xen-linux-system  | 
#从源码编译
遇到什么问题的话可以参考官网指导
1  | $ sudo aptitude build-dep xen  | 
安装完成以后,在/boot 下会有xen.*.gz的镜像
- xen-4.4.3.gz是我安装的xen的镜像(我使用的是4.4.3版本)
 - vmlinuz-3.16.0-4-amd64 是Domain0的镜像
 - initrd.img-3.16.0-4-amd64 是initrd(initial ram disk)
 
启动选项(Optional)
/boot/grub/grub.cfg会有 with xen的启动选项:
grub.cfg 是根据
/etc/default/grub生成的, 如果需要修改启动顺序的话,可以在/etc/default/grub中进行修改,查看一下想要默认启动的项是第几个(从0开始),在grub中将set default=n设置为需要的即可。也可以直接下面的命令修改
1  | sudo dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen  | 
这里数字越小优先级越高。
- 完成后使用 
sudo update-grub来更新grub,就可以将其设为默认启动 
启动服务
重启后,默认情况下服务时没有开启的,手动开启:
1  | sudo service xendomains start  | 
或者
1  | sudo ./etc/init.d/xendomains start  | 
如果之后让它自动加载这两个服务的话:
1  | sudo update-rc.d xencommons defaults 19 18  | 
重启后 使用$ sudo xl list 可以看到当前运行的虚拟机,而原本的系统会以Domain0启动
至此,已经成功将Xen跑了起来
- 如果显示缺少lib 使用
ldconfig命令刷新链接 - 之后重启xen的相关服务
 
接下来就可以启动虚拟机了,使用的还是xl的工具,同时准备好相应的iso镜像。
关于虚拟化,有两个概念:半虚拟化(para-virtualization)以及全虚拟化(full virtualization)详细的可以参考:
The Paravirtualization Spectrum, part 1: The Ends of the Spectrum
The Paravirtualization Spectrum, Part 2: From poles to a spectrum
这部分不在讨论范围,具体的可以参考我师兄的blog(原文那里)
Note
从CD启动虚拟机:官网指导
如何启动DomainU:How to Do
问题
在安装过程中可能遇到以下问题:
在Debian启动时卡到界面上进不去
这种要安装Linux-firmware-nonfree,原因是少了nonfree firmware里的显卡相关驱动全虚拟化模式下启动客户端虚拟机发生重启:
可以查看下/proc/cpuinfo里面是不是有vmx或svm的flag,只有CPU支持vmx(Intel)/svm(AMD)的才能使用全虚拟化。如果CPU不支持,或者BIOS里没打开的话是不行的 ###找不到依赖Unable to find xgettext:
sudo aptitude install gettextUnable to find as86:
sudo aptitude install bccUnable to find iasl:
sudo aptitude install iaslUnable to find yawl:
sudo aptitude install libyajl-dev sudo aptitude install libpixman-1.devUnable to find pixman-1:
sudo aptitude install libpixman-1.devcdefs.h not found: (or compile x86 program on x64)
sudo apt-get install gcc-multilib sudo apt-get install g++-multilibzlib.h not found
sudo apt-get install zlib1g-devopenssl/md5.h not found
sudo apt-get install libssl-devuuid.h not found
sudo apt-get install uuid-dev-lncurses not found
sudo apt-get install libtool sudo apt-get install lib32ncurses5-devPython.h not found
sudo apt-get install python-devglib2.12 required to compile qemu
参考glib,不用配置,直接安装,之后再安装这些:
make stubdom sudo make install-xen sudo make install-tools PYTHON_PREFIX_ARG= sudo make install-stubdom[standards.info] error 1
sudo apt-get install texinfoyacc not found
sudo apt-get install byacc flexfig2dev not found
sudo apt-get install transfigUnable to find a suitable curses library
sudo aptitude install libncurses5-devglib.h
install libgtk2.0-dev
ChangeLog
- 2017-05-03: Add 
update-rc.d