📄 xen 初学者指南.htm
字号:
tools</CODE></DIV>
<P></P>
<P>我们解压xen-3.0.1-src.tgz
后,进入解压目录,会看到以上的文件或文件夹。patches是内核的补丁包,linux-2.6-xen-sparse是支持Xen的内核目录树,值得注意的是内核的配置文件就在这个目录中;</P>
<P>
<DIV class=codeblock><CODE>[root@localhost xen-3.0.1]# ls
linux-2.6-xen-sparse/arch/xen/configs/<BR>xen0_defconfig_ia64
xen0_defconfig_x86_64 xenU_defconfig_x86_32
xen_defconfig_x86_32<BR>xen0_defconfig_x86_32 xenU_defconfig_ia64
xenU_defconfig_x86_64 xen_defconfig_x86_64</CODE></DIV>
<P></P>
<P>看到上面所列出的内核配置文件了吧,我们可能会发现文件名带有xen0字样的和xenU字样的两类文件。在这两类内核中,我们大多会修改的内核配置文件是运行xen的操作系统的内核配置文件,另一个是用于虚拟操作系统的内核配置文件;</P>
<P>xen0字样的就是我们一般是用于我们运行xen的操作系统的内核
,而xenU字样的就是为虚拟操作系统所提供的内核。另外还有x86_32和x86_64之分,这表示CPU的架构。</P>
<P>比如我们用的是x86架构32位的CPU,我们在编译内核的时候就要用到 xen0_defconfig_x86_32
和xenU_defconfig_x86_32 配置文件。</P>
<P><B>举个例子:</B>比如我的机器架构是x86_32位的,我安装xen的操作系统是Slackware,我想在Slackware
虚拟Debian 、Gentoo、Fedora等操作系统。这时编译虚拟平台Slackware所用的内核的配置文件就是
xen0_defconfig_x86_32 ,而被虚拟平台(Debian 、Gentoo、Fedora等操作系统)所用的内核就是
xenU_defconfig_x86_32 。</P>
<P>弄明白内核配置文件有何用?我们能明白xen在编译过程中用了哪些内核配置文件,目的是我们在编译过程中可以根据自己的需要来修改它,以编译出适合我们需要的内核。</P>
<P>比如我们想让Slackware 支持xen,并且还要支持NTFS文件系统;所以我们就要修改
xen0_defconfig_x86_32这个文件。找出如下一行;</P>
<P>
<DIV class=codeblock><CODE># CONFIG_NTFS_FS is not set</CODE></DIV>
<P></P>
<P>改为</P>
<P>
<DIV class=codeblock><CODE>CONFIG_NTFS_FS=m</CODE></DIV>
<P></P>
<P>如果您想让被虚拟的操作系统(Debian 、Gentoo、Fedora等)也支持NTFS文件系统,所以要在
xenU_defconfig_x86_32找出如下一行;</P>
<P>
<DIV class=codeblock><CODE># CONFIG_NTFS_FS is not set</CODE></DIV>
<P></P>
<P>改为</P>
<P>
<DIV class=codeblock><CODE>CONFIG_NTFS_FS=m</CODE></DIV>
<P></P>
<P><B>第二步:配置内核;</B></P>
<P>这一步有两种方法,一个是直接修改内核配置文件,另一个是内核配置界面来配置;</P>
<P><B>方法一:通过修改内核配置文件;</B></P>
<P>Xen所带的内核配置文件位于解压目录中的linux-2.6-xen-sparse/arch/xen/configs
。我们前面已经提到了相关配置文件的用途。请仔细看前一步的说明;</P>
<P><B>方法二:通过内核配置界面来配置;</B></P>
<P>[root@localhost xen-3.0.1]# make linux-2.6-xen0-config
CONFIGMODE=menuconfig</P>
<P><B>第三步:编译和安装Xen;</B></P>
<P>
<DIV class=codeblock><CODE>[root@localhost xen-3.0.1]#
make<BR>[root@localhost xen-3.0.1]# make install</CODE></DIV>
<P></P>
<P><FONT id=3.43 size=2><B><BR>3.43 创建initrd文件;<BR></B></FONT></P>
<P>有的系统需要initrd-XXXX.img或initrd.gz文件才能引导起来,如果您的系统用了支持xen的支持引导不起来,就要创建一个initrd-XXXX.img或initrd.gz的文件;<B>请参考:</B>
<A href="http://www.linuxsir.org/main/doc/Xen3man/" target=_blank>《Xen
v3.0 用户手册》</A></P>
<P><FONT id=3.44 size=2><B><BR>3.44 关于xen0和xenU内核说明;<BR></B></FONT></P>
<P>一般的情况下会在/boot目录中有两个与xen相关的内核,有的文件名带有vmlinuz-XXXX-xen0字样的,有的带有vmlinuz-XXXX-xenU字样的;比如:</P>
<P>
<DIV class=codeblock><CODE>[root@localhost xen-3.0.1]# ls -la
/boot/vmlinuz*xen*<BR>lrwxrwxrwx 1 root root 21 2006-04-12 07:42
/boot/vmlinuz-2.6-xen0 -> vmlinuz-2.6.12.6-xen0<BR>lrwxrwxrwx 1 root
root 21 2006-04-12 07:49 /boot/vmlinuz-2.6-xenU ->
vmlinuz-2.6.12.6-xenU<BR>lrwxrwxrwx 1 root root 21 2006-04-12 07:42
/boot/vmlinuz-2.6.12-xen0 -> vmlinuz-2.6.12.6-xen0<BR>lrwxrwxrwx 1 root
root 21 2006-04-12 07:49 /boot/vmlinuz-2.6.12-xenU ->
vmlinuz-2.6.12.6-xenU<BR>-rw-r--r-- 1 root root 2180524 2006-04-12 07:42
/boot/vmlinuz-2.6.12.6-xen0<BR>-rw-r--r-- 1 root root 1129950 2006-04-12
07:49 /boot/vmlinuz-2.6.12.6-xenU</CODE></DIV>
<P></P>
<P>其实就是两个与xen相关的内核,其它的都是这两个内核文件的链接;也就是vmlinuz-2.6.12.6-xen0和vmlinuz-2.6.12.6-xenU。vmlinuz-2.6.12.6-xen0是用来引导虚拟平台的,比如我们在Slackware上安装Xen,那Slackware就是虚拟平台;所以如果要让Slackware的xen能运行起来,必须用xen相关的内核
,也就是vmlinuz-2.6.12.6-xen0这个内核。 而XenU字样这个内核,是用来引导虚拟操作系统用的,我们在以后会提到它。</P>
<P><FONT id=4 size=4><B><BR>4、引导XenLinux的GRUB配置;<BR></B></FONT></P>
<P>一旦我们在Linux操作系统安装好Xen后,这样的系统应该被称为XenLinux。如何才能引导拥有Xen的Linux呢?这时我们要用到GRUB系统引导管理器。我们修改一下GRUB的配置文件menu.lst或grub.conf就行了。此文件位于/boot/grub目录中;</P>
<P><FONT id=4.1 size=3><B><BR>4.1 判断系统所在的分区;<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# df -h<BR>Filesystem 容量 已用
可用 已用% 挂载点<BR>/dev/hda6 12G 6.9G 4.9G 59% /</CODE></DIV>
<P></P>
<P><FONT id=4.2 size=3><B><BR>4.2 查看/boot目录中xen相关的配置文件;<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# ls /boot</CODE></DIV>
<P></P>
<P><B>注意:</B>我们前面已经说过了,xen提供了两个内核,一个是虚拟平台用的,也就是文件名带有xen0字样的;另一个带有xenU字样的,这是用于引导和支持虚拟操作系统用的。</P>
<P>什么虚拟平台,比如我们想用Slackware 的Xen虚拟Fedora、Gentoo ....
。那么Slackware就是虚拟平台,而Fedora、Gentoo... ..
是被虚拟的操作系统。Slackware是一个真实安装在您的机器上的操作系统,它提供的是一个运行xen的环境。为了让Slackware能支持xen
,所以必须用于支持Xen的内核,也就是在/boot中有xen0字样的文件。</P>
<P>如果您安装了Xen,会在/boot中有两个文件vmlinuz-2.6.12.6-xen0和vmlinuz-2.6.12.6-xenU,</P>
<P><FONT id=4.3 size=3><B><BR>4.3 禁掉 TLS Libraries ;<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]#mv /lib/tls
/lib/tls.disabled</CODE></DIV>
<P></P>
<P><B>禁掉的理由,请查看:</B> <A href="http://www.linuxsir.org/main/doc/Xen3man/"
target=_blank>《Xen v3.0 用户手册》</A></P>
<P><FONT id=4.4 size=3><B><BR>4.4 引导XenLinux的GRUB内容;<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>title SlackXen<BR>kernel
/boot/xen-3.0.gz<BR>module /boot/vmlinuz-2.6-xen0 root=/dev/hda6 ro
console=tty0</CODE></DIV>
<P></P>
<P>如果有inintrd-2.xxxx-xen.img或initrd.gz之类的文件才能引导起来系统,还要加一行;要以/boot中的initrd相关的文件为准;</P>
<P>
<DIV class=codeblock><CODE>modules /boot/initrd.gz</CODE></DIV>
<P></P>
<P><B>有关GRUB的文档:</B><A
href="http://www.linuxsir.org/main/?q=node/129">《系统引导管理器GRUB,为初学者指南》</A></P>
<P><FONT color=red><B>注意:</B></FONT>与传统GRUB的定义有点不同,就是kernel
是用来定义Xen的,而Linux的内核及initrd映像是通过module 指令定义的;要仔细看好; </P>
<P><FONT id=5 size=4><B><BR>5、Xen的配置和管理工具;<BR></B></FONT></P>
<P><FONT id=5.1 size=3><B><BR>5.1 Xen的相关文件存放位置;<BR></B></FONT></P>
<P>xen安装后,文件放在什么地方了呢?主要放在以下几个目录;</P>
<P><FONT id=5.11 size=2><B><BR>5.11 内核及xen自身存放于 /boot<BR></B></FONT></P>
<P>安装有xen的操作系统下的/boot目录中,存放xen本身及支持xen的内核文件。比如文件名带有xen0和xenU相关的文件; </P>
<P><FONT id=5.12 size=2><B><BR>5.12 内核模块存放于
/lib/modules<BR></B></FONT></P>
<P>内核模块包括虚拟平台支持xen的内核xen0的模块,及支持虚拟操作系统所用的xenU的模块,一般的情况下是在
/lib/modules下有两个xen相关的目录存放。一个是文件夹名带有xen0字样的,另一个是xenU字样的;</P>
<P><FONT id=5.13 size=2><B><BR>5.13 xen的配置文件及守护程序的存放位置;<BR></B></FONT></P>
<P>一般的情况下,Xen的配置文件存放于/etc/xen目录。 比如
xend-config.sxp是用于配置网络的,不过我们不必更改,用其默认的就能完成我们的需要。xmexample1
xmexample2是两个示例性的配置文件。我们在配置引导被虚拟的操作系统时,这两个文件可供参考;</P>
<P>Xen的服务器xend和xendomains启动脚本,一般是位于/etc/init.d/目录中,也就是/etc/init.d/xend
;/etc/init.d/xend负责启动xend服务器,而/etc/init.d/xendomains负责第一个虚拟的系统及其它的Domains,也就是Domain
0 。</P>
<P><FONT id=5.14 size=2><B><BR>5.14 可执行命令存放于/usr/sbin<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]#ls
/usr/sbin/xen*<BR>/usr/sbin/xen-bugtool /usr/sbin/xenconsoled
/usr/sbin/xenmon.py /usr/sbin/xenstored<BR>/usr/sbin/xenbaked
/usr/sbin/xend /usr/sbin/xenperf /usr/sbin/xentop<BR>[root@localhost ~]#ls
/usr/sbin/xm</CODE></DIV>
<P></P>
<P><FONT id=5.2 size=3><B><BR>5.2 Xen服务器的启动;<BR></B></FONT></P>
<P>xend服务器的启动/停止/重启/状态查询,请用下面的命令;</P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# /etc/init.d/xend start
启动xend,如果 xend没有运行)<BR>[root@localhost ~]# /etc/init.d/xend stop
停止xend,如果xend正在运行)<BR>[root@localhost ~]# /etc/init.d/xend restart 重启正在运行的
xend,如果xend没有运行,则启动<BR>[root@localhost ~]# /etc/init.d/xend status
查看xend状态</CODE></DIV>
<P></P>
<P>启动xendomains
服务器的启动/停止/重启/状态查询,请用下面的命令;一般的情况下,xend服务器启动了,xendomains也会自动启动。所以这个只是掌握一下就行了;</P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# /etc/init.d/xend start
启动xend,如果 xend没有运行)<BR>[root@localhost ~]# /etc/init.d/xend stop
停止xend,如果xend正在运行)<BR>[root@localhost ~]# /etc/init.d/xend restart 重启正在运行的
xend,如果xend没有运行,则启动<BR>[root@localhost ~]# /etc/init.d/xend status
查看xend状态</CODE></DIV>
<P></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# /etc/init.d/xendomains
start<BR>[root@localhost ~]# /etc/init.d/xendomains
stop<BR>[root@localhost ~]# /etc/init.d/xendomains
restart<BR>[root@localhost ~]# /etc/init.d/xendomains status</CODE></DIV>
<P></P>
<P><FONT id=5.3 size=3><B><BR>5.3 Xen 管理工具xm;<BR></B></FONT></P>
<P>我们前面提到Xen的可执行命令中,我们可能看到了一些以xen开头的命令,您不妨尝试一个一个的尝试一下他们是做什么用的;比如xend是服务器的开启运行命令
... .... </P>
<P>其中xm命令,就是管理Xen的最基本的工具;您可以通过xm --help 来获得帮助;<BR><FONT id=5.31
size=2><B><BR>5.31 列出所有正在运行的虚拟操作系统;<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# /usr/sbin/xm list <BR>Name
ID Mem(MiB) VCPUs State Time(s)<BR>Domain-0 0 450 1 r----- 5377.0<BR>fc5 4
256 1 -b---- 0.1</CODE></DIV>
<P></P>
<P>列出所有正在运行的虚拟系统(也可以称为虚拟机);我们可以看到,一个名为Domain-0的系统正在运行。Domain-0就是Xen本身,也可以称为虚拟平台内存大小,而Domain-0负责提供其它虚拟操作系统的硬件环境,其它的系统都是基于Domain-0开始的,我们看到他的ID为0就应该知道它的权限是至高无尚的。所占用的内存是450M,不过这个是可以指定的。
虚拟的CPU个数是1个,运行状态处于r,也就是run,正在运行中;运行时间是5377秒;</P>
<P>还有一个虚拟系统fc5,他的id是4,占用内存256M,虚拟CPU个数是1个 ... ... </P>
<P><FONT id=5.32 size=2><B><BR>5.32 通过配置文件来引导被虚拟的操作系统;<BR></B></FONT></P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# /usr/sbin/xm create -c
虚拟操作系统的启动配置文件</CODE></DIV>
<P></P>
<P>比如我们要启动被虚拟的操作系统Fedora Core 5.0
,我们要写一个启动Fedora的配置文件,比如是fc5vm.cfg。然后就可以通过下面的命令来引导Fedora了;</P>
<P>
<DIV class=codeblock><CODE>[root@localhost ~]# /usr/sbin/xm create -c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -