Linux PVH

From Xen
Jump to: navigation, search

PVH and Linux

The only things needed to make this work as PVH are:

  • Get the latest version of Xen (4.10 at least) and compile/install it. See [1]for details
  • Get the latest version of Linux (or a reasonable recent one, at least 4.11 is required), see [2] for details. The steps are:
cd $HOME
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
  • Compile with CONFIG_XEN_PVH=y:
    • Based on your current distro.
 cp /boot/config-`uname -r `$HOME/linux/.config
 make menuconfig

Where one will select Processor type and features ---> Linux guest support --->Support for running as a PVH guest

This entry requires Processor type and features ---> Linux guest support --->Xen PVHVM guest support to be set.

    • Or from scratch:
make localmodconfig

You should see: "Support for running as a PVH guest (XEN_PVH) [N/y]" In case you missed it:

make menuconfig

Processor type and features ---> Linux guest support ---> Xen guest support (selecting that will now show you): Support for running as a PVH guest

    • If you prefer to edit .config, these should be enabled:
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_GUEST=y
CONFIG_PARAVIRT_SPINLOCKS=y
CONFIG_XEN=y
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVH=y

You will also have to enable the block, network drivers, console, etc which are in different submenus.

  • Install it. Usually doing:
make modules_install && install

is suffice. It should generate the initramfs.cpio.gz and the kernel and stash them in /boot directory.

  • Launch it with type="pvh" in your guest config (for example):
extra="console=hvc0 earlyprintk=xen initcall_debug debug"
kernel="/boot/vmlinuz-4.14+"
ramdisk="/boot/initramfs-4.14+.cpio.gz"
memory=1024
vcpus=4
name="pvh"
vif = [ 'mac=00:0F:4B:00:00:68' ]
vfb = [ 'vnc=1, vnclisten=0.0.0.0,vncunused=1']
disk=['phy:/dev/sdb1,xvda,w']
type="pvh"
on_reboot="preserve"
on_crash="preserve"
on_poweroff="preserve

using 'xl'. Xend 'xm' does not have PVH support.

Items not supported by PVH

  • PCI pass through (as of Xen 4.10)

Items that have not been tested extensively or at all:

  • Running it in dom0 mode (as the patches for that are not yet in Linux upstream).

Things that are broken:

If you encounter errors, please email with the following (please note that the guest config has on_reboot="preserve", on_crash="preserve" - which you should have in your guest config to contain the memory of the guest):

  • xl dmesg
  • xl list
  • xenctx -s $HOME/linux/System.map -f -a -C <domain id>

(xenctx is sometimes found in /usr/lib/xen/bin/xenctx)

  • The console output from the guest
  • Anything else you can think off.

to xen-devel@lists.xenproject.org

Stash away your vmlinux file (it is too big to send via email) - as we might need it later on.

That is it!

Thank you!