Opened 13 years ago
Last modified 11 years ago
#296 closed defect
Xen pygrub cannot handle grub2 — at Version 1
| Reported by: | ezyang | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | Fedora 20 |
| Component: | internals | Keywords: | |
| Cc: |
Description (last modified by ezyang)
Xen needs this patch series http://old-list-archives.xen.org/archives/html/xen-devel/2011-10/msg01404.html unfortunately they haven't been backported to Xen 4.0 or Xen 4.1 yet. (We specifically need only patches 2, 4 and 5). The pygrub executable patch is fuzzy, but easy to manually apply. Otherwise you won't be able to boot because the bootloader returns no data. Currently c-o has had its pygrub manually patched with these patches; we should talk to backports or package up these changes ourselves. The idea is to just install another pygrub, and then ask Xen to use it instead.
--- /usr/lib/xen-4.0/lib/python/grub/GrubConf.py.orig 2012-08-14 10:28:54.000000000 -0400
+++ /usr/lib/xen-4.0/lib/python/grub/GrubConf.py 2012-09-05 16:24:37.061357415 -0400
@@ -414,6 +414,8 @@
if self.commands.has_key(com):
if self.commands[com] is not None:
+ if arg.strip() == "${saved_entry}":
+ arg = "0"
setattr(self, self.commands[com], arg.strip())
else:
logging.info("Ignored directive %s" %(com,))
--- /usr/lib/xen-4.0/lib/python/grub/GrubConf.py.orig
+++ /usr/lib/xen-4.0/lib/python/grub/GrubConf.py
@@ -368,6 +368,7 @@
in_function = False
img = None
title = ""
+ menu_level=0
for l in lines:
l = l.strip()
# skip blank lines
@@ -394,10 +395,18 @@
img = []
title = title_match.group(1)
continue
-
+
+ if l.startswith("submenu"):
+ menu_level += 1
+ continue
+
if l.startswith("}"):
if img is None:
- raise RuntimeError, "syntax error: closing brace without menuentry"
+ if menu_level > 0:
+ menu_level -= 1
+ continue
+ else:
+ raise RuntimeError, "syntax error: closing brace without menuentry"
self.add_image(Grub2Image(title, img))
img = None
--- /usr/lib/xen-4.0/bin/pygrub.orig 2012-09-05 16:28:03.105813164 -0400
+++ /usr/lib/xen-4.0/bin/pygrub 2012-09-05 16:29:57.168849770 -0400
@@ -386,7 +386,8 @@
["/boot/grub/menu.lst", "/boot/grub/grub.conf",
"/grub/menu.lst", "/grub/grub.conf"]) + \
map(lambda x: (x,grub.GrubConf.Grub2ConfigFile),
- ["/boot/grub/grub.cfg", "/grub/grub.cfg"]) + \
+ ["/boot/grub/grub.cfg", "/grub/grub.cfg",
+ "/boot/grub2/grub.cfg", "/grub2/grub.cfg"]) + \
map(lambda x: (x,grub.ExtLinuxConf.ExtLinuxConfigFile),
["/boot/isolinux/isolinux.cfg",
"/boot/extlinux.conf"])
Note: See
TracTickets for help on using
tickets.
