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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章