Difference between revisions of "Xen installation"

From ERIKA WIKI
Jump to: navigation, search
Line 68: Line 68:
  
 
== Grub setup ==
 
== Grub setup ==
<b>Grub-pc</b> (e.g., <i>Ubuntu 16.04</i>)<br>
+
<b>Grub-pc</b><br>
 
Update grub and reboot:
 
Update grub and reboot:
 
   # udate-grub
 
   # udate-grub
 
   # reboot
 
   # reboot
  
<b>Uefi boot manager</b> (e.g., <i>Ubuntu 18.04.01</i>)<br>
+
<b>UEFI boot manager</b><br>
 
Create the Xen UEFI entry as follows:
 
Create the Xen UEFI entry as follows:
 
   # mkdir /boot/efi/EFI/xen
 
   # mkdir /boot/efi/EFI/xen
Line 80: Line 80:
 
   # cp /boot/initrd.img-$VERSION /boot/efi/EFI/xen/
 
   # cp /boot/initrd.img-$VERSION /boot/efi/EFI/xen/
 
where $VERSION is the chosen version of the Linux kernel and initramdisk that MUST reside in the same directory as <code>xen.efi</code>.
 
where $VERSION is the chosen version of the Linux kernel and initramdisk that MUST reside in the same directory as <code>xen.efi</code>.
 +
 +
Create the <code>xen.cfg</code> file in <code>/boot/efi/EFI/xen/</code>:
 +
 +
  [global]
 +
  default=ubuntu
 +
  [ubuntu]
 +
  options=console=vga,com1 com1=115200,8n1 iommu=verbose ucode=scan flask=disabled conring_size=2097152  loglvl=all
 +
  kernel=vmlinuz-$VERSION root=UUID=$ROOT_UUID ro quiet vt.handoff=7 console=hvc0
 +
  ramdisk=initrd.img-$VERSION
 +
 +
where <code>$VERSION</code> is the chosen version moved into <code>/boot/efi/EFI/xen</code> and <code>ROOT_UUID</code> is the identifier of the Ubuntu partition (note: command used <code>cat /proc/cmdline</code>).
  
 
Create the Xen entry in the UEFI boot manager:
 
Create the Xen entry in the UEFI boot manager:
 
   # efibootmgr -w -L Xen -l "\EFI\Xen\xen.efi" -c
 
   # efibootmgr -w -L Xen -l "\EFI\Xen\xen.efi" -c
  
In order to change the UEFI boot order, launch the following command:
+
Reorder the UEFI boot order so that Xen will be the default choice. More in detail, launch  <code>efibootmgr</code> commant to get the current order.
   # efibootmgr -o 0000,0002,0001
+
  # efibootmgr
where 000X is the boot num.
+
  BootCurrent: 0000
<b>Grub-efi</b> (e.g., <i>Ubuntu 18.04.01</i>)<br>
+
  Timeout: 5 seconds
 +
  BootOrder: 0000,0001,0002
 +
  Boot0000* ubuntu
 +
  Boot0001* Hard Drive
 +
  Boot0002* Xen
 +
 
 +
In this example, Xen has boot number 0002. So, in order to change the UEFI boot order, launch the following commad:
 +
   # efibootmgr -o 0002,0000,0001
 +
 
 +
Then, reboot:
 +
  # reboot
 +
 
 +
<b>Grub-efi</b> (<i><u>To Be Tested</u></i>)<br>
 
Remove the entry created for Grub-pc (it will no work since the installed grub is UEFI):
 
Remove the entry created for Grub-pc (it will no work since the installed grub is UEFI):
 
   # rm /etc/grub.d/20_linux_xen
 
   # rm /etc/grub.d/20_linux_xen

Revision as of 10:51, 5 December 2018

The section contains the instruction to install Xen hypervisor on platform x86_64 with one of the following operating system:

  • Ubuntu 16.04
  • Ubuntu 18.04.1 LTS

Build Dependencies

Install the following packages:

 # apt update && apt dist-upgrade #update/upgrade the kernel
 # apt install build-essential
 # apt install bcc bin86 gawk bridge-utils iproute2 
 # apt install libcurl4 libcurl4-openssl-dev bzip2 module-init-tools transfig tgif
 # apt install texinfo texlive-latex-base texlive-latex-recommended texlive-fonts-extra texlive-fonts-recommended
 # apt install pciutils-dev mercurial
 # apt install make gcc libc6-dev zlib1g-dev python python-dev python-twisted 
 # apt install libncurses5-dev patch libsdl-dev libjpeg-dev
 # apt install libvncserver-dev
 # apt install iasl libbz2-dev e2fslibs-dev git-core uuid-dev 
 # apt install ocaml ocaml-findlib libx11-dev bison flex xz-utils libyajl-dev
 # apt install gettext libpixman-1-dev libaio-dev markdown pandoc
 # apt install libc6-dev-i386
 # apt install lzma lzma-dev liblzma-dev #for rombios
 # apt install libsystemd-dev 

Retrieve the GRUB version

The Xen installation strictly depends on the installed Grub version: grub-pc or grub-efi. In order to retrieve the grub version, launch the following command:

 $ dpkg --get-selections | grep grub

Xen Installation

Retrieve Xen source
Clone the Xen repository and switch to the chosen version (i.e., RELEASE 4.11):

 $ git clone https://github.com/xen-project/xen.git
 $ cd xen
 $ git checkout RELEASE-4.11.0 -b RELEASE-4.11.0

In the following part of the tutorial, we refer to the Xen repository path as $XENPATH.

Configure
Configure:

 $ $XENPATH/configure --enable-systemd

In case of Xen EFI (as for example in Ubuntu 18.04.01), add the option --enable-targets=x86_64-pep as follows:

 $ $XENPATH/configure --enable-systemd --enable-targets=x86_64-pep

Build and install
Build all components (hypervisor, tools, docs, stubdomains, etc):

 $ cd $XENPATH
 $ make dist

Install (as root):

 # make install

Enable the Xen services
Reload dynamic libraries:

 # /sbin/ldconfig

Enable systemd Xen services:

 # systemctl enable xen-qemu-dom0-disk-backend.service
 # systemctl enable xen-init-dom0.service
 # systemctl enable xenconsoled.service
 # systemctl enable xenstored.service
 # systemctl enable xendomains.service

Note that in case of error for enabling xendomains service, remove /etc/init.d/xendomains.

Grub setup

Grub-pc
Update grub and reboot:

 # udate-grub
 # reboot

UEFI boot manager
Create the Xen UEFI entry as follows:

 # mkdir /boot/efi/EFI/xen
 # cp /usr/lib64/efi/xen.efi /boot/efi/EFI/xen
 # cp /boot/vmlinuz-$VERSION /boot/efi/EFI/xen
 # cp /boot/initrd.img-$VERSION /boot/efi/EFI/xen/

where $VERSION is the chosen version of the Linux kernel and initramdisk that MUST reside in the same directory as xen.efi.

Create the xen.cfg file in /boot/efi/EFI/xen/:

 [global]
 default=ubuntu
 [ubuntu]
 options=console=vga,com1 com1=115200,8n1 iommu=verbose ucode=scan flask=disabled conring_size=2097152  loglvl=all
 kernel=vmlinuz-$VERSION root=UUID=$ROOT_UUID ro quiet vt.handoff=7 console=hvc0
 ramdisk=initrd.img-$VERSION

where $VERSION is the chosen version moved into /boot/efi/EFI/xen and ROOT_UUID is the identifier of the Ubuntu partition (note: command used cat /proc/cmdline).

Create the Xen entry in the UEFI boot manager:

 # efibootmgr -w -L Xen -l "\EFI\Xen\xen.efi" -c

Reorder the UEFI boot order so that Xen will be the default choice. More in detail, launch efibootmgr commant to get the current order.

 # efibootmgr
 BootCurrent: 0000
 Timeout: 5 seconds
 BootOrder: 0000,0001,0002
 Boot0000* ubuntu
 Boot0001* Hard Drive
 Boot0002* Xen

In this example, Xen has boot number 0002. So, in order to change the UEFI boot order, launch the following commad:

 # efibootmgr -o 0002,0000,0001

Then, reboot:

 # reboot

Grub-efi (To Be Tested)
Remove the entry created for Grub-pc (it will no work since the installed grub is UEFI):

 # rm /etc/grub.d/20_linux_xen

Create the Xen UEFI entry as follows:

 # mkdir /boot/efi/EFI/xen
 # cp /usr/lib64/efi/xen.efi /boot/efi/EFI/xen
 # cp /boot/vmlinuz-$VERSION /boot/efi/EFI/xen
 # cp /boot/initrd.img-$VERSION /boot/efi/EFI/xen/

where $VERSION is the chosen version of the Linux kernel and initramdisk that MUST reside in the same directory as xen.efi.

Create the xen.cfg file in /boot/efi/EFI/xen/:

 [global]
 default=ubuntu
 [ubuntu]
 options=console=vga,com1 com1=115200,8n1 iommu=verbose ucode=scan flask=disabled conring_size=2097152  loglvl=all
 kernel=vmlinuz-$VERSION root=UUID=$ROOT_UUID ro quiet vt.handoff=7 console=hvc0
 ramdisk=initrd.img-$VERSION

where $VERSION is the chosen version moved into /boot/efi/EFI/xen and ROOT_UUID is the identifier of the Ubuntu partition (note: command used cat /proc/cmdline).

Create an entry for Grub /etc/grub.d/20_linux_xen_efi:

 cat << EOF
 menuentry "Ubuntu GNU/Linux, with Xen EFI hypervisor" {
   insmod part_gpt
   insmod search_fs_uuid
   insmod chain
   chainloader (hd0,gpt1)/EFI/XEN/xen.efi
 }
 EOF
 # chmod +x /etc/grub.d/20_linux_xen_efi

Update grub and reboot:

 # udate-grub
 # reboot

Grub menu fix-up

Note, in case of no Grub menu at start-up, modify the following grub configuration parameter in /etc/default/grub:

 GRUB_TIMEOUT_STYLE=text
 GRUB_TIMEOUT=5