CentOS 7源码安装 Xen 4.9

匿名 (未验证) 提交于 2019-12-03 00:22:01

安装前的配置和安装需要的软件包

CentOS7系统安装以后,首先查看有没有开启SELinux,如果开启了要关闭SELinux的功能:

[root@centos ~]# vi /etc/sysconfig/selinux        # This file controls the state of SELinux on the system.       # SELINUX= can take one of these three values:       #     enforcing - SELinux security policy is enforced.       #     permissive - SELinux prints warnings instead of enforcing.       #     disabled - No SELinux policy is loaded.       SELINUX=disabled       # SELINUXTYPE= can take one of these two values:       #     targeted - Targeted processes are protected,       #     mls - Multi Level Security protection.       SELINUXTYPE=targeted
也可以考虑配一个速度快的yumԴ

之后,更新系统,并且安装编译 Xen 所需要的编译器、工具、软件库等:

# yum update  # yum groupinstall "Development Tools" # yum install -y gcc gcc-c++ git patch texinfo  # yum install -y python-devel acpica-tools libuuid-devel ncurses-devel glib2 glib2-devel libaio-devel openssl-devel yajl-devel glibc-devel glibc-devel.i686 pixman-devel  # wget http://mirror.centos.org/centos/6/os/x86_64/Packages/dev86-0.16.17-15.1.el6.x86_64.rpm # rpm -ivh dev86-0.16.17-15.1.el6.x86_64.rpm

安装Xen

到Xen官网下载相应的源码包后编译、安装:
# tar zxvf xen-4.9.1.tar.gz      # cd xen-4.9.1   # ./configure --libdir=/usr/lib    # make -j4 dist     # make install

更新内核

CentOS 7使用的是Linux-3.10的内核,Xen 4.9无法启动这个内核,这里考虑更新为最新的长期支持版本:

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm # yum --enablerepo=elrepo-kernel install kernel-lt -y   

详情可以参考<CentOS 6升级Linux内核>

配置 Grub

在这之前安装的Xen和Linux内核是没有任何联系的,所以修改Grub使Linux内核以支持Xen的方式启动,其实就是添加一个含有Xen的启动项。

如果是Linux4.4的内核,直接更新Grub2即可:

# grub2-mkconfig -o /etc/grub2.cfg

如果是其他内核,可能还需要手动配置 grub2,加上带 Xen 的 Linux dom0 内核:

# grub2-mkconfig -o /etc/grub2.cfg # vi /etc/grub2.cfg  # vi /etc/grub.d/40_custom #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries.  Simply type the # menu entries you want to add after this comment.  Be careful not to change # the 'exec tail' line above. menuentry 'CentOS Linux, with Linux 3.15.4 Xen' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.15.4-advanced-aa64a6a3-518e-4a7c-9e88-2f3f33c8c700' {         load_video         insmod gzio         insmod part_msdos         insmod xfs         set root='hd0,msdos1'         if [ x$feature_platform_search_hint = xy ]; then           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  6bc61a5c-12e3-4711-9532-61760367e0dc         else           search --no-floppy --fs-uuid --set=root 6bc61a5c-12e3-4711-9532-61760367e0dc         fi         multiboot /xen.gz         module /vmlinuz-3.15.4 root=UUID=aa64a6a3-518e-4a7c-9e88-2f3f33c8c700 ro rd.lvm.lv=cl/root vconsole.font=latarcyrheb-sun16 crashkernel=auto  vconsole.keymap=us rd.lvm.lv=cl/swap rhgb quiet         module /initramfs-3.15.4.img }  # grub2-mkconfig -o /etc/grub2.cfg
上述操作是复制/etc/grub2.cfg中相应内核的引导配置,在 /etc/grub.d/40_custom 内加入自定Xen引导项目。

配置完Grub2后可以修改默认启动内核为Xen引导的内核:

# cat /boot/grub2/grub.cfg |grep menuentry if [ x"${feature_menuentry_id}" = xy ]; then   menuentry_id_option="--id"   menuentry_id_option="" export menuentry_id_option menuentry 'CentOS Linux (4.4.135-1.el7.elrepo.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.4.135-1.el7.elrepo.x86_64-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { menuentry 'CentOS Linux (3.10.0-862.3.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.3.2.el7.x86_64-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { menuentry 'CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-862.el7.x86_64-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { menuentry 'CentOS Linux (0-rescue-06f363a00b5c41c4920e89af9cbfcc21) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-06f363a00b5c41c4920e89af9cbfcc21-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { menuentry 'CentOS Linux, with Xen hypervisor' --class centos --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-simple-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { submenu 'Advanced options for CentOS Linux (with Xen hypervisor)' $menuentry_id_option 'gnulinux-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 	submenu 'Xen hypervisor, version 4.9.1' $menuentry_id_option 'xen-hypervisor-4.9.1-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 		menuentry 'CentOS Linux, with Xen 4.9.1 and Linux 4.4.135-1.el7.elrepo.x86_64' --class centos --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-4.4.135-1.el7.elrepo.x86_64-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 	submenu 'Xen hypervisor, version 4.9.1.config' $menuentry_id_option 'xen-hypervisor-4.9.1.config-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 		menuentry 'CentOS Linux, with Xen 4.9.1.config and Linux 4.4.135-1.el7.elrepo.x86_64' --class centos --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-4.4.135-1.el7.elrepo.x86_64-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 	submenu 'Xen hypervisor, version 4.9' $menuentry_id_option 'xen-hypervisor-4.9-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 		menuentry 'CentOS Linux, with Xen 4.9 and Linux 4.4.135-1.el7.elrepo.x86_64' --class centos --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-4.4.135-1.el7.elrepo.x86_64-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 	submenu 'Xen hypervisor, version 4' $menuentry_id_option 'xen-hypervisor-4-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 		menuentry 'CentOS Linux, with Xen 4 and Linux 4.4.135-1.el7.elrepo.x86_64' --class centos --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-4.4.135-1.el7.elrepo.x86_64-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 	submenu 'Xen hypervisor, version xen' $menuentry_id_option 'xen-hypervisor-xen-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' { 		menuentry 'CentOS Linux, with Xen xen and Linux 4.4.135-1.el7.elrepo.x86_64' --class centos --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-4.4.135-1.el7.elrepo.x86_64-advanced-263cd610-0e5b-4e48-a3b4-c9a751ecf5e8' {
# grub2-set-default 'CentOS Linux, with Xen hypervisor'

安装后的操作

# ldconfig

之后运行xl info可能还是会报错的:

# xl info   xc: error: Could not obtain handle on privileged command interface (2 = No such file or directory): Internal error   libxl: error: libxl.c:99:libxl_ctx_alloc: cannot open libxc handle: No such file or directory   cannot init xl context 
这是因为没有挂载 xenfs ,挂载一下就可以了:
# modprobe xenfs   # mount -t xenfs xenfs /proc/xen      # ls /proc/xen/   capabilities  privcmd  xenbus  xsd_kva  xsd_port 

还有,运行xl list无响应是因为xencommons服务未开启,开启一下:

# /etc/init.d/xencommons start  

将init.d下面的三个xen服务设成开机启动

# chkconfig xencommons on   # chkconfig xendomains on   # chkconfig xen-watchdog on  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!