I didn't see any Ubuntu repository specifically for using PV-Grub, so I turned to the instructions on Xen's website: http://wiki.xen.org/wiki/PvGrub
Had to install git, get prerequisites for configure to run it's checks, and clone the repository:
apt-get install git apt-get install python-dev gettext bin86 bcc iasl uuid-dev libncurses5-dev pkg-config libglib2.0-dev libyajl-dev apt-get install libpixman-1-dev bzip2 git clone git://xenbits.xen.org/xen
The first time I went into the repository and ran configure, libcrypto wasn't found, so it failed.
After searching, and doing a locate libcrypto, I finally found that I needed to create a symlink to libcrypto.so.1.0.0:
ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /lib/x86_64-linux-gnu/libcrypto.so
Then I had to install texinfo (apt-get install texinfo) to get past an error with makeinfo. Finally I was able to:
cd xen ./configure make
and have it complete.
I didn't find the pv-grub boot files in the location given in the documents, but a quick find ./ | grep pv-grub pointed me to the right location: ./dist/install/usr/local/lib/xen/boot/
Next, I copied the pv-grub files to a generally-used location:
cd dist/install/usr/local/lib/xen/boot/ mkdir -p /usr/lib/xen/boot cp pv-grub-x86_* /usr/lib/xen/boot/
Edited /boot/grub/menu.lst in the guest (DomU):
default 0 timeout 5 title vmlinuz-3.13.0-24-generic root (hd0,0) kernel /boot/vmlinuz-3.13.0-24-generic root=/dev/xvda1 initrd /boot/initrd.img-3.13.0-24-generic
then shut it down.
Edited /etc/xen/Guest-A1.cfg on the host (Dom0):
name = "Guest-A1" memory = 512 disk = ['phy:/dev/Host-A-vg/GuestA1-root,xvda,w'] vif = [' '] #bootloader = "pygrub" #kernel = "/var/lib/xen/images/ubuntu-netboot/vmlinuz" #ramdisk = "/var/lib/xen/images/ubuntu-netboot/initrd.gz" #extra = "debian-installer/exit/always_halt=true -- console=hvc0" kernel = "/usr/lib/xen/boot/pv-grub-x86_64.gz" extra = "(hd0,0)/boot/grub/menu.lst"
Now when I boot the VM, it uses pv-grub.