Ein XEN basierter vServer hat den großen Vorteil, dass eigene Kernel und Module genutzt werden können.
Stellt der Provider VMs jedoch nur mit Grub 1 zur Verfügung verhindert die Ausgangskonfiguration aber unter Umständen das Booten neuerer Kernels, da "update-grub" die "menu.lst" nicht automatisiert anpassen kann.
Im Zuge der Korrekturen darf auch auf Grub 2 migriert werden. Hierbei werden die Grub-Einträge komplett neu generiert und sichergestellt, dass auch Hosts, welche Grub 2 nicht selbstständig laden, entsprechend weitergeleitet werden. Eventuelle Fehlermeldungen, welche beim Aufruf von "update-grub" auftreten können ignoriert werden, sofern die jeweils letzte Ausgabe den Erfolg des Befehls anzeigt.
Die folgenden Befehle beziehen sich auf Debian v8.x:
apt-get -y install grub-legacy
cp -pR /boot/grub/ /boot/grub_old
rm -rf /boot/grub/*
rm -rf /boot/xen/*
update-grub
apt-get -y purge pv-grub-menu grub-common grub-legacy grub-pc grub2 grub2-common
apt-get -y install grub-xen
grub-install --target=x86_64-xen
sed -i 's/timeout\t\t5/timeout\t\t0/' /boot/grub/menu.lst
sed -i 's/# groot=(hostdisk\/\/dev\/xvda1)/# groot=(hd0,0)/' /boot/grub/menu.lst
nano /boot/grub/menu.lst
Alle Kernel in der Liste entfernen und ersetzen durch:
title Chainload Grub 2
root (hd0,0)
kernel /boot/xen/pvboot-x86_64.elf
Abschließend Grub 2 fertig konfigurieren lassen:
sed -i 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=0/' /etc/default/grub
update-grub
Nun kann die VM neu gestartet werden.
Optional:
Wenn gewünscht, kann auch "fstab" angepasst werden, sodass gemäß den Richtlinien von Debian v8 UUIDs als Identifier genutzt werden. "xvda2" wird im folgenden Beispiel als Swap gemountet:
sed -i 's/^\/dev\/xvd/#\/dev\/xvd/' /etc/fstab
sed -i 's/^proc/#proc/' /etc/fstab
echo "# /dev/xvda1" >> /etc/fstab
echo -e "$(blkid /dev/xvda1 -s UUID | awk '{print $2}' | sed 's/\"//g')\t/\t\t$(df -T /dev/xvda1 | grep "^/dev" | awk '{print $2}')\terrors=remount-ro\t0\t1" >> /etc/fstab
echo "# /dev/xvda2" >> /etc/fstab
echo -e "$(blkid /dev/xvda2 -s UUID | awk '{print $2}' | sed 's/\"//g')\tnone\t\tswap\tsw\t\t\t0\t0" >> /etc/fstab