Xen ARM with Virtualization Extensions/Ibox3399: Difference between revisions

From Xen
Jump to navigationJump to search
(Created page with "== Bootloader == For ARM64 Xen requires to be booted in EL2 mode by the bootloader. By default Rockchip RK3399 Ibox3399 development board comes with u-boot which is not very f...")
 
No edit summary
Line 58: Line 58:


== Dom0 Kernel/FDT ==
== Dom0 Kernel/FDT ==

git clone https://github.com/ihormatushchak/k9tripod.git
export PATH=$PATH:<path_to_aarch64_linux_android>/bin/
cd k9tripod/

make ARCH=arm64 x3399-xen-dom0_defconfig
make -j4 CROSS_COMPILE=aarch64-linux-android- ARCH=arm64

After build rename file "Image" (located at arch/arm64/boot/) to "dom0-Image" and collect it at this step.

Collect x3399-dom0-development-board.dtb file (located at arch/arm64/boot/dts/rockchip/) at this step.

== Dom0 rootfs ==

Let's use [https://buildroot.org/ Buildroot] to build rootfs for dom0.

git clone git://git.buildroot.net/buildroot
cd buildroot

At the moment version of buildroot was 3.0.0

git checkout c83f2c14f8fde96bbdc1ee351d62f3b2346d20ff -b 'xen-domains-rootfs'

Configure buildroot before build:

make menuconfig

Here is minimal configuration for dom0:

Target options --->
Target Architecture --->
(X) AArch64 (little endian)
Target Architecture Variant --->
(X) cortex-A72/A53 big.LITTLE
Toolchain --->
Kernel Headers --->
(X) Linux 4.4.x kernel headers
[*] Enable WCHAR support
System configuration --->
Init system --->
(X) systemV
/bin/sh --->
(X) bash
Target packages --->
System tools --->
[*] xen
[ ] Xen hypervisor (NEW)
[*] Xen tools
Filesystem images --->
[*] ext2/3/4 root filesystem
ext2/3/4 variant --->
(X) ext2 (rev1)
(300M) exact size
[ ] tar the root filesystem

Now we can build the rootfs:

make -j4

As a result we should get buildroot/output/images/rootfs.ext2 file here.

== Preparing SD card to boot ==

TBD
TBD

Revision as of 09:52, 9 August 2018

Bootloader

For ARM64 Xen requires to be booted in EL2 mode by the bootloader. By default Rockchip RK3399 Ibox3399 development board comes with u-boot which is not very friendly for booting Xen.

Please update the u-boot with provided by Rockchip rockchip-linux/u-boot github. Build instructions: rockchip-linux/u-boot github README.

Prepequairnments

u-boot-utils

Cross compilers used: gcc-linaro-7.2.1 for Xen and aarch64-linux-android-4.9 for kernel

Building Xen

Get Xen and switch to xen-4.10.1 tag:

 git clone git://xenbits.xen.org/xen.git
 cd xen
 git checkout RELEASE-4.10.1 -b 'xen-rk3399'

Enable earlyprintk configuration for rk3399 boards:

 diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
 index b66c19f..b1cf319 100644
 --- a/xen/arch/arm/Rules.mk
 +++ b/xen/arch/arm/Rules.mk
 @@ -38,6 +38,7 @@ EARLY_PRINTK_lager          := scif,0xe6e60000
  EARLY_PRINTK_midway         := pl011,0xfff36000
  EARLY_PRINTK_omap5432       := 8250,0x48020000,2
  EARLY_PRINTK_rcar3          := scif,0xe6e88000
 +EARLY_PRINTK_rk3399         := 8250,0xff1a0000,2
  EARLY_PRINTK_seattle        := pl011,0xe1010000
  EARLY_PRINTK_sun6i          := 8250,0x01c28000,2
  EARLY_PRINTK_sun7i          := 8250,0x01c28000,2

Configure Hypervisor:

 cd xen/xen
 export PATH=$PATH:<path_to_gcc-linaro>/bin/
 make menuconfig CROSS_COMPILE=aarch64-linux-gnu- XEN_TARGET_ARCH=arm64

Enable debugging option:

 Debugging Options  --->
   [*] Developer Checks

Build Hypervisor:

 cd ../
 make dist-xen CROSS_COMPILE=aarch64-linux-gnu- XEN_TARGET_ARCH=arm64 debug=y CONFIG_EARLY_PRINTK=rk3399

Make image suitable to be booted by u-boot:

 mkimage -A arm64 -T kernel -a 0x02000000 -e 0x02000000 -C none -d ./xen/xen xen4.10-uImage

Collect xen4.10-uImage file at this step.

Dom0 Kernel/FDT

 git clone https://github.com/ihormatushchak/k9tripod.git
 export PATH=$PATH:<path_to_aarch64_linux_android>/bin/
 cd k9tripod/
 make ARCH=arm64 x3399-xen-dom0_defconfig
 make -j4 CROSS_COMPILE=aarch64-linux-android- ARCH=arm64

After build rename file "Image" (located at arch/arm64/boot/) to "dom0-Image" and collect it at this step.

Collect x3399-dom0-development-board.dtb file (located at arch/arm64/boot/dts/rockchip/) at this step.

Dom0 rootfs

Let's use Buildroot to build rootfs for dom0.

 git clone git://git.buildroot.net/buildroot
 cd buildroot

At the moment version of buildroot was 3.0.0

 git checkout c83f2c14f8fde96bbdc1ee351d62f3b2346d20ff -b 'xen-domains-rootfs'

Configure buildroot before build:

 make menuconfig

Here is minimal configuration for dom0:

 Target options  --->
   Target Architecture --->
       (X) AArch64 (little endian)
   Target Architecture Variant --->
       (X) cortex-A72/A53 big.LITTLE
 
 Toolchain  --->
   Kernel Headers  --->
       (X) Linux 4.4.x kernel headers
   [*] Enable WCHAR support
 
 System configuration  --->
   Init system  --->
       (X) systemV
   /bin/sh  --->
       (X) bash
 
 Target packages  --->
   System tools  --->
       [*] xen
       [ ]   Xen hypervisor (NEW)
       [*]   Xen tools
 
 Filesystem images  --->
   [*] ext2/3/4 root filesystem
       ext2/3/4 variant  --->
           (X) ext2 (rev1)
   (300M) exact size
   [ ] tar the root filesystem

Now we can build the rootfs:

 make -j4

As a result we should get buildroot/output/images/rootfs.ext2 file here.

Preparing SD card to boot

TBD