Index: virt-manager-1.0.1/virtinst/guest.py =================================================================== --- virt-manager-1.0.1.orig/virtinst/guest.py +++ virt-manager-1.0.1/virtinst/guest.py @@ -351,8 +351,18 @@ class Guest(XMLBuilder): if (not install and self.os.is_xenpv() and not self.os.kernel): - self.bootloader = "/usr/bin/pygrub" - self.os.clear() + os_ver = self._get_os_variant() + if os_ver == "sles12" or os_ver == "sled12": + self.installer._install_kernel = "/usr/lib/grub2/x86_64-xen/grub.xen" + self.installer._install_initrd = None + self.installer.extraargs = None + # alter_bootconfig won't update the osxml unless it thinks + # we are in an install phase. Add force_update param to call + self.installer.alter_bootconfig(self, True, self.os, True) + logging.info("Using grub.xen to boot guest") + else: + self.bootloader = "/usr/bin/pygrub" + self.os.clear() return self.get_xml_config() Index: virt-manager-1.0.1/virtinst/installer.py =================================================================== --- virt-manager-1.0.1.orig/virtinst/installer.py +++ virt-manager-1.0.1/virtinst/installer.py @@ -111,7 +111,7 @@ class Installer(object): dev.validate() return dev - def alter_bootconfig(self, guest, isinstall, bootconfig): + def alter_bootconfig(self, guest, isinstall, bootconfig, force_update=False): """ Generate the portion of the guest xml that determines boot devices and parameters. (typically the block) @@ -122,7 +122,7 @@ class Installer(object): 'post-install' phase. @type isinstall: C{bool} """ - if isinstall and not self.has_install_phase(): + if isinstall and not force_update and not self.has_install_phase(): return bootorder = self._build_boot_order(isinstall, guest)