Ubuntu 10.04 HVM to PV
Februar 24th, 2012Wenn man ein Ubuntu als vollvirtualiserte Maschine hat (z.B. wenn man eine physikalische Maschine virtualisiert hat), dann kann man es nachträglich recht einfach in eine paravirtualisierte VM umbauen. Dazu muss der Kernel passen und die Konsoleneinstellungen müssen in der VM angepasst werden. Danach werden ein paar HVM-Einstellungen geleert und der PV-Bootloader festgelegt.
- Ubuntu Gast-Einstellungen:
- # apt-get update && apt-get install linux-image-generic-pae
(oder entsprechenden amd64-Kernel) - # cp /etc/init/tty1.conf /etc/init/hvc0.conf
Mit beliebigem Editor /etc/init/hvc0.conf editieren und alle vorkommenden tty1 durch hvc0 ersetzen und die Datei speichern. - # shutdown -P now
Die VM herunterfahren. - XenServer-Einstellungen
Auf der Konsole des XenServers müssen einige Einstellungen der VM angepasst werden - # xe vm-list power-state=halted
Zeigt alle abgeschalteten VMs an. Hier die gewünschte VM heraussuchen und die UUID notieren - # xe vm-param-set uuid=UUID HVM-boot-policy=
UUID durch die vorher ermittelte ersetzen. HVM-boot-policy wird ein leerer Wert zugewiesen - # xe vm-param-set uuid=UUID PV-bootloader=pygrub
Der Bootloader für die VM wird auf pygrub geändert. - # xe vm-disk-list uuid=UUID
Zeigt alle der Festplatte zugeordneten Festplatten an. Hier wird die UUID der VBD mit der ID 0 gesucht. - # xe vbd-param-set uuid=VBD_UUID bootable=true
Diese VBD wird als bootfähig markiert - # xe vm-start uuid=UUID
VM starten - Gasterweiterungen in der VM installieren
- xs-tools.iso bei der VM einlegen
- # mount /dev/xvdd /mnt
In der VM die CD mounten (ggf. die Device- und Ordnernamen anpassen) - # cd /mnt/Linux; ./install.sh
Gasterweiterungen installieren
# dpkg -i /mnt/Linux/xe-guest-utils*i386.deb
(oder statt i386.deb amd64.deb fuer 64bit-Systeme) - # sudo reboot
VM neustarten
Nach dem Starten der VM muss man meist das XenCenter neustarten, da er sonst keine Eingabe in der Konsole der VM erlaubt.
Diese Prozedur funktioniert sowohl bei Ubuntu 10.04 als auch bei 8.04 und 8.10. Die Namen der Kernel-Images unterscheiden sich zwar hier und da, der grobe Ablauf ist aber der selbe.





