关于Xen on ARM的笔记和文档

最新的 Xen 4.3.0 发布时,已经支持ARM平台的虚拟化了,前阵子刚好有机会还用ARM Cortex A15板子(使用的是代号为Arndale的板子)测试了一下。很多细节的编译和配置信息,就不详述了,可以参考本文后面的“参考资料”;关于Xen on ARM的功能和性能,也暂不做过多评述(也不方便乱说)。这里只是简单记录一些笔记和参考资料的来源。

首先需要安装一些软件包,命令如下:
apt-get install python-dev gettext uuid-dev libncurses5-dev pkg-config libglib2.0-dev libyajl-dev libaio-dev libpixman-1-dev pkg-config

在x86-64平台的Ubuntu下进行交叉编译,命令如下(可能不是很完整,详见文末的“参考资料”):

Xen和Dom0内核启动选项,在arch/arm/boot/dts/exynos5250-arndale.dts 修改(如:dom0_mem=256M),然后需要重新生成Xen的UImage;DomU启动的内核选项可以在:arch/arm/boot/dts/xenvm-4.2.dts 中修改,然后重做DomU kernel。

在编译Xen中的tools时,可能遇到一些问题,比如:(Xen源代码中自带的libaio代码不包含对ARM的支持)
When building the tools, I found that libaio does not build for ARM since it was missing tools/libaio/src/syscall-arm.h
解决方法是:自己下载最新的libaio源码,替换到xen.git/tools/中去。
libaio upgrade: http://ftp.de.debian.org/debian/pool/main/liba/libaio/libaio_0.3.109.orig.tar.gz

Das U-Boot (Universal Bootloader) is an open source, primary boot loader used in embedded devices.
在使用我自己编译的系统启动Xen时,开始根据Xen官方wiki上的指导是有用“ext2load”这样的命令,而我的系统是使用ext4文件系统。开始时,一直以为需要自己重新编译U-Boot才能识别我的文件系统,因为找不到“ext4load”命令。后来我重新编译了Uboot并且把ext4的支持配置进去了,依然没看到ext4load这样的命令。后来才发现,我错了,原来那个U-boot就是支持ext4的。
ext2ls这样的以ext2开头的文件系统操作命令也支持ext4的(如果你的Uboot编译时支持配置了ext4的支持),尽管它不是以ext4作为命令开头。

直接中SD卡启动Xen/Dom0的U-Boot命令如下:

Dom0中可能需要挂载DomU的磁盘镜像,在使用kpartx时可能遇到如下错误:
root@linaro-server:/home/test# kpartx A15-4GB.img
/proc/misc: No entry for device-mapper found
Is device-mapper driver missing from kernel?
Failure to communicate with kernel device-mapper driver.
loop0p1 : 0 5859375 /dev/loop0 10240
loop0p2 : 0 15228 /dev/loop0 5878531
ioctl: LOOP_CLR_FD: Device or resource busy
这时,需要在Dom0内核中配置DM(Device Mapper)相关的东西。

启动DomU的配置文件示例如下:

目前,A15硬件中有对CPU虚拟化的支持(类似于x86上的VMX),有对内存虚拟化的支持(类似于x86上的EPT)。
Xen on ARM 目前对guest的设计只支持一种类型的Guest,它就是PVH,在Xen on ARM中不需要任何QEMU的参与(当然不需要像在x86上那样编译qemu-xen了)。PVH guest在ARM架构上的实现,是让I/O全部都走PV的方式,而MMU都是ARM硬件中的nested paging(不需要也没有实现shadow page table那套复杂的东东)。

参考资料:
关于Arndale板子硬件相关信息:http://www.arndaleboard.org/wiki/index.php/Main_Page
Linaro上的资源下载:http://www.linaro.org/downloads/1307
运行在Arndale上的Ubuntu镜像:http://releases.linaro.org/13.07/ubuntu/arndale/
编译和烧录uimage和DTB:https://wiki.linaro.org/Boards/Arndale/Setup/EnterpriseUbuntuServer#Build.2C_burn_uImage_and_dtb
编译Xen on ARM: http://wiki.xen.org/wiki/Xen_ARMv7_with_Virtualization_Extensions#Building_Xen_on_ARM
http://wiki.xen.org/wiki/Xen_ARMv7_with_Virtualization_Extensions/Arndale
Xen on ARM的设计与实现:http://www.slideshare.net/xen_com_mgr/linaro-connect-xen-on-arm-update
PVH、Xen on ARM的视频演讲:http://blog.xen.org/index.php/2012/09/21/xensummit-sessions-new-pvh-virtualisation-mode-for-arm-cortex-a15arm-servers-and-x86/

master

Stay hungry, stay foolish.

One Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注