Xen ARM with Virtualization Extensions/Arndale

From Xen
Revision as of 16:40, 26 March 2013 by Julieng (talk | contribs) (Add instruction to boot Xen via PXE)

The work for Xen on the Arndale Development board is on his way. So don't expect to have a usable dom0 yet.

Preparing the board

The bootloader provided with the Arndale does not let Xen boot in hypervisor mode, so we will use the u-boot provided by Linaro.

Follow the step on the Linaro wiki, to build and install u-boot.

Building Xen and Linux

First, will build Linux for dom0, to have a device tree to provide to Xen.

You can get a tree from xenbits which is built on top of Linaro's tree [1].

Use this config file and add anything you need.

 git clone git://xenbits.xen.org/people/aperard/linux-arndale.git linux
 cd linux
 wget -O .config 'http://xenbits.xen.org/gitweb/?p=people/aperard/linux-arndale.git;a=blob_plain;f=.config;hb=refs/heads/config'
 make uImage
 make dtbs

Use arch/arm/boot/exynos5250-arndale.dtb as a device tree provided to Xen at compile time.

To Build, get the source tree from the repo, which contain branches (last one is exynos5250-2013-03-22) with patches to get serial and other device working on the board.

 git clone --branch exynos5250-2013-03-22 git://xenbits.xen.org/people/aperard/xen-arm.git

Then, Build Xen on ARM, with CONFIG_DTB_FILE=$linux_tree/arch/arm/boot/exynos5250-arndale.dtb passed to make.

Booting Xen and dom0

Boot via PXE

 setenv ipaddr 10.y.y.y
 setenv ipconfig 10.y.y.y
 setenv kernel_addr_r 0x40007000
 setenv serverip 10.x.x.x
 setenv tftp_path '10.x.x.x:'
 setenv usbethaddr 00:40:5c:26:0a:5b
 setenv ethaddr 00:40:5c:26:0a:5b
 setenv xen_addr_r 0x50000000
 setenv bootcmd_load_linux 'tftpboot 0x40007000 $tftp_path/linux-zImage'
 setenv boot_xen 'run bootcmd_load_linux; tftpboot $xen_addr_r $tftp_path/xen-uImage; bootm $xen_addr_r -'
 setenv bootcmd 'run boot_xen'

with 10.y.y.y the ip addr of the board and 10.x.x.x the ip of a tftp server (or PXE server).

  • execute the boot command with the following command:
 run bootcmd