# HG changeset patch # User Roger Pau Monne <roger.pau@entel.upc.edu> # Date 1325592706 -3600 # Node ID 6fcc1c479ee68f27233a55ec45a618e0f7cf5d6f # Parent 3e02aa9670b3265e36bdddbd4760415cd87d047b 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> diff -r 3e02aa9670b3 -r 6fcc1c479ee6 tools/pygrub/examples/alpine-linux-2.3.2.extlinux --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/pygrub/examples/alpine-linux-2.3.2.extlinux Tue Jan 03 13:11:46 2012 +0100 @@ -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 -r 3e02aa9670b3 -r 6fcc1c479ee6 tools/pygrub/src/ExtLinuxConf.py --- a/tools/pygrub/src/ExtLinuxConf.py Thu Dec 15 18:55:46 2011 +0100 +++ b/tools/pygrub/src/ExtLinuxConf.py Tue Jan 03 13:11:46 2012 +0100 @@ -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)
On Tue, 2012-01-03 at 12:14 +0000, Roger Pau Monne wrote:> # HG changeset patch > # User Roger Pau Monne <roger.pau@entel.upc.edu> > # Date 1325592706 -3600 > # Node ID 6fcc1c479ee68f27233a55ec45a618e0f7cf5d6f > # Parent 3e02aa9670b3265e36bdddbd4760415cd87d047b > 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@citrix.com>> > diff -r 3e02aa9670b3 -r 6fcc1c479ee6 tools/pygrub/examples/alpine-linux-2.3.2.extlinux > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/tools/pygrub/examples/alpine-linux-2.3.2.extlinux Tue Jan 03 13:11:46 2012 +0100 > @@ -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 -r 3e02aa9670b3 -r 6fcc1c479ee6 tools/pygrub/src/ExtLinuxConf.py > --- a/tools/pygrub/src/ExtLinuxConf.py Thu Dec 15 18:55:46 2011 +0100 > +++ b/tools/pygrub/src/ExtLinuxConf.py Tue Jan 03 13:11:46 2012 +0100 > @@ -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)
2012/1/3 Ian Campbell <Ian.Campbell@citrix.com>:> On Tue, 2012-01-03 at 12:14 +0000, Roger Pau Monne wrote: >> # HG changeset patch >> # User Roger Pau Monne <roger.pau@entel.upc.edu> >> # Date 1325592706 -3600 >> # Node ID 6fcc1c479ee68f27233a55ec45a618e0f7cf5d6f >> # Parent 3e02aa9670b3265e36bdddbd4760415cd87d047b >> 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@citrix.com>Can this patch be backported to 4.1 at least (I don't think 4.0 is necessary) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Roger Pau Monne writes ("[Xen-devel] [PATCH v2] pygrub: fix extlinux parsing"):> pygrub: fix extlinux parsing > > pygrub was unable to parse extlinux config files correctly, exactly > the ones like:Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>