We're no longer updating This wiki!!

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:xu4_xen [2015/10/16 12:45]
brian.kim
en:xu4_xen [2016/05/03 17:34] (current)
brian.kim [Domain U Settings && Running]
Line 1: Line 1:
 ====== Virtualization using Xen on ODROID-XU3/​4 ====== ====== Virtualization using Xen on ODROID-XU3/​4 ======
-This page contains the step-by-step guide for virtualization using Xen on ODROID-XU3/​4. ​+This page contains the **step-by-step guide for virtualization** using Xen on ODROID-XU3/​4. ​
  
 **//HOST-PC Environments://​** **//HOST-PC Environments://​**
Line 13: Line 13:
 $ wget http://​odroid.in/​ubuntu_14.04lts/​ubuntu-14.04lts-server-odroid-xu3-20150725.img.xz $ wget http://​odroid.in/​ubuntu_14.04lts/​ubuntu-14.04lts-server-odroid-xu3-20150725.img.xz
 $ unxz ubuntu-14.04lts-server-odroid-xu3-20150725.img.xz $ unxz ubuntu-14.04lts-server-odroid-xu3-20150725.img.xz
-$ sudo dd if=ubuntu-14.04lts-server-odroid-xu3-20150725.img.xz of=/dev/sdc bs=1M conv=fsync+$ sudo dd if=ubuntu-14.04lts-server-odroid-xu3-20150725.img of=/dev/sdc bs=1M conv=fsync
 $ sync $ sync
 </​code>​ </​code>​
Line 38: Line 38:
 </​code>​ </​code>​
  
-<code - boot.ini+<WRAP left round important 100%
-ODROIDXU-UBOOT-CONFIG +Note: Please follow [[http://​odroid.com/​dokuwiki/​doku.php?id=en:​emmc_recovery_xu3|XU3/​XU4 eMMC Bootloader Recovery wiki page]] to burn the bootloader to eMMC.  
-# source by kenken> ​http://forum.odroid.com/viewtopic.php?f=98&t=6643#p64051 +</​WRAP>​ 
-setenv dtb_addr_r 0x42000000 +===== Xen Hypervisor ===== 
-setenv dtb_path ​/exynos5422-odroidxu3.dtb+Getting the xen soruce code: 
 +<​code>​ 
 +$ git clone https://github.com/​bkrepo/​xen.git -b odroid-xu4 
 +$ cd xen 
 +</​code>​
  
-setenv kernel_addr_r 0x60000000 +Build & Installation:​ 
-setenv kernel_path ​/zImage+<​code>​ 
 +$ make dist-xen CROSS_COMPILE=arm-none-eabi- XEN_TARGET_ARCH=arm32 debug=y CONFIG_EARLY_PRINTK=exynos5250 -j8 
 +$ sudo cp xen/xen /​media/​boot/​ 
 +$ sync 
 +</code>
  
-setenv xen_addr_r 0x50000000 +===== Domain 0 Linux kernel ===== 
-setenv xen_path ​/xen+Build & Installation:​ 
 +<​code>​ 
 +$ git clone https://​github.com/​bkrepo/​linux-dom0.git 
 +$ cd linux-dom0 
 +$ make odroidxu3_xen_defconfig ARCH=arm 
 +$ make ARCH=arm CROSS_COMPILE=arm-none-eabi- -j8 
 +$ sudo make modules_install ARCH=arm INSTALL_MOD_PATH=/​media/​rootfs/​ 
 +$ cp -f arch/​arm/​boot/​zImage arch/​arm/​boot/​dts/​exynos5422-odroidxu3.dtb /​media/​boot/​ 
 +$ sync 
 +</code>
  
-# use the A7s for dom0 and pin them to it +===== Domain 0 Settings ===== 
-setenv xen_bootargs sync_console console=dtuart dtuart=/​serial@12C20000 dom0_mem=800M dom0_max_vcpus=4 dom0_vcpus_pin+<WRAP left round tip 70%> 
 + ​**Note** 
 +  * This step must be done on **ODROID-XU3/​4** (id: //root//, password: //​odroid//​) 
 +</​WRAP>​
  
-# edid/​1280x720.bin +==== Xen tools installation==== 
-#setenv dom0_bootargs console=hvc0 earlyprintk debug clk_ignore_unused psci=enable root=/dev/mmcblk0p2 rootwait rw drm_kms_helper.edid_firmware=edid/1280x720.bin+Getting the xen source code: 
 +<​code>​ 
 +$ git clone https://github.com/bkrepo/xen.git -b odroid-xu4 
 +$ cd xen 
 +</​code>​
  
-# edid/​1920x1080.bin +Installation packages for xen tools build: 
-setenv dom0_bootargs console=hvc0 earlyprintk debug clk_ignore_unused psci=enable root=/dev/mmcblk0p2 rootwait rw+<​code>​ 
 +$ apt-get update 
 +$ apt-get build-dep xen 
 +$ apt-get install libpixman-1-dev 
 +</code>
  
-## Load the different components +Building xen tools: 
-setenv dev "mmc 0:1"+<​code>​ 
 +$ ./configure --disable-xen --disable-docs 
 +$ make dist-tools -j4 
 +$ make install-tools 
 +$ update-rc.d xencommons defaults 19 18 
 +$ update-rc.d xendomains defaults 21 20 
 +$ update-rc.d xen-watchdog defaults 22 23 
 +$ ldconfig 
 +</​code>​
  
-# Load Linux in memory +==== Network configuration ==== 
-fatload ​$dev $kernel_addr_r $kernel_path +DHCP bridge network configuration:​ 
-setenv kernel_size 0x$filesize+<​code>​ 
 +apt-get install bridge-utils 
 +vim /​etc/​network/​interfaces.d/​xenbr0 
 +</​code>​ 
 +<code - xenbr0>​ 
 +auto xenbr0 inet 
 +iface xenbr0 inet dhcp 
 +bridge_ports eth0 
 +</​code>​
  
-# Load Xen in memory +* //If you want more information about Xen networking, then refer to [[http://​wiki.xenproject.org/​wiki/​Network_Configuration_Examples_(Xen_4.1%2B)|this link. ]]//
-fatload $dev $xen_addr_r $xen_path+
  
-# Load the device tree in memory +===== Domain U Settings && Running ===== 
-fatload $dev $dtb_addr_r $dtb_path+**(On HOST-PC)**
  
-## Fixup the device tree +Domain ​kernel build preparation:​ 
-# Be sure U-boot is using our FDT +<​code>​ 
-fdt addr $dtb_addr_r+$ wget https://​www.kernel.org/​pub/​linux/​kernel/​v4.x/​linux-4.2.tar.xz 
 +tar Jxvf linux-4.2.tar.xz 
 +$ cd linux 
 +$ make exynos_defconfig ARCH=arm 
 +$ make menuconfig ARCH=arm 
 +</​code>​ 
 +  - Kernel Features -> Xen guest support on ARM 
 +  - Device Drivers -> Block devices -> Xen virtual block device support. 
 +  - Device Drivers -> Network device support -> Xen network device frontend 
 +  - Device Drivers -> Xen driver support -> Select all. 
 +  - System Type -> ARM system type -> Allow multiple platforms to be selected. 
 +  - System Type -> Multiple platform selection -> ARMv7 based platforms 
 +  - System Type -> Dummy Virtual Machine. 
 +  - Device Drivers -> Input Device support -> Miscellaneous devices -> Xen virtual keyboard and mouse support.
  
-# Resize the FDT just in case +Patching Domain U kernel source code: 
-fdt resize+<​code>​ 
 +$ wget http://​git.io/​vCV9E -O xen_blkif.patch 
 +$ patch -p1 < xen_blkif.patch 
 +</​code>​
  
-# Set Xen arguments based on $xen_bootargs +Build & Installation:​ 
-fdt set /chosen xen,​xen-bootargs \"$xen_bootargs\"​+<​code>​ 
 +make ARCH=arm CROSS_COMPILE=arm-none-eabi- zImage -j8 
 +$ sudo cp arch/arm/​boot/​zImage /​media/​rootfs/​root/​ 
 +sync 
 +</​code>​
  
-# Set Dom0 arguments based on $dom0_bootargs +Creating the [[http://​odroid.in/​ubuntu_14.04lts/​ubuntu-14.04lts-server-odroid-xu3-20150725.img.xz|domain U image(Ubuntu 14.04 server)]]:​ 
-fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"​+<​code>​ 
 +sudo kpartx -v -a ubuntu-14.04lts-server-odroid-xu3-20150725.img 
 +$ sudo dd if=/​dev/​mapper/​loop0p2 of=domU.img 
 +</​code>​
  
-# Create modules node +Modifiying domain U root file system 
-fdt mknode /chosen modules +<​code>​ 
-fdt set /chosen/modules '#​address-cells' ​<1+$ mkdir domU-root 
-fdt set /chosen/modules '#size-cells' <1>+$ sudo mount domU.img domU-root 
 +$ cd domU-root 
 +$ vi ./etc/fstab 
 +</code
 +<code - /etc/fstab> 
 +/​dev/​xvda ​   /    ext4    errors=remount-ro    0    ​1 
 +</code>
  
-# Create node for the linux located at $kernel_addr_r +<​code>​ 
-fdt mknode ​/chosen/modules module@0 +$ vi ./etc/init/​console.conf 
-fdt set /​chosen/​modules/module@0 compatible xen,​linux-zimage xen,​multiboot-module +</code> 
-fdt set /chosen/modules/module@0 reg <​$kernel_addr_r $kernel_size+<code - /etc/init/console.conf
-fdt print /chosen+start on stopped rc RUNLEVEL=[2345] 
 +stop on runlevel [!2345]
  
-## Boot Xen +respawn 
-bootz $xen_addr_r ​$dtb_addr_r ​+exec /​sbin/​getty ​-8 38400 hvc0
 </​code>​ </​code>​
  
-===== Xen Hypervisor ===== 
-Getting the xen soruce code: 
 <​code>​ <​code>​
-git clone https://github.com/bkrepo/xen.git +cd .. 
-cd xen+$ sudo umount domU-root 
 +$ sudo cp domU.img ​/media/rootfs/root
 +sync
 </​code>​ </​code>​
  
-Build & Installation:+Create the xen configuration file:
 <​code>​ <​code>​
-make dist-xen CROSS_COMPILE=arm-none-eabi- XEN_TARGET_ARCH=arm32 debug=y CONFIG_EARLY_PRINTK=exynos5250 -j8 +vi domU.cfg 
-$ sudo cp xen/​xen ​/media/boot/+</​code>​ 
 +<​code ​domU.cfg>​ 
 +kernel ​"/​root/​zImage"​ 
 +memory ​256 
 +maxmem ​256 
 +name "​Domain U" 
 +vcpus = 1 
 +cpus = ['​1'​] 
 +serial="​pty"​ 
 +disk = [ '​phy:/​root/​domU.img,​xvda,​w'​ ] 
 +vif = ['​bridge=xenbr0'​] 
 +extra = '​console=hvc0 xencons=tty root=/​dev/​xvda rw' 
 +</​code>​ 
 +<​code>​ 
 +$ sudo cp domU.cfg ​/media/rootfs/root/
 $ sync $ sync
 </​code>​ </​code>​
  
-===== Domain 0 Linux kernel ===== +Running virtual machine(**On ODROID-XU3/​4**,​ id: '​root',​ passwd: '​odroid'​):
-Build & Installation:+
 <​code>​ <​code>​
-$ git clone https://​github.com/​bkrepo/​linux-dom0.git +# xl create ​-c domU.cfg
-$ cd linux-dom0 +
-$ make odroidxu3_xen_defconfig ARCH=arm +
-$ make ARCH=arm CROSS_COMPILE=arm-none-eabi- -j8 +
-$ sudo make modules_install ARCH=arm INSTALL_MOD_PATH=/​media/​rootfs/​ +
-$ cp -f arch/​arm/​boot/​zImage arch/​arm/​boot/​dts/​exynos5422-odroidxu3.dtb /​media/​boot/​ +
-$ sync+
 </​code>​ </​code>​
  
 +Checking the domain list.
 +<​code>​
 +(Type the 'CTRL + x + ]' key -> Escaping Domain U, Moving to Domain 0 console.)
 +root@odroid-server:​~#​ xl list
 +Name                                        ID   Mem VCPUs      State   ​Time(s)
 +Domain-0 ​                                    ​0 ​  ​800 ​    ​4 ​    ​r----- ​    534.3
 +Domain U                                     ​1 ​  ​256 ​    ​1 ​    ​-b---- ​     49.9
 +root@odroid-server:​~#​
 +</​code>​
 +===== References =====
 +  * [[http://​forum.odroid.com/​viewtopic.php?​f=98&​t=6643|Related Topic in ODROID Forum]]
 +  * [[http://​wiki.xenproject.org/​wiki/​Xen_ARM_with_Virtualization_Extensions/​OdroidXU|Xen ARM with Virtualization Extensions/​OdroidXU]]
 +  * [[https://​github.com/​cypresskr/​xen|cypresskr'​s xen repository]]
 +  * [[https://​github.com/​suriyanr/​linux-xen/​tree/​odroidxu3-3.10.y|suriyanr'​s domain 0 linux kernel repository]]
en/xu4_xen.1444968938.txt.gz · Last modified: 2015/10/16 12:45 by brian.kim
CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0