# kylin-xen **Repository Path**: yuncomputing/kylin-xen ## Basic Information - **Project Name**: kylin-xen - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-06-28 - **Last Updated**: 2023-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 1 概述 Xen 是一个开源的虚拟化平台,被广泛应用于构建和管理虚拟化环境。它提供了强大的虚拟化技术,使多个虚拟机能够在一台物理服务器上并行运行,从而充分利用硬件资源、提高系统的利用率和灵活性。它是一种类型-1(bare-metal)虚拟化平台,这意味着 Xen 直接运行在物理硬件上,而不需要操作系统作为中间层。这种架构使 Xen 具有较低的虚拟化开销,更接近于本机性能,并提供了卓越的性能和可靠性。 以下是一些关键特点和功能: 1、虚拟机管理:Xen 允许用户在一台物理服务器上同时运行多个虚拟机,每个虚拟机都具有独立的操作系统、应用程序和资源。管理员可以方便地创建、启动、停止、删除和监视虚拟机,以满足不同的应用需求。 2、资源隔离:Xen 提供了强大的资源隔离机制,确保虚拟机之间的互不干扰。每个虚拟机都拥有独立的计算资源(如 CPU 和内存)、网络资源和存储资源,从而提供高度的安全性和隔离性。 3、虚拟设备支持:Xen 支持虚拟化各种设备,如虚拟磁盘、虚拟网络接口、虚拟图形设备等。这些虚拟设备提供了与物理设备类似的功能,并且可以方便地被虚拟机使用。 4、迁移和高可用性:Xen 具备虚拟机迁移和高可用性功能。虚拟机迁移允许管理员在不中断服务的情况下将虚拟机从一台物理服务器迁移到另一台。高可用性功能保证在物理服务器故障时,虚拟机能够自动迁移到其他可用的服务器上,实现系统的持续可用性。 5、生态系统支持:Xen 拥有一个活跃的社区和广泛的用户基础。它与多个操作系统(如 Linux、Windows)和虚拟机管理工具(如 Xen Orchestra、OpenStack)紧密集成,提供了丰富的工具和资源来简化管理和部署虚拟化环境。 # 2 系统构建 ## 2.1 软硬件依赖 Xen的编译运行均在飞腾E2000Q上,Xen的版本为4.17.0,测试内核版本为4.19,根文件系统为Ubuntu 20.04。编译Xen需要安装如下软件包: # apt install python3-dev acpica-tools uuid-dev libncurses5-dev libpixman-1-dev \ libyajl-dev libfdt-dev flex bison device-tree-compiler bridge-utils ## 2.2 内核和设备树配置 运行Xen需要如下内核配置: CONFIG_XEN_DOM0=y CONFIG_XEN=y CONFIG_XEN_BLKDEV_FRONTEND=y CONFIG_XEN_NETDEV_FRONTEND=y CONFIG_XEN_NETDEV_BACKEND=y CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y CONFIG_HVC_XEN=y CONFIG_HVC_XEN_FRONTEND=y CONFIG_XEN_FBDEV_FRONTEND=y CONFIG_XEN_BALLOON=y CONFIG_XEN_SCRUB_PAGES_DEFAULT=y CONFIG_XEN_DEV_EVTCHN=y CONFIG_XEN_BACKEND=y CONFIG_XENFS=y CONFIG_XEN_COMPAT_XENFS=y CONFIG_XEN_SYS_HYPERVISOR=y CONFIG_XEN_XENBUS_FRONTEND=y CONFIG_XEN_GNTDEV=y CONFIG_XEN_GRANT_DEV_ALLOC=y CONFIG_SWIOTLB_XEN=y CONFIG_XEN_PRIVCMD=y CONFIG_XEN_EFI=y CONFIG_XEN_AUTO_XLATE=y 重新编译设备树,在内部预留空间: # dtc -I dtb -O dts e2000q.dtb > xen.dts # dtc -I dts -O dtb -S 0x8000 xen.dts > xen.dtb ## 2.3 编译Xen # cd ./src # ./configure --enable-xen --enable-tools 打开config/Tools.mk,找到CONFIG\_QEMU\_XEN配置,修改成如下结果: CONFIG_QEMU_XEN := n 编译安装实用工具: # make -j4 # make install # 3 运行 ## 3.1 启动Xen和Dom0 将编译好的内核、设备树和Xen镜像放到根文件系统中,在U-BOOT中依次执行如下命令启动Xen和dom0,/chosen/module@0下的reg字段指定了dom0 Linux内核的内存位置和大小,需要根据实际加载来调整(内核大小可适当大一些,这样不用每次重新修改该字段)。 ### 3.1.1 e2000q启动Xen和Dom0 ext4load ext4load scsi 0:3 0x90000000 boot/xen-e2000q.dtb; ext4load ext4load scsi 0:3 0x91000000 boot/Image; ext4load ext4load scsi 0:3 0x95000000 boot/xen fdt addr 0x90000000; fdt set /chosen \#address-cells <1>; fdt set /chosen \#size-cells <1>; fdt set /chosen xen,xen-bootargs "console=dtuart dtuart=/soc/uart@2800d000 hmp-unsafe=true cpus = ["0-1", "2-3"]"; fdt set /chosen xen,dom0-bootargs "console=ttyAMA1,115200 earlycon=pl011,0x2800d000 root=/dev/sda3 rw"; fdt mknod /chosen module@0; fdt set /chosen/module@0 compatible "xen,linux-zimage" "xen,multiboot-module"; fdt set /chosen/module@0 reg <0x91000000 0x3000000>; booti 0x95000000 -:- 0x90000000 ## 3.2 Dom0系统工具配置 Dom0启动后,需要挂载Xen相关的文件系统和启动守护进程,之后才能使用xl工具查看Xen信息,动态创建和关闭虚拟机等功能,如下所示: mount -t xenfs xenfs /proc/xen mount -t tmpfs xenstore /var/lib/xenstored mkdir -p /var/run/xen xenstored --pid-file /var/run/xen/xenstored.pid xenconsoled -i --log=none --log-dir=/var/log/xen/console & xenstore-write domid 0 ## 3.3 运行Linux domu 创建配置文件domu.cfg,内容如下: name="domu" memory=512 kernel="Image" ramdisk="initrd.ext2" extra="root=/dev/ram rdinit=/linuxrc console=ttyAMA0 ramdisk_size=0x1000000" 运行Linux domu # xl create domu.cfg # xl destroy domu