Difference between revisions of "Xen installation"
(→Grub setup) |
|||
Line 74: | Line 74: | ||
<li> Using Grub EFI (to be tested) | <li> Using Grub EFI (to be tested) | ||
</ol> | </ol> | ||
+ | |||
+ | Note, in case of no Grub menu at start-up, please check the grub configuration parameters. The solution strictly depends on the installed Grub and one of solution could be set the following configuration parameters in <code>/etc/default/grub</code>: | ||
+ | GRUB_TIMEOUT_STYLE=text | ||
+ | GRUB_TIMEOUT=5 | ||
<b>[OPTION 1] Grub-pc</b><br> | <b>[OPTION 1] Grub-pc</b><br> |
Revision as of 15:29, 6 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
The final step to install Xen hypervisor, strictly depends on the chosen boot options:
- Using Grub-PC
- UEFI boot manager
- Using Grub EFI (to be tested)
Note, in case of no Grub menu at start-up, please check the grub configuration parameters. The solution strictly depends on the installed Grub and one of solution could be set the following configuration parameters in /etc/default/grub
:
GRUB_TIMEOUT_STYLE=text GRUB_TIMEOUT=5
[OPTION 1] Grub-pc
Update grub and reboot:
# udate-grub # reboot
[OPTION 2] 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
[OPTION 3] Grub-efi (Experimental)
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