Bug#470894: grub-installer: user parameters are not added to grub.cfg for grub2
On Fri, Aug 07, 2009 at 07:59:04AM +0200, Felix Zielcke wrote:
> Am Dienstag, den 04.08.2009, 11:45 +0200 schrieb Felix Zielcke:
> > Here's now a patch which does it without a version check.
>
> I suggest to change the sed expression to
> "s!^GRUB_CMDLINE_LINUX=\"\?\([^\"]*\)\"\?!GRUB_CMDLINE_LINUX=\"\1 xyz\"!"
> because in lenny we just have GRUB_CMDLINE_LINUX= in /etc/defaul/grub
> or does someone have a better one?
Better to sed s!^GRUB_CMDLINE_LINUX=$!GRUB_CMDLINE_LINUX=""! first. But
then that also leaves unsightly leading spaces. There's no obvious
reason why we need to preserve any existing value in these variables, of
course.
However, now that grub2/linux_cmdline and grub2/linux_cmdline_default
debconf questions exist, we need to preseed them anyway to stop them
being asked in a default installation. As long as we have to do that, it
seems to me that we might as well set them to reasonable values.
How does this patch look?
Index: grub-installer
===================================================================
--- grub-installer (revision 60561)
+++ grub-installer (working copy)
@@ -394,6 +394,25 @@
;;
esac
+user_params=$(user-params) || true
+defopt_params=""
+kopt_params=""
+for u_param in $user_params; do
+ case "$u_param" in
+ quiet)
+ defopt_params=${defopt_params:+$defopt_params }$u_param ;;
+ *)
+ kopt_params=${kopt_params:+$kopt_params }$u_param ;;
+ esac
+done
+if [ "$grub_version" = grub2 ]; then
+ # quoting to deconfuse vim
+ chroot /target 'debconf-set-selections' <<EOF
+$grub_package grub2/linux_cmdline string $kopt_params
+$grub_package grub2/linux_cmdline_default string $defopt_params
+EOF
+fi
+
db_progress START 0 6 grub-installer/progress/title
db_subst grub-installer/progress/step_install GRUB "$grub_version"
@@ -726,17 +745,6 @@
# Add user parameters to menu.list; some options are only added to the
# default entry for a kernel instead of all entries
-user_params=$(user-params) || true
-defopt_params=""
-kopt_params=""
-for u_param in $user_params; do
- case "$u_param" in
- quiet)
- defopt_params=${defopt_params:+$defopt_params }$u_param ;;
- *)
- kopt_params=${kopt_params:+$kopt_params }$u_param ;;
- esac
-done
if [ "$defopt_params" ]; then
sed -i "s!^\(# defoptions=.*\)!\1 $defopt_params!" $ROOT/boot/grub/$menu_file
fi
--
Colin Watson [cjwatson@debian.org]
Reply to: