Attached is a patch against 0.95+cvs20040624-14 to implement this feature. Please consider it for inclusion into the official package.
Cheers, -- Dominic Hargreaves | http://www.larted.org.uk/~dom/ PGP key 5178E2A5 from the.earth.li (keyserver,web,email)
diff -urN grub-0.95+cvs20040624/debian/update-grub grub-0.95+cvs20040624.patched/debian/update-grub --- grub-0.95+cvs20040624/debian/update-grub 2005-02-18 12:27:05.000000000 +0000 +++ grub-0.95+cvs20040624.patched/debian/update-grub 2005-02-18 12:51:15.000000000 +0000 @@ -291,6 +291,9 @@ # should grub lock the alternative boot options in the menu lockalternative="false" +# should grub lock the old kernels + lockold="false" + # options to use with the alternative boot options altoptions="(recovery mode) single" @@ -556,6 +559,7 @@ kernel_options=$6 recovery_suffix=$7 initrd=$8 + lock_old=$9 echo "title Debian GNU/Linux, kernel $kernel_version $recovery_desc" >> $buffer @@ -563,6 +567,10 @@ if test x"$lock_alternative" = x"true" ; then echo "lock" >> $buffer fi + # lock the old entries + if test x"$lock_old" = x"true" ; then + echo "lock" >> $buffer + fi echo "root $grub_root_device" >> $buffer echo "kernel $kernel $kernel_options $recovery_suffix" >> $buffer @@ -631,6 +639,9 @@ # Extract the lockalternative value lockalternative=$(GetMenuOpt "lockalternative" "$lockalternative") +# Extract the lockold value +lockold=$(GetMenuOpt "lockold" "$lockold") + # Extract the howmany value howmany=$(GetMenuOpt "howmany" "$howmany") @@ -675,6 +686,12 @@ echo "# lockalternative=$lockalternative" >> $buffer echo >> $buffer +echo "## should update-grub lock old automagic boot options" >> $buffer +echo "## e.g. lockold=false" >> $buffer +echo "## lockold=true" >> $buffer +echo "# lockold=$lockold" >> $buffer +echo >> $buffer + echo "## altoption boot targets option" >> $buffer echo "## multiple altoptions lines are allowed" >> $buffer echo "## e.g. altoptions=(extra menu suffix) extra boot options" >> $buffer @@ -789,8 +806,13 @@ currentOpt=$(get_kernel_opt $kernelVersion) - write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" "$kernel" \ - "$currentOpt" "" "$initrd" + if [ $counter -gt 1 ] ; then + write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" "$kernel" \ + "$currentOpt" "" "$initrd" "$lockold" + else + write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" "$kernel" \ + "$currentOpt" "" "$initrd" "" + fi # insert the alternative boot options if test ! x"$alternative" = x"false" ; then @@ -800,7 +822,8 @@ suffix=$(echo $line | sed -ne 's/\(([^)]*)\)[[:space:]]\(.*\)/\2/p') write_kernel_entry "$kernelVersion" "$descr" "$lockalternative" \ - "$grub_root_device" "$kernel" "$currentOpt" "$suffix" "$initrd" + "$grub_root_device" "$kernel" "$currentOpt" "$suffix" "$initrd" \ + "" done fi @@ -819,7 +842,7 @@ echo "Found kernel: $kernel" write_kernel_entry "$kernelVersion" "" "" "$grub_root_device" \ - "$kernel" "$currentOpt" "" "$initrd" + "$kernel" "$currentOpt" "" "$initrd" "$lockold" fi done fi diff -urN grub-0.95+cvs20040624/debian/update-grub.8 grub-0.95+cvs20040624.patched/debian/update-grub.8 --- grub-0.95+cvs20040624/debian/update-grub.8 2005-02-18 12:27:05.000000000 +0000 +++ grub-0.95+cvs20040624.patched/debian/update-grub.8 2005-02-18 13:01:53.000000000 +0000 @@ -51,6 +51,12 @@ .br # lockalternative=false +This option controls if grub should lock the old kernels. +.br +# lockold=true +.br +# lockold=false + This options controls what is used for the alternative boot options, multiple altoptions lines are allowed. .br # altoptions=(some description) some kernel command line options