aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorRoger Pau Monne <roger.pau@entel.upc.edu>2012-01-10 16:10:00 +0000
committerRoger Pau Monne <roger.pau@entel.upc.edu>2012-01-10 16:10:00 +0000
commit33eae84c59ff6ca6797748624ac5685fe01f5ea5 (patch)
treed846ecf43e0a092a88f62205745614f495971690 /tools
parent72c761804bd39e84ea61cd34be11dc0c3991f52e (diff)
downloadxen-33eae84c59ff6ca6797748624ac5685fe01f5ea5.tar.gz
xen-33eae84c59ff6ca6797748624ac5685fe01f5ea5.tar.bz2
xen-33eae84c59ff6ca6797748624ac5685fe01f5ea5.zip
pygrub: fix extlinux parsing
pygrub was unable to parse extlinux config files correctly, exactly the ones like: LABEL grsec KERNEL vmlinuz-3.0.10-grsec APPEND initrd=initramfs-3.0.10-grsec root=UUID=cfd4a7b4-8c40-4025-b877-8205f1c622ee modules=sd-mod,usb-storage,ext4 xen quiet This patch fixes it, adding a new case when parsing the "append" line, that searches for the initrd image. Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu> Acked-by: Ian Campbell <ian.campbell.com> Committed-by: Ian Jackson <ian.jackson.citrix.com> xen-unstable changeset: 24460:ff0685e8419b Backport-requested-by: Roger Pau Monne <roger.pau@entel.upc.edu> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/pygrub/examples/alpine-linux-2.3.2.extlinux11
-rw-r--r--tools/pygrub/src/ExtLinuxConf.py11
2 files changed, 21 insertions, 1 deletions
diff --git a/tools/pygrub/examples/alpine-linux-2.3.2.extlinux b/tools/pygrub/examples/alpine-linux-2.3.2.extlinux
new file mode 100644
index 0000000000..908b4070f1
--- /dev/null
+++ b/tools/pygrub/examples/alpine-linux-2.3.2.extlinux
@@ -0,0 +1,11 @@
+DEFAULT menu.c32
+PROMPT 0
+MENU TITLE Alpine/Linux Boot Menu
+MENU HIDDEN
+MENU AUTOBOOT Alpine will be booted automatically in # seconds.
+TIMEOUT 30
+LABEL grsec
+ MENU DEFAULT
+ MENU LABEL Linux 3.0.10-grsec
+ KERNEL vmlinuz-3.0.10-grsec
+ APPEND initrd=initramfs-3.0.10-grsec root=UUID=a97ffe64-430f-4fd3-830e-4736d9a27af0 modules=sd-mod,usb-storage,ext4 quiet
diff --git a/tools/pygrub/src/ExtLinuxConf.py b/tools/pygrub/src/ExtLinuxConf.py
index 6be65cef1d..9d77b9f9bb 100644
--- a/tools/pygrub/src/ExtLinuxConf.py
+++ b/tools/pygrub/src/ExtLinuxConf.py
@@ -60,6 +60,13 @@ class ExtLinuxImage(object):
# Bypass regular self.commands handling
com = None
+ elif arg.find("initrd="):
+ # find initrd image in append line
+ args = arg.strip().split(" ")
+ for a in args:
+ if a.lower().startswith("initrd="):
+ setattr(self, "initrd", a.replace("initrd=", ""))
+ arg = arg.replace(a, "")
if com is not None and self.commands.has_key(com):
if self.commands[com] is not None:
@@ -86,10 +93,12 @@ class ExtLinuxImage(object):
self._args = args
def get_kernel(self):
return self._kernel
+ def set_args(self, val):
+ self._args = val
def get_args(self):
return self._args
kernel = property(get_kernel, set_kernel)
- args = property(get_args)
+ args = property(get_args, set_args)
def set_initrd(self, val):
self._initrd = (None,val)