diff --git a/0001-extlinux-Understand-default-properly.patch b/0001-extlinux-Understand-default-properly.patch new file mode 100644 index 0000000..e91049f --- /dev/null +++ b/0001-extlinux-Understand-default-properly.patch @@ -0,0 +1,81 @@ +From 392ee59b91c19c05fc91c9ed92b910d2cf1ed0a8 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Wed, 27 Nov 2013 16:59:50 +0100 +Subject: [PATCH 1/4] extlinux: Understand "default" properly + +The configuration looks like the following: + + default Fedora (3.11.6-301.fc20.i686+PAE) 20 (Heisenbug) + + title Fedora (3.11.6-301.fc20.i686+PAE) 20 (Heisenbug) + ... + +Grubby skips over the default clause as it has more than one element. And even +if it did not, it would not match it against the title, since it handles titles +specially, concatenating the title, but not the default clause. + +This commit adds special handling for extlinux, which causes it to parse +default and title in the same way. + +Signed-off-by: Lubomir Rintel +--- + grubby.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/grubby.c b/grubby.c +index 3de53b3..7010526 100644 +--- a/grubby.c ++++ b/grubby.c +@@ -151,6 +151,7 @@ struct configFileInfo { + int defaultIsVariable; + int defaultSupportSaved; + int defaultIsSaved; ++ int defaultIsUnquoted; + enum lineType_e entryStart; + enum lineType_e entryEnd; + int needsBootPrefix; +@@ -622,6 +623,7 @@ struct configFileInfo extlinuxConfigType = { + .needsBootPrefix = 1, + .maxTitleLength = 255, + .mbAllowExtraInitRds = 1, ++ .defaultIsUnquoted = 1, + }; + + struct grubConfig { +@@ -1166,9 +1168,6 @@ static struct grubConfig * readConfig(const char * inName, + cfg->flags &= ~GRUB_CONFIG_NO_DEFAULT; + defaultLine = line; + } +- } else if (line->type == LT_DEFAULT && line->numElements == 2) { +- cfg->flags &= ~GRUB_CONFIG_NO_DEFAULT; +- defaultLine = line; + + } else if (iskernel(line->type)) { + /* if by some freak chance this is multiboot and the "module" +@@ -1201,8 +1200,9 @@ static struct grubConfig * readConfig(const char * inName, + cfg->fallbackImage = strtol(line->elements[1].item, &end, 10); + if (*end) cfg->fallbackImage = -1; + +- } else if (line->type == LT_TITLE && line->numElements > 1) { +- /* make the title a single argument (undoing our parsing) */ ++ } else if ((line->type == LT_DEFAULT && cfi->defaultIsUnquoted) || ++ (line->type == LT_TITLE && line->numElements > 1)) { ++ /* make the title/default a single argument (undoing our parsing) */ + len = 0; + for (int i = 1; i < line->numElements; i++) { + len += strlen(line->elements[i].item); +@@ -1309,6 +1309,11 @@ static struct grubConfig * readConfig(const char * inName, + } + } + ++ if (line->type == LT_DEFAULT && line->numElements == 2) { ++ cfg->flags &= ~GRUB_CONFIG_NO_DEFAULT; ++ defaultLine = line; ++ } ++ + /* If we find a generic config option which should live at the + top of the file, move it there. Old versions of grubby were + probably responsible for putting new images in the wrong +-- +1.8.3.1 + diff --git a/0002-extlinux-Add-test-suite.patch b/0002-extlinux-Add-test-suite.patch new file mode 100644 index 0000000..5424f8c --- /dev/null +++ b/0002-extlinux-Add-test-suite.patch @@ -0,0 +1,891 @@ +From c478df5e9914fc2f7fda355b91bf816ce0bb289a Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Wed, 27 Nov 2013 16:59:49 +0100 +Subject: [PATCH 2/4] extlinux: Add test suite + +Strongly inspired aby GRUB test suite. Note that this does not pass currently, +since the extlinux default line gets eaten (rhbz#964178). A fix will follow. + +Signed-off-by: Lubomir Rintel +--- + test.sh | 58 +++++++++++++++++++++++++++++++++++++++- + test/extlinux.1 | 17 ++++++++++++ + test/extlinux.2 | 21 +++++++++++++++ + test/extlinux.3 | 15 +++++++++++ + test/extlinux.4 | 32 ++++++++++++++++++++++ + test/results/add/extlinux1.1 | 20 ++++++++++++++ + test/results/add/extlinux1.2 | 20 ++++++++++++++ + test/results/add/extlinux1.3 | 21 +++++++++++++++ + test/results/add/extlinux1.4 | 21 +++++++++++++++ + test/results/add/extlinux2.1 | 21 +++++++++++++++ + test/results/args/extlinux1.1 | 20 ++++++++++++++ + test/results/args/extlinux1.2 | 20 ++++++++++++++ + test/results/default/extlinux1.1 | 19 +++++++++++++ + test/results/default/extlinux1.2 | 19 +++++++++++++ + test/results/default/extlinux3.1 | 16 +++++++++++ + test/results/default/extlinux3.2 | 15 +++++++++++ + test/results/remove/extlinux3.1 | 10 +++++++ + test/results/remove/extlinux4.1 | 27 +++++++++++++++++++ + test/results/updargs/extlinux1.1 | 17 ++++++++++++ + test/results/updargs/extlinux1.2 | 18 +++++++++++++ + test/results/updargs/extlinux3.1 | 15 +++++++++++ + test/results/updargs/extlinux3.2 | 15 +++++++++++ + test/results/updargs/extlinux3.4 | 15 +++++++++++ + test/results/updargs/extlinux3.7 | 13 +++++++++ + test/results/updargs/extlinux4.2 | 32 ++++++++++++++++++++++ + test/results/updargs/extlinux4.3 | 32 ++++++++++++++++++++++ + test/results/updargs/extlinux4.4 | 32 ++++++++++++++++++++++ + test/results/updargs/extlinux4.5 | 33 +++++++++++++++++++++++ + 28 files changed, 613 insertions(+), 1 deletion(-) + create mode 100644 test/extlinux.1 + create mode 100644 test/extlinux.2 + create mode 100644 test/extlinux.3 + create mode 100644 test/extlinux.4 + create mode 100644 test/results/add/extlinux1.1 + create mode 100644 test/results/add/extlinux1.2 + create mode 100644 test/results/add/extlinux1.3 + create mode 100644 test/results/add/extlinux1.4 + create mode 100644 test/results/add/extlinux2.1 + create mode 100644 test/results/args/extlinux1.1 + create mode 100644 test/results/args/extlinux1.2 + create mode 100644 test/results/default/extlinux1.1 + create mode 100644 test/results/default/extlinux1.2 + create mode 100644 test/results/default/extlinux3.1 + create mode 100644 test/results/default/extlinux3.2 + create mode 100644 test/results/remove/extlinux3.1 + create mode 100644 test/results/remove/extlinux4.1 + create mode 100644 test/results/updargs/extlinux1.1 + create mode 100644 test/results/updargs/extlinux1.2 + create mode 100644 test/results/updargs/extlinux3.1 + create mode 100644 test/results/updargs/extlinux3.2 + create mode 100644 test/results/updargs/extlinux3.4 + create mode 100644 test/results/updargs/extlinux3.7 + create mode 100644 test/results/updargs/extlinux4.2 + create mode 100644 test/results/updargs/extlinux4.3 + create mode 100644 test/results/updargs/extlinux4.4 + create mode 100644 test/results/updargs/extlinux4.5 + +diff --git a/test.sh b/test.sh +index 17b40fe..4dc4dfb 100755 +--- a/test.sh ++++ b/test.sh +@@ -158,7 +158,7 @@ commandTest() { + + # generate convenience functions + for b in $(./grubby --help | \ +- sed -n 's/^.*--\([^ ]*\) *configure \1 bootloader$/\1/p'); do ++ sed -n 's/^.*--\([^ ]*\) *configure \1 bootloader.*/\1/p'); do + eval "${b}Test() { [[ \"$b\" == \$opt_bootloader ]] && oneTest --$b \"\$@\"; }" + eval "${b}DisplayTest() { [[ \"$b\" == \$opt_bootloader ]] && oneDisplayTest --$b \"\$@\"; }" + done +@@ -316,12 +316,24 @@ grubTest grub.5 fallback/g5.3 --remove-kernel=/boot/vmlinuz-2.4.7-2.5 \ + --boot-filesystem=/ --copy-default --add-kernel=/boot/new-kernel \ + --title="Some_Title" + ++testing="Extlinux default directive" ++extlinuxTest extlinux.1 default/extlinux1.1 --boot-filesystem=/boot --add-kernel /boot/new-kernel --title Some_Title ++extlinuxTest extlinux.1 default/extlinux1.2 --boot-filesystem=/boot --add-kernel /boot/new-kernel --title Some_Title --make-default ++extlinuxTest extlinux.3 default/extlinux3.1 --boot-filesystem=/boot --set-default=/boot/vmlinuz-3.12.0-2.fc21.i686 ++extlinuxTest extlinux.3 default/extlinux3.2 --boot-filesystem=/boot --set-default=/boot/vmlinuz-3.12.0-2.fc21.i686+PAE ++ + testing="GRUB new kernel argument handling" + grubTest grub.1 args/g1.1 --boot-filesystem=/boot \ + --add-kernel=/boot/foo --title=some_title --args="1234" --copy-default + grubTest grub.1 args/g1.2 --boot-filesystem=/boot \ + --add-kernel=/boot/foo --title=some_title --args="1234" + ++testing="Extlinux new kernel argument handling" ++extlinuxTest extlinux.1 args/extlinux1.1 --boot-filesystem=/boot \ ++ --add-kernel=/boot/foo --title=some_title --args="1234" --copy-default ++extlinuxTest extlinux.1 args/extlinux1.2 --boot-filesystem=/boot \ ++ --add-kernel=/boot/foo --title=some_title --args="1234" ++ + testing="GRUB remove kernel" + grubTest grub.7 remove/g7.1 --boot-filesystem=/ \ + --remove-kernel=/boot/vmlinuz-2.4.7-2.5 +@@ -339,6 +351,12 @@ testing="Z/IPL remove kernel" + ziplTest zipl.1 remove/z1.1 --remove-kernel=/boot/vmlinuz-2.4.9-38 + ziplTest zipl.1 remove/z1.2 --remove-kernel=DEFAULT + ++testing="Extlinux remove kernel" ++extlinuxTest extlinux.4 remove/extlinux4.1 --boot-filesystem=/ \ ++ --remove-kernel=/boot/vmlinuz-3.11.7-301.fc20.i686 ++extlinuxTest extlinux.3 remove/extlinux3.1 --boot-filesystem=/ \ ++ --remove-kernel=DEFAULT ++ + testing="GRUB update kernel argument handling" + grubTest grub.1 updargs/g1.1 --update-kernel=DEFAULT --args="root=/dev/hda1" + grubTest grub.1 updargs/g1.2 --update-kernel=DEFAULT \ +@@ -391,6 +409,30 @@ liloTest lilo.3 updargs/l3.1 --update-kernel=/boot/vmlinuz-2.4.18-4 \ + liloTest lilo.3 updargs/l3.2 --update-kernel=ALL \ + --remove-args="single" --args "root=/dev/hda2" + ++testing="Extlinux update kernel argument handling" ++extlinuxTest extlinux.1 updargs/extlinux1.1 --update-kernel=DEFAULT --args="root=/dev/hda1" ++extlinuxTest extlinux.1 updargs/extlinux1.2 --update-kernel=DEFAULT \ ++ --args="root=/dev/hda1 hda=ide-scsi root=/dev/hda2" ++extlinuxTest extlinux.3 updargs/extlinux3.1 --update-kernel=DEFAULT --args "hdd=notide-scsi" ++extlinuxTest extlinux.3 updargs/extlinux3.2 --update-kernel=DEFAULT \ ++ --args "hdd=notide-scsi root=/dev/hdd1" ++extlinuxTest extlinux.3 updargs/extlinux3.2 --update-kernel=DEFAULT \ ++ --args "root=/dev/hdd1 hdd=notide-scsi" ++extlinuxTest extlinux.3 updargs/extlinux3.4 --update-kernel=ALL --remove-args="hdd" ++extlinuxTest extlinux.3 updargs/extlinux3.4 --update-kernel=ALL --remove-args="hdd=ide-scsi" ++extlinuxTest extlinux.3 updargs/extlinux3.4 --update-kernel=ALL --remove-args="hdd=foobar" ++extlinuxTest extlinux.3 updargs/extlinux3.7 --update-kernel=ALL \ ++ --remove-args="hdd root ro" ++extlinuxTest extlinux.4 updargs/extlinux4.2 --boot-filesystem=/ \ ++ --update-kernel=ALL --args "hde=ide-scsi" ++extlinuxTest extlinux.4 updargs/extlinux4.3 --boot-filesystem=/ \ ++ --update-kernel=DEFAULT --args "hde=ide-scsi" ++extlinuxTest extlinux.4 updargs/extlinux4.4 --boot-filesystem=/ \ ++ --update-kernel=/vmlinuz-3.12.0-2.fc21.i686 \ ++ --args "ro root=LABEL=/ console=tty0 console=ttyS1,9600n81 single" ++extlinuxTest extlinux.4 updargs/extlinux4.5 --boot-filesystem=/ \ ++ --update-kernel=ALL --args "root=/dev/hda2" ++ + testing="LILO add kernel" + liloTest lilo.4 add/l4.1 --add-kernel=/boot/new-kernel.img --title="title" \ + --copy-default --boot-filesystem=/boot +@@ -550,6 +592,20 @@ testing="Z/IPL add kernel" + ziplTest zipl.1 add/z1.1 --add-kernel=/boot/new-kernel.img --title test + ziplTest zipl.1 add/z1.2 --add-kernel=/boot/new-kernel.img --title test --copy-default + ++testing="Extlinux add kernel" ++extlinuxTest extlinux.1 add/extlinux1.1 --add-kernel=/boot/new-kernel.img --title='title' \ ++ --initrd=/boot/new-initrd --boot-filesystem=/ ++extlinuxTest extlinux.1 add/extlinux1.2 --add-kernel=/boot/new-kernel.img --title='title' \ ++ --initrd=/boot/new-initrd --boot-filesystem=/boot ++extlinuxTest extlinux.1 add/extlinux1.3 --add-kernel=/boot/new-kernel.img --title='title' \ ++ --initrd=/boot/new-initrd --boot-filesystem=/ --copy-default ++extlinuxTest extlinux.1 add/extlinux1.4 --add-kernel=/boot/new-kernel.img --title='title' \ ++ --initrd=/boot/new-initrd --boot-filesystem=/boot --copy-default ++extlinuxTest extlinux.2 add/extlinux2.1 --add-kernel=/boot/vmlinuz-3.12.0-2.fc21.i686 \ ++ --initrd=/boot/initrd-3.12.0-2.fc21.i686-new.img --boot-filesystem=/boot --copy-default \ ++ --title="Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug)" \ ++ --remove-kernel="TITLE=Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug)" ++ + testing="LILO long titles" + liloTest lilo.1 longtitle/l1.1 --add-kernel=/boot/new-kernel.img \ + --title="linux-longtitle" --copy-default --boot-filesystem=/boot +diff --git a/test/extlinux.1 b/test/extlinux.1 +new file mode 100644 +index 0000000..85c9272 +--- /dev/null ++++ b/test/extlinux.1 +@@ -0,0 +1,17 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/extlinux.2 b/test/extlinux.2 +new file mode 100644 +index 0000000..eae4aa7 +--- /dev/null ++++ b/test/extlinux.2 +@@ -0,0 +1,21 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/hda5 hdd=ide-scsi ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/extlinux.3 b/test/extlinux.3 +new file mode 100644 +index 0000000..63f97bf +--- /dev/null ++++ b/test/extlinux.3 +@@ -0,0 +1,15 @@ ++prompt 0 ++ ++label Fedora (3.12.0-2.fc21.i686+PAE) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686+PAE ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686+PAE.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/extlinux.4 b/test/extlinux.4 +new file mode 100644 +index 0000000..14b795c +--- /dev/null ++++ b/test/extlinux.4 +@@ -0,0 +1,32 @@ ++ui menu.c32 ++ ++menu hidden ++timeout 50 ++totaltimeout 9000 ++ ++prompt 10 ++default Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.11.7-300.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-300.fc20.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.11.7-300.fc20.i686.img ++ ++label Fedora (3.11.7-301.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-301.fc20.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.11.7-301.fc20.i686.img ++ ++label Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.13.0-0.rc0.git5.1.fc21.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.13.0-0.rc0.git5.1.fc21.i686.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 console=tty0 console=ttyS1,9600n81 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/add/extlinux1.1 b/test/results/add/extlinux1.1 +new file mode 100644 +index 0000000..f81a7ed +--- /dev/null ++++ b/test/results/add/extlinux1.1 +@@ -0,0 +1,20 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label title ++kernel /boot/new-kernel.img ++initrd /boot/new-initrd ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/add/extlinux1.2 b/test/results/add/extlinux1.2 +new file mode 100644 +index 0000000..71e0437 +--- /dev/null ++++ b/test/results/add/extlinux1.2 +@@ -0,0 +1,20 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label title ++kernel /new-kernel.img ++initrd /new-initrd ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/add/extlinux1.3 b/test/results/add/extlinux1.3 +new file mode 100644 +index 0000000..9634025 +--- /dev/null ++++ b/test/results/add/extlinux1.3 +@@ -0,0 +1,21 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label title ++kernel /boot/new-kernel.img ++append ro root=/dev/sda1 ++initrd /boot/new-initrd ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/add/extlinux1.4 b/test/results/add/extlinux1.4 +new file mode 100644 +index 0000000..aa1ce63 +--- /dev/null ++++ b/test/results/add/extlinux1.4 +@@ -0,0 +1,21 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label title ++kernel /new-kernel.img ++append ro root=/dev/sda1 ++initrd /new-initrd ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/add/extlinux2.1 b/test/results/add/extlinux2.1 +new file mode 100644 +index 0000000..13a4179 +--- /dev/null ++++ b/test/results/add/extlinux2.1 +@@ -0,0 +1,21 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/hda5 hdd=ide-scsi ++initrd /initrd-3.12.0-2.fc21.i686-new.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/args/extlinux1.1 b/test/results/args/extlinux1.1 +new file mode 100644 +index 0000000..2d8c800 +--- /dev/null ++++ b/test/results/args/extlinux1.1 +@@ -0,0 +1,20 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label some_title ++kernel /foo ++append ro root=/dev/sda1 1234 ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/args/extlinux1.2 b/test/results/args/extlinux1.2 +new file mode 100644 +index 0000000..41cc324 +--- /dev/null ++++ b/test/results/args/extlinux1.2 +@@ -0,0 +1,20 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label some_title ++kernel /foo ++append 1234 ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/default/extlinux1.1 b/test/results/default/extlinux1.1 +new file mode 100644 +index 0000000..5d7f73d +--- /dev/null ++++ b/test/results/default/extlinux1.1 +@@ -0,0 +1,19 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label Some_Title ++kernel /new-kernel ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/default/extlinux1.2 b/test/results/default/extlinux1.2 +new file mode 100644 +index 0000000..e98ff12 +--- /dev/null ++++ b/test/results/default/extlinux1.2 +@@ -0,0 +1,19 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Some_Title ++ ++label Some_Title ++kernel /new-kernel ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/default/extlinux3.1 b/test/results/default/extlinux3.1 +new file mode 100644 +index 0000000..5a5495d +--- /dev/null ++++ b/test/results/default/extlinux3.1 +@@ -0,0 +1,16 @@ ++prompt 0 ++ ++default=Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++label Fedora (3.12.0-2.fc21.i686+PAE) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686+PAE ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686+PAE.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/default/extlinux3.2 b/test/results/default/extlinux3.2 +new file mode 100644 +index 0000000..63f97bf +--- /dev/null ++++ b/test/results/default/extlinux3.2 +@@ -0,0 +1,15 @@ ++prompt 0 ++ ++label Fedora (3.12.0-2.fc21.i686+PAE) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686+PAE ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686+PAE.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/remove/extlinux3.1 b/test/results/remove/extlinux3.1 +new file mode 100644 +index 0000000..12b4ef5 +--- /dev/null ++++ b/test/results/remove/extlinux3.1 +@@ -0,0 +1,10 @@ ++prompt 0 ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/remove/extlinux4.1 b/test/results/remove/extlinux4.1 +new file mode 100644 +index 0000000..5e1824e +--- /dev/null ++++ b/test/results/remove/extlinux4.1 +@@ -0,0 +1,27 @@ ++ui menu.c32 ++ ++menu hidden ++timeout 50 ++totaltimeout 9000 ++ ++prompt 10 ++default Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.11.7-300.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-300.fc20.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.11.7-300.fc20.i686.img ++ ++label Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.13.0-0.rc0.git5.1.fc21.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.13.0-0.rc0.git5.1.fc21.i686.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 console=tty0 console=ttyS1,9600n81 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/updargs/extlinux1.1 b/test/results/updargs/extlinux1.1 +new file mode 100644 +index 0000000..1e2a709 +--- /dev/null ++++ b/test/results/updargs/extlinux1.1 +@@ -0,0 +1,17 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/hda1 ++initrd /initrd-3.12.0-2.fc21.i686.img +diff --git a/test/results/updargs/extlinux1.2 b/test/results/updargs/extlinux1.2 +new file mode 100644 +index 0000000..764655a +--- /dev/null ++++ b/test/results/updargs/extlinux1.2 +@@ -0,0 +1,18 @@ ++# extlinux.conf generated by anaconda ++ ++ui menu.c32 ++ ++menu autoboot Welcome to Fedora. Automatic boot in # second{,s}. Press a key for options. ++menu title Fedora Boot Options. ++menu hidden ++ ++timeout 50 ++totaltimeout 9000 ++ ++default Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/hda1 hda=ide-scsi ++initrd /initrd-3.12.0-2.fc21.i686.img ++root /dev/hda2 +diff --git a/test/results/updargs/extlinux3.1 b/test/results/updargs/extlinux3.1 +new file mode 100644 +index 0000000..ef9fa86 +--- /dev/null ++++ b/test/results/updargs/extlinux3.1 +@@ -0,0 +1,15 @@ ++prompt 0 ++ ++label Fedora (3.12.0-2.fc21.i686+PAE) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686+PAE ++append ro root=/dev/sda1 hdd=notide-scsi ++initrd /initrd-3.12.0-2.fc21.i686+PAE.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/updargs/extlinux3.2 b/test/results/updargs/extlinux3.2 +new file mode 100644 +index 0000000..c85b6bf +--- /dev/null ++++ b/test/results/updargs/extlinux3.2 +@@ -0,0 +1,15 @@ ++prompt 0 ++ ++label Fedora (3.12.0-2.fc21.i686+PAE) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686+PAE ++append ro root=/dev/hdd1 hdd=notide-scsi ++initrd /initrd-3.12.0-2.fc21.i686+PAE.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/updargs/extlinux3.4 b/test/results/updargs/extlinux3.4 +new file mode 100644 +index 0000000..63f97bf +--- /dev/null ++++ b/test/results/updargs/extlinux3.4 +@@ -0,0 +1,15 @@ ++prompt 0 ++ ++label Fedora (3.12.0-2.fc21.i686+PAE) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686+PAE ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686+PAE.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/updargs/extlinux3.7 b/test/results/updargs/extlinux3.7 +new file mode 100644 +index 0000000..b542ad3 +--- /dev/null ++++ b/test/results/updargs/extlinux3.7 +@@ -0,0 +1,13 @@ ++prompt 0 ++ ++label Fedora (3.12.0-2.fc21.i686+PAE) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686+PAE ++initrd /initrd-3.12.0-2.fc21.i686+PAE.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/updargs/extlinux4.2 b/test/results/updargs/extlinux4.2 +new file mode 100644 +index 0000000..9bf16b7 +--- /dev/null ++++ b/test/results/updargs/extlinux4.2 +@@ -0,0 +1,32 @@ ++ui menu.c32 ++ ++menu hidden ++timeout 50 ++totaltimeout 9000 ++ ++prompt 10 ++default Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.11.7-300.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-300.fc20.i686 ++append ro root=/dev/hda6 hde=ide-scsi ++initrd /boot/initrd-3.11.7-300.fc20.i686.img ++ ++label Fedora (3.11.7-301.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-301.fc20.i686 ++append ro root=/dev/hda6 hde=ide-scsi ++initrd /boot/initrd-3.11.7-301.fc20.i686.img ++ ++label Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.13.0-0.rc0.git5.1.fc21.i686 ++append ro root=/dev/hda6 hde=ide-scsi ++initrd /boot/initrd-3.13.0-0.rc0.git5.1.fc21.i686.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 console=tty0 console=ttyS1,9600n81 hde=ide-scsi ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 hde=ide-scsi +diff --git a/test/results/updargs/extlinux4.3 b/test/results/updargs/extlinux4.3 +new file mode 100644 +index 0000000..218711d +--- /dev/null ++++ b/test/results/updargs/extlinux4.3 +@@ -0,0 +1,32 @@ ++ui menu.c32 ++ ++menu hidden ++timeout 50 ++totaltimeout 9000 ++ ++prompt 10 ++default Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.11.7-300.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-300.fc20.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.11.7-300.fc20.i686.img ++ ++label Fedora (3.11.7-301.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-301.fc20.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.11.7-301.fc20.i686.img ++ ++label Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.13.0-0.rc0.git5.1.fc21.i686 ++append ro root=/dev/hda6 hde=ide-scsi ++initrd /boot/initrd-3.13.0-0.rc0.git5.1.fc21.i686.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/sda1 console=tty0 console=ttyS1,9600n81 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/updargs/extlinux4.4 b/test/results/updargs/extlinux4.4 +new file mode 100644 +index 0000000..dc298fb +--- /dev/null ++++ b/test/results/updargs/extlinux4.4 +@@ -0,0 +1,32 @@ ++ui menu.c32 ++ ++menu hidden ++timeout 50 ++totaltimeout 9000 ++ ++prompt 10 ++default Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.11.7-300.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-300.fc20.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.11.7-300.fc20.i686.img ++ ++label Fedora (3.11.7-301.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-301.fc20.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.11.7-301.fc20.i686.img ++ ++label Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.13.0-0.rc0.git5.1.fc21.i686 ++append ro root=/dev/hda6 ++initrd /boot/initrd-3.13.0-0.rc0.git5.1.fc21.i686.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=LABEL=/ console=tty0 console=ttyS1,9600n81 single ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 +diff --git a/test/results/updargs/extlinux4.5 b/test/results/updargs/extlinux4.5 +new file mode 100644 +index 0000000..6418a48 +--- /dev/null ++++ b/test/results/updargs/extlinux4.5 +@@ -0,0 +1,33 @@ ++ui menu.c32 ++ ++menu hidden ++timeout 50 ++totaltimeout 9000 ++ ++prompt 10 ++default Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++ ++label Fedora (3.11.7-300.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-300.fc20.i686 ++append ro root=/dev/hda2 ++initrd /boot/initrd-3.11.7-300.fc20.i686.img ++ ++label Fedora (3.11.7-301.fc20.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.11.7-301.fc20.i686 ++append ro root=/dev/hda2 ++initrd /boot/initrd-3.11.7-301.fc20.i686.img ++ ++label Fedora (3.13.0-0.rc0.git5.1.fc21.i686) 20 (Heisenbug) ++kernel /boot/vmlinuz-3.13.0-0.rc0.git5.1.fc21.i686 ++append ro root=/dev/hda2 ++initrd /boot/initrd-3.13.0-0.rc0.git5.1.fc21.i686.img ++ ++label Fedora (3.12.0-2.fc21.i686) 20 (Heisenbug) ++kernel /vmlinuz-3.12.0-2.fc21.i686 ++append ro root=/dev/hda2 console=tty0 console=ttyS1,9600n81 ++initrd /initrd-3.12.0-2.fc21.i686.img ++ ++label DOS ++com32 chain.c32 ++append hd0 1 ++root /dev/hda2 +-- +1.8.3.1 + diff --git a/0003-grub-Fix-a-crash-with-kernel-line-without-being-prec.patch b/0003-grub-Fix-a-crash-with-kernel-line-without-being-prec.patch new file mode 100644 index 0000000..18c4631 --- /dev/null +++ b/0003-grub-Fix-a-crash-with-kernel-line-without-being-prec.patch @@ -0,0 +1,36 @@ +From 91d4421e96a737650720a6306b91994574f98d7a Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Wed, 27 Nov 2013 16:59:48 +0100 +Subject: [PATCH 3/4] grub: Fix a crash with kernel line without being preceded + by title + +Quite obviously this implies a broken configuration file where a lone kernel +line is found without ever seeing an entry start, resulting in a NULL +dereference attempt. Reproducible by running GRUB code against extlinux +configuration: + +./grubby --grub -c test/extlinux.1 --default-kernel +grubby received SIGSEGV! Backtrace (6): +... + +Signed-off-by: Lubomir Rintel +--- + grubby.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/grubby.c b/grubby.c +index 7010526..b0f95e3 100644 +--- a/grubby.c ++++ b/grubby.c +@@ -1174,7 +1174,7 @@ static struct grubConfig * readConfig(const char * inName, + * lines came earlier in the template, make sure to use LT_HYPER + * instead of LT_KERNEL now + */ +- if (entry->multiboot) ++ if (entry && entry->multiboot) + line->type = LT_HYPER; + + } else if (line->type == LT_MBMODULE) { +-- +1.8.3.1 + diff --git a/0004-grub-Remove-a-redundant-test.patch b/0004-grub-Remove-a-redundant-test.patch new file mode 100644 index 0000000..d468505 --- /dev/null +++ b/0004-grub-Remove-a-redundant-test.patch @@ -0,0 +1,26 @@ +From c6b5d783ad88243f104b9c2d63d7ea30094667d3 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Wed, 27 Nov 2013 16:59:47 +0100 +Subject: [PATCH 4/4] grub: Remove a redundant test + +Signed-off-by: Lubomir Rintel +--- + test.sh | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/test.sh b/test.sh +index 4dc4dfb..24231a2 100755 +--- a/test.sh ++++ b/test.sh +@@ -373,8 +373,6 @@ grubTest grub.3 updargs/g3.7 --update-kernel=ALL \ + --remove-args="hdd root ro" + grubTest grub.7 updargs/g7.2 --boot-filesystem=/ \ + --update-kernel=ALL --args "hde=ide-scsi" +-grubTest grub.7 updargs/g7.2 --boot-filesystem=/ \ +- --update-kernel=ALL --args "hde=ide-scsi" + grubTest grub.7 updargs/g7.3 --boot-filesystem=/ \ + --update-kernel=DEFAULT --args "hde=ide-scsi" + grubTest grub.7 updargs/g7.4 --boot-filesystem=/ \ +-- +1.8.3.1 + diff --git a/grubby.spec b/grubby.spec index 41842de..512c1c7 100644 --- a/grubby.spec +++ b/grubby.spec @@ -1,6 +1,6 @@ Name: grubby Version: 8.28 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Command line tool for updating bootloader configs Group: System Environment/Base License: GPLv2+ @@ -10,6 +10,15 @@ URL: http://git.fedorahosted.org/git/grubby.git # git archive --format=tar --prefix=grubby-%{version}/ HEAD |bzip2 > grubby-%{version}.tar.bz2 Source0: %{name}-%{version}.tar.bz2 +# https://lists.fedorahosted.org/pipermail/anaconda-patches/2013-November/007524.html +Patch0: 0001-extlinux-Understand-default-properly.patch +# https://lists.fedorahosted.org/pipermail/anaconda-patches/2013-November/007525.html +Patch1: 0002-extlinux-Add-test-suite.patch +# https://lists.fedorahosted.org/pipermail/anaconda-patches/2013-November/007522.html +Patch2: 0003-grub-Fix-a-crash-with-kernel-line-without-being-prec.patch +# https://lists.fedorahosted.org/pipermail/anaconda-patches/2013-November/007523.html +Patch3: 0004-grub-Remove-a-redundant-test.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: pkgconfig glib2-devel popt-devel BuildRequires: libblkid-devel git @@ -75,6 +84,9 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog +* Mon Jan 20 2014 Lubomir Rintel - 8.28-2 +- Fix extlinux default + * Fri Aug 02 2013 Peter Jones - 8.28-1 - More work on grub's "saved_entry" system. Resolves: rhbz#768106