@dyk
2016-09-10T13:46:38.000000Z
字数 4623
阅读 423
Linux
RPM:
https://linux.cn/article-5857-1.html
.config 文件为了能够挂载qcow2的文件需要将nbd模块编译到内核中。
#make menuconfig#make -jN (N表示计算机的核数)#make modules#make modules_install#cp -v arch/x86/boot/bzImage /boot/vmlinuz-YourKernelName#mkinitrd /boot/initrd-YourKernelName.img FullKernelName (ullKernelName表示/lib/modules/目录下想要包括的目录)#cp System.map /boot/System.map-YourKernelName
注意 YourKernelName的三个文件必须保持一致。
CentOS系列需要注意在修改grub的时候在root=XX 后面需要加上net.ifnames=0 boisdevname=0。使网络设备的名字设置为正常的eth0.
在VMware启动Xen内核的时候可能会出现黑屏的现象
需要将vmx文件中的vcpu.hotadd改为FALSE
第一步:安装Xen的依赖库
要按照README文件中的依赖库进行
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的最高版本。
#cd xen-4.X#./configure#make xen#make tools#make stubdom#make docs#make install-xen#make install-tools#make install-stubdom#make install-docs
第三步:制作Dom0内核
Ubuntu系统可能原本的内核就支持作为domain0
下载最新的 Linux 内核源代码(ftp服务器有下载),配置 dom0 内核、编译、安装,注意 dom0 内核需要选择下面一些内核选项解压,进入解压后的文件夹。
# make menuconfig // 进去之后可以查找Xen的选项并且全部勾选,或者采取下面的方法手动修改配置文件# vim .config...CONFIG_X86_IO_APIC=yCONFIG_ACPI=yCONFIG_ACPI_PROCFS=y (optional)CONFIG_XEN_DOM0=yCONFIG_PCI_XEN=yCONFIG_XEN_DEV_EVTCHN=yCONFIG_XENFS=yCONFIG_XEN_COMPAT_XENFS=yCONFIG_XEN_SYS_HYPERVISOR=yCONFIG_XEN_GNTDEV=yCONFIG_XEN_BACKEND=yCONFIG_XEN_NETDEV_BACKEND=mCONFIG_XEN_BLKDEV_BACKEND=mCONFIG_XEN_PCIDEV_BACKEND=mCONFIG_XEN_BALLOON=yCONFIG_XEN_SCRUB_PAGES=y# make# make modules# make modules_install# make install
第四步:修改grub
配置 grub2,加上带 Xen 的 Linux dom0
下面的部分需要根据具体情况进行。
# grub2-mkconfig -o /etc/grub2.cfg# vi /etc/grub2.cfg // 复制需要的menuentry到40_custom# vi /etc/grub.d/40_custom#!/bin/shexec 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_videoinsmod gzioinsmod part_msdosinsmod xfsset root='hd0,msdos1'if [ x$feature_platform_search_hint = xy ]; thensearch --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-61760367e0dcelsesearch --no-floppy --fs-uuid --set=root 6bc61a5c-12e3-4711-9532-61760367e0dcfimultiboot /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
配置完编译好了dom0内核以及xen就可以重启,选择Xen内核进入dom0.
可能出现的问题。
重启后,选择 CentOS Linux, with Linux 3.15.4 Xen 进入 Xen 系统,使用 xl info 命令发现有错,这是因为 Xen 相关的软件库被安装到了 /usr/local/lib 目录,系统找不到。所以做一些链接就可以了:
# 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/由于xen的默认lib的安装路径不在系统的ld path下面进入/etc/ld.so.conf.d新建配置文件并且将xen的lib路径加入。# ldconfig
# xl infoxc: error: Could not obtain handle on privileged command interface (2 = No such file or directory): Internal errorlibxl: error: libxl.c:99:libxl_ctx_alloc: cannot open libxc handle: No such file or directorycannot init xl context
需要挂载xenfs
# modprobe xenfs# mount -t xenfs xenfs /proc/xen# ls /proc/xen/capabilities privcmd xenbus xsd_kva xsd_port# xl infohost : localhost.localdomainrelease : 3.15.4version : #1 SMP Fri Jul 11 09:37:12 SAST 2014machine : x86_64nr_cpus : 4max_cpu_id : 3nr_nodes : 1cores_per_socket : 2threads_per_core : 2cpu_mhz : 2195hw_caps : bfebfbff:28100800:00000000:00003f00:15bae3bf:00000000:00000001:00000000virt_caps : hvmtotal_memory : 3959free_memory : 127sharing_freed_memory : 0sharing_used_memory : 0outstanding_claims : 0free_cpus : 0xen_major : 4xen_minor : 5xen_extra : -unstablexen_version : 4.5-unstablexen_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_64xen_scheduler : creditxen_pagesize : 4096platform_params : virt_start=0xffff800000000000xen_changeset : Wed Jul 9 13:30:54 2014 +0100 git:7579169-dirtyxen_commandline :cc_compiler : gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16)cc_compile_by : rootcc_compile_domain : localdomaincc_compile_date : Fri Jul 11 08:49:06 SAST 2014xend_config_format : 4
启动xencommons# /etc/init.d/xencommons startStarting C xenstored...Setting domain 0 name and domid...Starting xenconsoled...Starting QEMU as disk backend for dom0尝试xl命令# xl listName ID Mem VCPUs State Time(s)Domain-0 0 3779 4 r----- 105.5