在ubuntu 14.04上安装xen 4.6.3

1. 前言

安装xen的前提是把服务器CPU的虚拟化功能打开。由于实验需要用到SRIOV,因此这里一并把SRIOV打开了。这些操作都需要进到服务器的BIOS中进行设置。以Dell PowerEdge R730服务器为例:

  • 重启服务器
  • 当显示F2、F10等操作的提示时,按F2进入系统设置程序。
  • 转至Processor Settings > Virtualization Technology,并将其设置为enable
  • 转至Settings > Integrated Devices 并将"SRIOV Global Enable"设置更改为enable。
  • 按esc返回上层菜单,如果有提示保存,单击yes保存。
  • 重新启动服务器
    更详细的内容可以参考delll官方的文章:在Dell PowerEdge服务器上启用SRIOV技术

xen安装之后会生成一个重新编译的内核模块,在服务器启动的时候选择这个内核,就可以使用xen了

按理说xen可以直接通过apt-get去安装的,但是我当时使用的时候出错了,所以这里通过编译源码来安装。

以linux 3.16.49为例,说一下怎么通过编译xen的源码来安装xen。
操作系统:ubuntu 14.04,原内核为linux 3.13.11,xen的版本是4.6.3,编译安装3.16.49来支持xen的运行。

根据操作经验来看,最开始的时候应该检查启动模式设置为BIOS,而不是UEFI。因为xen对UEFI的支持并不够友好,每次重新编译xen的话都需要对UEFI相关的设置进行修改。强烈推荐使用BIOS。如果系统最开始不是用BIOS安装的,应该需要重装系统。在Dell Poweredge R730中,应该是在Boot settings 中先设置BIOS启动,然后重启再次进入这个界面选择U盘作为第一启动项,完成后续的系统安装。关于在Dell服务器重装ubuntu的,可以参考Dell PowerEdge R730重装ubnutu14.04系统(BIOS启动)

2. 安装需要的软件包

安装编译xen所需要的编译器、工具、软件等。

sudo apt-get install gcc make binutils zlib1g-dev python-dev
sudo apt-get install libncurses5-dev libcurl4-openssl-dev libx11-dev
sudo apt-get install uuid-dev libyajl-dev libaio-dev libglib2.0-dev libpixman-1-dev
sudo apt-get install pkg-config bridge-utils iproute udev bison flex gettext
sudo apt-get install bin86 bcc iasl ocaml-nox ocaml-findlib cmake markdown figlet git libc6-dev-i386
sudo apt-get install texinfo texlive-latex-base texlive-latex-recommended texlive-fonts-extra
sudo apt-get install texlive-fonts-recommended pciutils-dev mercurial

3. 安装xen

xen的官网下载xen 4.6.3源码包并编译安装:

tar zxvf xen-4.6.3.tar.gz   
cd xen-4.6.3  
./configure --libdir=/usr/lib 
make -j4 dist  
make install

关于./configure如果不加路径Xen 相关的软件库是默认安装到 /usr/local/lib 目录,Ubuntu系统可能找不到,当然也可以在安装完成后在 /etc/ld.so.conf 文件中添加库的搜索路径或者是链接到/usr/lib路径。

3.1 安装dom0内核

这一步就是安装一个支持xen的内核,在安装Xen之前或者之后进行都可以。这里选择重新安装配置一个新的内核来支持xen。

3.1.1 配置内核选项

下载linux内核源代码(建议3.0以上),配置dom0内核、编译、安装。

tar -zxvf linux-3.16.49.tar.gz
cd linux-3.16.49

配置内核,将当前系统的配置文件拷贝一份过来。

sudo cp /boot/config-3.13.11 .config
sudo make menuconfig

上述命令会进入图形界面为内核进行配置,添加针对xen的支持。

进入 Processor type and features —>[*] Linux guest support,选择以下选项:

在这里插入图片描述

进入Device Drivers —> Block devices —> <*> Xen virtual block device support
<*> Xen block-device backend driver

Xen block-device backend driver 有的应该是M

进入Device Drivers —>Xen driver support 把下面的都选上(应该都是默认有的,包括*和m)

Device Drivers —> Network device support —> <*> Xen network device frontend driver
<*> Xen backend network device

Xen backend network device有的应该是M

如果在原有的内核上检查上述几项,发现除了debug之类的都已经配置过的话,也不需要再重新编译新的内核,原有的内核也是可以继续用的,可以直接跳到3.1.3继续处理

3.1.2 编译安装内核
sudo make -j16
sudo make modules
sudo make modules_install
sudo make install

更新grub:

sudo update-grub
3.1.3 配置启动项与xen

找到带有xen内核的启动项,修改/etc/default/grub中的默认启动项,并配置GRUB_CMDLINE_XEN_DEFAULT以对xen的dom0使用的内核和内存进行限制。

GRUB_DEFAULT=2 #选择xen作为启动项
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="intel_iommu=on" #开启IOMMU以支持SRIOV
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=16000M,max:16000M dom0_max_vcpus=16" #设置Dom0的内存、CPU等

或者在/boot/grub/grub.cfg中修改linux /boot/vmlinuz-3.16.49initrd /boot/initrd.img-3.16.49

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-ca6dd64d-6853-4cd3-85a8-88dfe761b1ce' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  ca6dd64d-6853-4cd3-85a8-88dfe761b1ce
        else
          search --no-floppy --fs-uuid --set=root ca6dd64d-6853-4cd3-85a8-88dfe761b1ce
        fi
        linux   /boot/vmlinuz-3.16.49 root=UUID=ca6dd64d-6853-4cd3-85a8-88dfe761b1ce ro   crashkernel=384M-:128M
        initrd  /boot/initrd.img-3.16.49
}

3.1.4 完成安装

重启服务器,设置为自动加载Xen服务:

sudo update-rc.d xencommons defaults 19 18
sudo update-rc.d xendomains defaults 21 20
sudo update-rc.d xen-watchdog defaults 22 23 
3.2 启动xen之后的问题

此时如果直接使用xen会有一点问题,如

(1)xl命令报错

ubuntu@147:~$ sudo xl list
xc: error: Could not obtain handle on privileged command interface (2 = No such file or directory): Internal error
libxl: error: libxl.c:116:libxl_ctx_alloc: cannot open libxc handle: No such file or directory

是因为没有挂载 xenfs 的缘故,挂载一下就可以了:

sudo modprobe xenfs
sudo mount -t xenfs xenfs /proc/xen

ls /proc/xen/
capabilities  privcmd  xenbus  xsd_kva  xsd_port

(2)xl list一直卡住
在这里插入图片描述

需要启动 xencommons

sudo /etc/init.d/xencommons start
Starting C xenstored...
Setting domain 0 name and domid...
Starting xenconsoled...
Starting QEMU as disk backend for dom0

在这里插入图片描述

4. 卸载xen

卸载xen应该只需要在源文件夹里面运行make uninstall就可以了。

5. 参考链接

[1] https://blog.csdn.net/clarkchenhot/article/details/50779265

[2] https://blog.csdn.net/yzy1103203312/article/details/78548143?spm=1001.2014.3001.5501

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值