Booting Overview: Difference between revisions

From Xen
Jump to navigationJump to search
No edit summary
Line 26: Line 26:
* [https://xenbits.xen.org/docs/unstable/man/xl.cfg.5.html#Direct-Kernel-Boot man page]
* [https://xenbits.xen.org/docs/unstable/man/xl.cfg.5.html#Direct-Kernel-Boot man page]


== PVGrub ==
== PV Guest Boot Process ==
Unlike HVM guests, the boot process for PV guests does not follow the standard boot process. Instead of of booting via the standard x86 boot entry, PV guests are are using alternative boot entries [in Linux startup_32() or startup_64()]. For Xen this is also known as the Xen PV boot path. This has implications for end-users, which cannot simply boot Xen PV guests by making available an installable medium during the boot process. To work around this, and to provide a user-experience similar to a normal install, the Xen community has developed two approaches to solve this problem:
PVGrub is originally was a boot manager for Xen PV VMs. In 2015, support for Xen PV guests was included into [https://opensource.com/article/17/3/introduction-grub2-configuration-linux GRUB2].
* Enable a standard widely used bootloader to support Xen PV guests (in thus case [[PvGrub]] and more recently [https://www.gnu.org/software/grub/manual/grub/grub.html GRUB2])
* A xen tool (called [[PyGrub]]) that exposes a standard bootloader interface (in this case GRUB), which hides the differences in boot process between HVM and PV guests
=== PVGrub ===
PVGrub is a boot manager for Xen PV VMs, which originally was a fork of GRUB. In 2015, support for Xen PV guests was included into [https://opensource.com/article/17/3/introduction-grub2-configuration-linux GRUB2]. The following figure outlines the boot process with
<gallery widths="370px" heights="320px" mode=nolines>
<gallery widths="370px" heights="320px" mode=nolines>
File:PVGrubBoot.png
File:PVGrubBoot.png
</gallery>
</gallery>
Unlike for HVM guests, the boot proceess


Note that PVGrub is a more secure and more efficient alternative to PyGrub to boot domU images. Unlike Pygrub it runs an adapted version of the grub boot loader inside the created domain itself, and uses the regular domU facilities to read the disk mounted as root directory, fetch files from network, etc. It also eventually loads the PV kernel and chain-boots it. PVGrub allows host admins to configure what guests and kernel versions a guest admin can install: this is also one of the main drawbacks. It can also be used for PXE booting.
Non standard way of installing/booting,�with a standard bootloader UI.

Allows host admins to configure what guests and kernel versions a guest admin can install.

Also used for PXE booting

Requires a PV capable GRUB2 (you may need to build from source or install an appropriate distro package)


Xen does not come with PVGrub: you will need to install an appropriate distro package (make sure that Xen support is enabled) or build it from source.


Also see
Also see
Line 46: Line 45:
* [[PvGrub]]
* [[PvGrub]]


== PyGrub ==
=== PyGrub ===


== PV Guest Install Basic Workflow ==


[[Category:Users]]
[[Category:Users]]

Revision as of 17:29, 10 September 2018

This document describes the different mechanisms and config file options that are available for Xen.

The following diagram shows the first steps of the Linux boot and startup sequence to provide a baseline to allow explaining the differences

HVM Guest Boot Process

From a user's perspective the HVM Boot and install process is identical to the process on a native PC or server.

However, behind the scenes

  • The hvmloader is copied into guest memory by Xen (under the control of the Toolstack). The hvmloader sets up all necessary information for the Device Emulator which emulates a HW environment that appears exactly like a physical machine. 
  • The correct firmware is automatically loaded as a binary blob (usually located in /usr/lib64/xen/boot) and copied into guest memory based on config settings, but can be overridden via the firmware config file option. See the various firmware options in the man page.

Direct Kernel Boot

When installing a new guest OS it is often useful to boot directly from a kernel and initrd stored in the host OS' file system, allowing command line arguments to be passed directly to the installer. This capability is usually available for PV, PVH and HVM guests.

In this case, the bootloader and firmware are bypassed. Direct Kernel Boot is often an easy way to start the installation process and create a disk image. To install VMs this way, you need to be a host administrator (aka you need to have access to Dom0). Direct Kernel Boot is also useful for netboot. Note that most distros have kernel and initrd file systems available for download. In some cases, you will need to download an ISO, mount it and use the kernel and initrd from the ISO.

Also See

PV Guest Boot Process

Unlike HVM guests, the boot process for PV guests does not follow the standard boot process. Instead of of booting via the standard x86 boot entry, PV guests are are using alternative boot entries [in Linux startup_32() or startup_64()]. For Xen this is also known as the Xen PV boot path. This has implications for end-users, which cannot simply boot Xen PV guests by making available an installable medium during the boot process. To work around this, and to provide a user-experience similar to a normal install, the Xen community has developed two approaches to solve this problem:

  • Enable a standard widely used bootloader to support Xen PV guests (in thus case PvGrub and more recently GRUB2)
  • A xen tool (called PyGrub) that exposes a standard bootloader interface (in this case GRUB), which hides the differences in boot process between HVM and PV guests

PVGrub

PVGrub is a boot manager for Xen PV VMs, which originally was a fork of GRUB. In 2015, support for Xen PV guests was included into GRUB2. The following figure outlines the boot process with

Note that PVGrub is a more secure and more efficient alternative to PyGrub to boot domU images. Unlike Pygrub it runs an adapted version of the grub boot loader inside the created domain itself, and uses the regular domU facilities to read the disk mounted as root directory, fetch files from network, etc. It also eventually loads the PV kernel and chain-boots it. PVGrub allows host admins to configure what guests and kernel versions a guest admin can install: this is also one of the main drawbacks. It can also be used for PXE booting.

Xen does not come with PVGrub: you will need to install an appropriate distro package (make sure that Xen support is enabled) or build it from source.

Also see

PyGrub