Fedora25下源码安装Xen4.8

小论文的实验需要去修改xen的源代码。因此,需要搭建xen的环境,由于需要修改源代码,因此在构建环境的时候必须从源码安装开始。电脑很早之前装了个Fedora21,平时都是师兄在用,发现系统已经被更新成了Fedora25,参考网上的链接,今天总算安装成功了。其实,安装过程中很多步骤以及命令我都是一知半解。下面,主要介绍安装过程,而不涉及每一步是什么意思。

主要参考链接:
Fedora20上Xen的安装与部署
在CentOS7.0上源码安装Xen4.5

准备工作
更新系统,并且安装编译Xen所需要的一些工具以及依赖等。
我也不清楚,他们是怎么知道需要这些工具以及依赖包的,如果按照README一个一个搜索的话特别麻烦。

# 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

关闭SELinux
修改/etc/selinux/config文件,将SELINUX改为disabled,如下第7行。更改完以后,重启电脑。

  # 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=enforcing
  SELINUX=disabled
  # SELINUXTYPE= can take one of these three values:
  #     targeted - Targeted processes are protected,
  #     minimum - Modification of targeted policy. Only selected processes are
  #     mls - Multi Level Security protection.
  SELINUXTYPE=targeted 

下载、安装Xen
下载地址:Xen源码下载链接
我下载的是目前最新的版本“Supported Xen Project 4.8 Series ”,网上搜索了解压命令,解压后进入目录。然后安装xen

#make clean
#./configure
#make dist
#make install

安装Domain0内核
Domain0内核的版本最好与当前正在使用的Linux的内核版本保持一致。如下所示,我当前的内核版本是4.9.10

#uname -a
Linux localhost.localdomain 4.9.10-200.fc25.x86_64 #1 SMP Wed Feb 15 23:28:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

去内核的官网下载对应版本的内核,进行配置,编译,安装。

#wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.10.tar.xz
#tar xf linux-4.9.10.tar.xz
#cd linux-4.9.10
#make menuconfig

make menuconfig命令执行后,会出来内核配置的界面。但是,我不太清楚,需要配置什么。我看了一下虚拟化支持那里差不多都选上了就按照默认设置退出了。这时会在对应的目录下自动生成一个.config文件。没有自动生成说明,没弄好,我记得就是进去,然后Exit就会提示是否生成.config文件。接着,修改config文件,将其中的几个配置保存如下。(找到对应的位置进行修改)

CONFIG_X86_IO_APIC=y
CONFIG_ACPI=y
CONFIG_ACPI_PROCFS=y (optional)
CONFIG_XEN_DOM0=y
CONFIG_PCI_XEN=y
CONFIG_XEN_DEV_EVTCHN=y
CONFIG_XENFS=y
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_GNTDEV=y
CONFIG_XEN_BACKEND=y
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_BALLOON=y
CONFIG_XEN_SCRUB_PAGES=y

接着,就可以编译,安装内核。我第一次出错了,第二次成功了。第一次应该是配置文件没弄好。

#make
#make modules
#make modules_install
#make install

配置Grub

# grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2
Windows 10 (loader) (on /dev/sda1)
Fedora (4.9.10-200.fc25.x86_64) 25 (Workstation Edition)
Fedora, with Xen hypervisor

#grub2-set-default 'Fedora, with Xen hypervisor' 
# grub2-editenv list
saved_entry=Fedora, with Xen hypervisor

修改错误
重启以后尝试命令xl info发现有错。
参考在CentOS7.0上源码安装Xen4.5可能出现的错误和解决办法
进入/usr/lib/目录将/usr/local/lib/目录下所有的绿色文件做了链接,链接到/usr/lib/目录下。最后别忘了执行ldconfig。

[root@localhost lib]# cd /usr/lib/
[root@localhost lib]# ln -s /usr/local/lib/libxlutil.so.4.8.0 libxlutil.so.4.8
[root@localhost lib]# ln -s /usr/local/lib/libxlutil.so.4.8.0 libxlutil.so
[root@localhost lib]# ln -s /usr/local/lib/libxenlight.so.4.8.0 libxenlight.so.4.8
[root@localhost lib]# ln -s /usr/local/lib/libxenlight.so.4.8.0 libxenlight.so
[root@localhost lib]# ln -s /usr/local/lib/libxenctrl.so.4.8.0 libxenctrl.so.4.8
[root@localhost lib]# ln -s /usr/local/lib/libxenctrl.so.4.8.0 libxenctrl.so
[root@localhost lib]# ln -s /usr/local/lib/libxenguest.so.4.8.0 libxenguest.so.4.8.0 
[root@localhost lib]# ln -s /usr/local/lib/libxenguest.so.4.8.0 libxenguest.so.4.8
[root@localhost lib]# ln -s /usr/local/lib/libxenguest.so.4.8.0 libxenguest.so
[root@localhost lib]# ln -s /usr/local/lib/libxenstat.so.0.0 libxenstat.so.0
[root@localhost lib]# ln -s /usr/local/lib/libxenstat.so.0.0 libxenstat.so
[root@localhost lib]# ln -s /usr/local/lib/libxenstore.so.3.0.3 libxenstore.so.3.0
[root@localhost lib]# ln -s /usr/local/lib/libxenstore.so.3.0.3 libxenstore.so
[root@localhost lib]# ln -s /usr/local/lib/libxenvchan.so.4.8.0 libxenvchan.so.4.8
[root@localhost lib]# ln -s /usr/local/lib/libxenvchan.so.4.8.0 libxenvchan.so
[root@localhost lib]# ln -s /usr/local/lib/libblktapctl.so.1.0.0 libblktapctl.so.1.0
[root@localhost lib]# ln -s /usr/local/lib/libblktapctl.so.1.0.0 libblktapctl.so
[root@localhost lib]# ln -s /usr/local/lib/libfsimage.so.1.0.0 libfsimage.so.1.0
[root@localhost lib]# ln -s /usr/local/lib/libfsimage.so.1.0.0 libfsimage.so
[root@localhost lib]# ln -s /usr/local/lib/libvhd.so.1.0.0 libvhd.so.1.0
[root@localhost lib]# ln -s /usr/local/lib/libvhd.so.1.0.0 libvhd.so
[root@localhost lib]# ln -s /usr/local/lib/libxencall.so.1.0 libxencall.so.1.0
[root@localhost lib]# ln -s /usr/local/lib/libxencall.so.1.0 libxencall.so
[root@localhost lib]# ln -s /usr/local/lib/libxenevtchn.so.1.0 libxenevtchn.so.1.0 
[root@localhost lib]# ln -s /usr/local/lib/libxenevtchn.so.1.0 libxenevtchn.so
[root@localhost lib]# ln -s /usr/local/lib/libxenforeignmemory.so.1.0 libxenforeignmemory.so.1.0 
[root@localhost lib]# ln -s /usr/local/lib/libxenforeignmemory.so.1.0 libxenforeignmemory.so
[root@localhost lib]# ln -s /usr/local/lib/libxengnttab.so.1.1 libxengnttab.so.1
[root@localhost lib]# ln -s /usr/local/lib/libxengnttab.so.1.1 libxengnttab.so
[root@localhost lib]# ln -s /usr/local/lib/libxentoollog.so.1.0 libxentoollog.so.1
[root@localhost lib]# ln -s /usr/local/lib/libxentoollog.so.1.0 libxentoollog.so

[root@localhost lib]# ldconfig

再次运行xl info成功,如下:

[root@localhost lib]# xl info
host                   : localhost.localdomain
release                : 4.9.10-200.fc25.x86_64
version                : #1 SMP Wed Feb 15 23:28:59 UTC 2017
machine                : x86_64
nr_cpus                : 4
max_cpu_id             : 3
nr_nodes               : 1
cores_per_socket       : 4
threads_per_core       : 1
cpu_mhz                : 3192
hw_caps                : b7ebfbff:77bae3ff:28100800:00000001:00000001:00000281:00000000:00000100
virt_caps              : hvm hvm_directio
total_memory           : 8122
free_memory            : 128
sharing_freed_memory   : 0
sharing_used_memory    : 0
outstanding_claims     : 0
free_cpus              : 0
xen_major              : 4
xen_minor              : 8
xen_extra              : .0
xen_version            : 4.8.0
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64 
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          : 
xen_commandline        : placeholder
cc_compiler            : gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
cc_compile_by          : bearox
cc_compile_domain      : localdomain
cc_compile_date        : Wed Feb 22 10:07:48 CST 2017
build_id               : 308d8cce77adca4d502c71a2dc66202a0b6cff9e
xend_config_format     : 4

最后,启动xencommons,旧版本的xend已经被xencommons取代了。

root@localhost lib]# /etc/init.d/xencommons start
Starting /usr/local/sbin/oxenstored...Setting domain 0 name, domid and JSON config...
Done setting up Dom0
Starting xenconsoled...
Starting QEMU as disk backend for dom0
[root@localhost lib]# xl list
Name                                        ID   Mem VCPUs  State   Time(s)
Domain-0                                     0  7881     4     r-----     966.2

Xen 从 4.1 版本开始引入了新版工具集 xl/libxl,并在后续的版本中逐步替代旧的 xm/xend,在 4.5 版本中已经完全删除了 xm/xend.

你可能感兴趣的:(Linux学习心得)