[关闭]
@dyk 2016-09-10T13:46:38.000000Z 字数 4623 阅读 423

Linux 内核源码编译 CentOS7 以及 Xen的安装

Linux


RPM:
https://linux.cn/article-5857-1.html

源码编译内核并且命名新的内核

.config 文件为了能够挂载qcow2的文件需要将nbd模块编译到内核中。

  1. #make menuconfig
  2. #make -jN (N表示计算机的核数)
  3. #make modules
  4. #make modules_install
  5. #cp -v arch/x86/boot/bzImage /boot/vmlinuz-YourKernelName
  6. #mkinitrd /boot/initrd-YourKernelName.img FullKernelName (ullKernelName表示/lib/modules/目录下想要包括的目录)
  7. #cp System.map /boot/System.map-YourKernelName

注意 YourKernelName的三个文件必须保持一致。

CentOS系列需要注意在修改grub的时候在root=XX 后面需要加上net.ifnames=0 boisdevname=0。使网络设备的名字设置为正常的eth0.

在VMware启动Xen内核的时候可能会出现黑屏的现象
需要将vmx文件中的vcpu.hotadd改为FALSE


ubuntu下xen的安装。

第一步:安装Xen的依赖库

要按照README文件中的依赖库进行

  1. sudo apt-get install gcc g++ make patch libssl-dev bzip2 gettext zlib1g-dev python libncurses5-dev libjpeg62-dev libx11-dev libgcrypt11-dev pkg-config bridge-utils bcc bin86 libpci-dev libsdl-dev python-dev texinfo libc6-dev uuid-dev bison flex fakeroot build-essential crash kexec-tools makedumpfile libncurses5 libncurses5-dev iasl gawk libc6-dev-i386 libpixman-1-dev libaio-dev libyajl-dev git

第二步:下载并安装Xen的源码
http://www.xenproject.org/
注意下载支持XSM的最高版本。

  1. #cd xen-4.X
  2. #./configure
  3. #make xen
  4. #make tools
  5. #make stubdom
  6. #make docs
  7. #make install-xen
  8. #make install-tools
  9. #make install-stubdom
  10. #make install-docs

第三步:制作Dom0内核
Ubuntu系统可能原本的内核就支持作为domain0
下载最新的 Linux 内核源代码(ftp服务器有下载),配置 dom0 内核、编译、安装,注意 dom0 内核需要选择下面一些内核选项解压,进入解压后的文件夹。

  1. # make menuconfig // 进去之后可以查找Xen的选项并且全部勾选,或者采取下面的方法手动修改配置文件
  2. # vim .config
  3. ...
  4. CONFIG_X86_IO_APIC=y
  5. CONFIG_ACPI=y
  6. CONFIG_ACPI_PROCFS=y (optional)
  7. CONFIG_XEN_DOM0=y
  8. CONFIG_PCI_XEN=y
  9. CONFIG_XEN_DEV_EVTCHN=y
  10. CONFIG_XENFS=y
  11. CONFIG_XEN_COMPAT_XENFS=y
  12. CONFIG_XEN_SYS_HYPERVISOR=y
  13. CONFIG_XEN_GNTDEV=y
  14. CONFIG_XEN_BACKEND=y
  15. CONFIG_XEN_NETDEV_BACKEND=m
  16. CONFIG_XEN_BLKDEV_BACKEND=m
  17. CONFIG_XEN_PCIDEV_BACKEND=m
  18. CONFIG_XEN_BALLOON=y
  19. CONFIG_XEN_SCRUB_PAGES=y
  20. # make
  21. # make modules
  22. # make modules_install
  23. # make install

第四步:修改grub

配置 grub2,加上带 Xen 的 Linux dom0

下面的部分需要根据具体情况进行。

  1. # grub2-mkconfig -o /etc/grub2.cfg
  2. # vi /etc/grub2.cfg // 复制需要的menuentry到40_custom
  3. # vi /etc/grub.d/40_custom
  4. #!/bin/sh
  5. exec tail -n +3 $0
  6. # This file provides an easy way to add custom menu entries. Simply type the
  7. # menu entries you want to add after this comment. Be careful not to change
  8. # the 'exec tail' line above.
  9. 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' {
  10. load_video
  11. insmod gzio
  12. insmod part_msdos
  13. insmod xfs
  14. set root='hd0,msdos1'
  15. if [ x$feature_platform_search_hint = xy ]; then
  16. 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
  17. else
  18. search --no-floppy --fs-uuid --set=root 6bc61a5c-12e3-4711-9532-61760367e0dc
  19. fi
  20. multiboot /xen.gz // 需要修改
  21. 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 // 需要修改
  22. module /initramfs-3.15.4.img // 需要修改
  23. }
  24. # grub2-mkconfig -o /etc/grub2.cfg

配置完编译好了dom0内核以及xen就可以重启,选择Xen内核进入dom0.

可能出现的问题。

路径问题

重启后,选择 CentOS Linux, with Linux 3.15.4 Xen 进入 Xen 系统,使用 xl info 命令发现有错,这是因为 Xen 相关的软件库被安装到了 /usr/local/lib 目录,系统找不到。所以做一些链接就可以了:

  1. # xl info xl: error while loading shared libraries: libxlutil.so.4.3: cannot open shared object file: No such file or directory # cd /usr/lib/
  2. 由于xen的默认lib的安装路径不在系统的ld path下面
  3. 进入/etc/ld.so.conf.d
  4. 新建配置文件并且将xenlib路径加入。
  5. # ldconfig

xenfs原因

  1. # xl info
  2. xc: error: Could not obtain handle on privileged command interface (2 = No such file or directory): Internal error
  3. libxl: error: libxl.c:99:libxl_ctx_alloc: cannot open libxc handle: No such file or directory
  4. cannot init xl context

需要挂载xenfs

  1. # modprobe xenfs
  2. # mount -t xenfs xenfs /proc/xen
  3. # ls /proc/xen/
  4. capabilities privcmd xenbus xsd_kva xsd_port
  5. # xl info
  6. host : localhost.localdomain
  7. release : 3.15.4
  8. version : #1 SMP Fri Jul 11 09:37:12 SAST 2014
  9. machine : x86_64
  10. nr_cpus : 4
  11. max_cpu_id : 3
  12. nr_nodes : 1
  13. cores_per_socket : 2
  14. threads_per_core : 2
  15. cpu_mhz : 2195
  16. hw_caps : bfebfbff:28100800:00000000:00003f00:15bae3bf:00000000:00000001:00000000
  17. virt_caps : hvm
  18. total_memory : 3959
  19. free_memory : 127
  20. sharing_freed_memory : 0
  21. sharing_used_memory : 0
  22. outstanding_claims : 0
  23. free_cpus : 0
  24. xen_major : 4
  25. xen_minor : 5
  26. xen_extra : -unstable
  27. xen_version : 4.5-unstable
  28. 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
  29. xen_scheduler : credit
  30. xen_pagesize : 4096
  31. platform_params : virt_start=0xffff800000000000
  32. xen_changeset : Wed Jul 9 13:30:54 2014 +0100 git:7579169-dirty
  33. xen_commandline :
  34. cc_compiler : gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16)
  35. cc_compile_by : root
  36. cc_compile_domain : localdomain
  37. cc_compile_date : Fri Jul 11 08:49:06 SAST 2014
  38. xend_config_format : 4

验证安装

  1. 启动xencommons
  2. # /etc/init.d/xencommons start
  3. Starting C xenstored...
  4. Setting domain 0 name and domid...
  5. Starting xenconsoled...
  6. Starting QEMU as disk backend for dom0
  7. 尝试xl命令
  8. # xl list
  9. Name ID Mem VCPUs State Time(s)
  10. Domain-0 0 3779 4 r----- 105.5
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注