Index: xen-4.3.0-testing/tools/pygrub/src/pygrub =================================================================== --- xen-4.3.0-testing.orig/tools/pygrub/src/pygrub +++ xen-4.3.0-testing/tools/pygrub/src/pygrub @@ -606,6 +606,14 @@ def run_grub(file, entry, fs, cfg_args): print " args: %s" % img.args print " initrd: %s" % img.initrd[1] + # If grub has no menu entries to select, look for vmlinuz-xen and initrd-xen in /boot + if len(g.cf.images) == 0: + chosencfg = { "kernel": None, "ramdisk": None, "args": "" } + chosencfg = sniff_xen_kernel(fs, incfg) + if chosencfg["kernel"] and chosencfg["ramdisk"]: + chosencfg["args"] = cfg_args + return chosencfg + if interactive and not list_entries: curses.wrapper(run_main) else: @@ -692,6 +700,14 @@ def sniff_netware(fs, cfg): return cfg +def sniff_xen_kernel(fs, cfg): + if not cfg["kernel"] and fs.file_exists('/boot/vmlinuz-xen'): + cfg["kernel"] = '/boot/vmlinuz-xen' + if cfg["kernel"] and not cfg["ramdisk"]: + if fs.file_exists('/boot/initrd-xen'): + cfg["ramdisk"] = '/boot/initrd-xen' + return cfg + def format_sxp(kernel, ramdisk, args): s = "linux (kernel %s)" % kernel if ramdisk: