Difference between revisions of "Xen ARM with Virtualization Extensions/Arndale"

From Xen
(Updated Xen path for new commit)
(Update to 3.10.1)
Line 10: Line 10:
 
First, we will build Linux for dom0 to have a device tree to provide to Xen.
 
First, we will build Linux for dom0 to have a device tree to provide to Xen.
   
You can get a tree from [http://xenbits.xen.org/gitweb/?p=people/julieng/linux-arm.git xenbits] which is built on top of a linux 3.9-rc4 (last tag is arndale-130513).
+
You can get a tree from [http://xenbits.xen.org/gitweb/?p=people/julieng/linux-arm.git xenbits] which is built on top of the linaro tree 13.07, ie linux 3.10.1, (last tag is arndale-130927).
   
  +
Use this [http://xenbits.xen.org/gitweb/?p=people/julieng/linux-arm.git;a=blob;f=arch/arm/configs/arndale_ubuntu_defconfig;hb=refs/heads/arndale config] file and add anything you need.
'''WARNING''': The previous tree based on linaro's tree (linux 3.7) won't work with the new version of Xen for the arndale board.
 
 
Use this [http://xenbits.xen.org/gitweb/?p=people/julieng/linux-arm.git;a=blob;f=arch/arm/configs/xen_dom0_arndale_defconfig;hb=refs/heads/arndale config] file and add anything you need.
 
   
 
git clone -b arndale git://xenbits.xen.org/people/julieng/linux-arm.git linux
 
git clone -b arndale git://xenbits.xen.org/people/julieng/linux-arm.git linux
 
cd linux
 
cd linux
make xen_dom0_arndale_defconfig
+
make arndale_ubuntu_defconfig
 
make zImage
 
make zImage
 
make dtbs
 
make dtbs
   
  +
Then, [[Xen_ARMv7_with_Virtualization_Extensions#Building_Xen_on_ARM|Build Xen on ARM]].
Use arch/arm/boot/dts/exynos5250-arndale.dtb as a device tree provided to Xen at compile time.
 
 
Then, [[Xen_ARMv7_with_Virtualization_Extensions#Building_Xen_on_ARM|Build Xen on ARM]], with CONFIG_DTB_FILE=$linux_tree/arch/arm/boot/dts/exynos5250-arndale.dtb passed to make,
 
where ''$linux_tree'' is the root directory of your linux git.
 
   
 
For the moment, xen doesn't build uImage for U-Boot. You can create the image with:
 
For the moment, xen doesn't build uImage for U-Boot. You can create the image with:
Line 33: Line 28:
   
 
== Building linux DomU ==
 
== Building linux DomU ==
  +
  +
{{Info|This section is in work in progress}}
   
 
To build linux for Domu, get the source tree from the [http://xenbits.xen.org/gitweb/?p=people/julieng/linux-arm.git repo], which contains ''arndale-domU-3.9'' branch (last tag is arndale-domU-3.9-130405).
 
To build linux for Domu, get the source tree from the [http://xenbits.xen.org/gitweb/?p=people/julieng/linux-arm.git repo], which contains ''arndale-domU-3.9'' branch (last tag is arndale-domU-3.9-130405).
Line 77: Line 74:
   
 
=== Booting directly on the SD card ===
 
=== Booting directly on the SD card ===
  +
{{Info|The instruction are not yet update to support the latest Xen }}
 
* Copy xen-uImage and the zImage the root directory of you SD card.
 
* Copy xen-uImage and the zImage the root directory of you SD card.
 
* At U-Boot prompt, on your board, you need to set the following variable:
 
* At U-Boot prompt, on your board, you need to set the following variable:

Revision as of 12:04, 27 September 2013

The Arndale board is now supported in Xen upstream.

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 Dom0

First, we 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 the linaro tree 13.07, ie linux 3.10.1, (last tag is arndale-130927).

Use this config file and add anything you need.

 git clone -b arndale git://xenbits.xen.org/people/julieng/linux-arm.git linux
 cd linux
 make arndale_ubuntu_defconfig
 make zImage
 make dtbs

Then, Build Xen on ARM.

For the moment, xen doesn't build uImage for U-Boot. You can create the image with:

 mkimage -A arm -T kernel -a 0x80200000 -e 0x80200000 -C none -d "$xen_src/xen/xen" xen-uImage 

where $xen_src is the root directory of your xen git. Note that before commit 47d1a51 (xen: arm: make zImage the default target which we install) it was necessary to use $xen_src/xen/xen.bin instead.

Building linux DomU

Icon Info.png This section is in work in progress


To build linux for Domu, get the source tree from the repo, which contains arndale-domU-3.9 branch (last tag is arndale-domU-3.9-130405).

 git clone -b arndale-domU-3.9 http://xenbits.xen.org/gitweb/?p=people/julieng/linux-arm.git linux-domU
 cd linux-domU
 make xen_domU_arndale_defconfig
 make zImage
 make dtbs

Booting Xen and Dom0

To boot Xen and Dom0, you can use:

  • PXE: it's easier for development but you need a computer which act as a server;
  • copy binary on the SD card: when you don't have network on your board.

Once you have chosen the boot method, you can start to follow steps in the next sections. When you have finished to configure your board, you can:

  • Save the U-Boot configuration with saveenv command. The next time you want to reboot your board, you won't have to reconfigure U-Boot.
  • Boot with boot command.

Booting via PXE

  • Setup the PXE Server
  • Copy xen-uImage and the zImage (rename in linux-zImage) in /tftpboot/
  • At U-Boot prompt, on your board, you need to set the following variable:
 setenv ipaddr 10.y.y.y
 setenv ipconfig 10.y.y.y
 setenv kernel_addr_r 0x60000000
 setenv serverip 10.x.x.x
 setenv tftp_path '10.x.x.x:'
 setenv usbethaddr 00:zz:zz:zz:zz:zz
 setenv ethaddr 00:zz:zz:zz:zz:zz
 setenv xen_addr_r 0x50000000
 setenv bootcmd_load_linux 'tftpboot $kernel_addr_r $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
  • 10.x.x.x the ip of a tftp server (or PXE server).
  • 00:zz:zz:zz:zz:zz the MAC address of the board. You can generate it with the following
    • shell command:
 bash -c 'printf "00:16:3e:%02x:%02x:%02x\n" $(( $RANDOM % 256 )) $(( $RANDOM % 256 )) $(( $RANDOM % 256 ))'

Booting directly on the SD card

Icon Info.png The instruction are not yet update to support the latest Xen
  • Copy xen-uImage and the zImage the root directory of you SD card.
  • At U-Boot prompt, on your board, you need to set the following variable:
 setenv kernel_addr_r 0x60000000
 setenv xen_addr_r 0x50000000
 setenv bootcmd_load_linux_mmc 'ext2load mmc 1:0 $kernel_addr_r /zImage'
 setenv boot_xen_mmc 'run bootcmd_load_linux_mmc; ext2load mmc 1:0 $xen_addr_r /xen-uImage; bootm $xen_addr_r -'
 setenv bootcmd 'run boot_xen_mmc'

We assume the SD card has only 1 partition with ext2 filesystem.

  • execute the boot command with the following command:
 boot

Resources