PV-Grub allows you to boot your VPS with a locally installed kernel that supports pv_ops (stable in kernels 2.6.24 and greater). The flexibility of using a custom kernel can allow you to keep up-to-date with your distributions latest security patches, to test the latest kernels from kernel.org, and can help in situations where resources are limited or custom functionality is required.
Your VPS will first boot a custom "Mini-OS" kernel based on the Grub Bootloader. This will search the "/boot/grub/" directory for a "menu.lst" file, which defines where your installed kernels are located. The specified kernel is then loaded into memory and "kexec" is used to boot the specified kernel.
Switching to PV-Grub can result in a non-bootable VPS if it is not configured correctly. If your VPS does not boot then please switch the VPS back to the default recommended kernel.
The following guides are for Ubuntu Precise, Debian Squeeze and CentOS 6.3. These procedures may be applicable to other versions of these distributions.
If the VPS has recently been provisioned and the file '/boot/grub/menu.lst' exists, the VPS is already configured to use PV-Grub with the default kernel.
To use PV-Grub, Grub 2 should be removed if it is installed:
root@host:~# apt-get purge grub2 grub-pc
Confirm that you want to remove Grub2 and the associated files.
Install Grub legacy and the virtual kernel metapackage:
root@host:~# apt-get install linux-virtual grub-legacy-ec2
The Package configuration will ask to create a grub menu file and will also ask for the drive(s) to install grub on - do not select any devices.
Edit /boot/grub/menu.lst, and change the groot to (hd1):
# groot=(hd1)
(Re)generate the Grub menu:
root@host:~# update-grub-legacy-ec2
Create the grub directory:
root@host:~# mkdir -p /boot/grub
root@host:~# echo 0 > /boot/grub/default
Install Grub legacy and the kernel package:
root@host:~# apt-get install grub-legacy linux-image-xen-amd64
Update the grub menu:
root@host:~# sed s@'# kopt=.*'@'# kopt=root=/dev/xvda2 console=hvc0 ro'@g --in-place /boot/grub/menu.lst
root@host:~# sed s@'# groot=.*'@'# groot=(hd1)'@g --in-place /boot/grub/menu.lst
root@host:~# update-grub
Install the latest EL Kernel:
[root@host ~]# yum install kernel.x86_64
(Re)create the grub menu /boot/grub/menu.lst:
default=0
timeout=5
title PV Grub Kernel
root (hd1)
kernel /boot/vmlinuz-xxx.el6.x86_64 ro console=hvc0 root=/dev/xvda2
initrd /boot/initramfs-xxx.el6.x86_64.img
From the control panel locate your VPS and enable PV-GRUB.