Package:  grub
Version:  0.97-18
Severity: normal
Tags:     patch

Currently the update-grub script doesn't differentiate between options
that are set null in /boot/grub/menu.lst, and options that simply aren't
specified.

In the event that an option isn't specified (such as a blank
/boot/grub/menu.lst) then the default option as supplied by the
update-grub script is used (this is correct behavior).  However, if an
option is specified null, then the default option as supplied by the
update-grub script is also used--this is incorrect behavior, it should
be left null.

For example, suppose I want to boot both Xen kernels and regular kernels
with the "console=ttyS0" option, first I set "kopt=console=ttyS0".  Now,
since the xenkopt default is specified as "xenkopt=console=tty0" I must
change it to "xenkopt=" to remove the redundant console argument.
However, upon running update-grub the null xenkopt option is interpreted
as non-existant and the default "xenkopt=console=tty0" is supplied in
error.

I've attached a patch that fixes this problem by modifying the
GenMenuOpt function to see if the option already exists in the menu file
and if so uses it as-is.  Note that if the option doesn't exist, the
correct behavior is preserved.
diff -uNr grub-0.97.orig/debian/update-grub grub-0.97/debian/update-grub
--- grub-0.97.orig/debian/update-grub   2006-10-25 21:20:29.000000000 -0400
+++ grub-0.97/debian/update-grub        2006-10-25 21:21:47.503876542 -0400
@@ -439,9 +439,7 @@
        opt=$1
        value=$2
 
-       tmp=$(ExtractMenuOpt "$opt")
-
-       [ -z "$tmp" ] || value="$tmp"
+       [ -z "$(GetMenuOpts "$opt")" ] || value=$(ExtractMenuOpt "$opt")
 
        echo $value
 }

Reply via email to