Package: grub-pc Version: 1.96+20080724-14 Tags: patch While upgrading from grub (v1) to grub-pc (v2) the debconf script (grub-pc.config) tries to migrate existing kopt arguments from /boot/grub/menu.lst.
In my case kopt looked like this: kopt=root=/dev/sda2 resume=/dev/sda1 acpi_sleep=s3_bios vga=0x0368 ro The responsible code snippet from grub-pc.config 1 if [ "$RET" = "fillme" ] ; then 2 kopt=`sed -ne "s/^# kopt=//p" /boot/grub/menu.lst | tr -s " " "\n" | 3 grep -vx "\(ro\|root=[^ ]*\)"` || true 4 db_set grub-pc/linux_cmdline "${kopt}" || true removes root= and ro options, so afterwards kopt contains resume=/dev/sda1 acpi_sleep=s3_bios vga=0x0368 (Take care there are really newlines in, since this was requested through the preceding tr operation from line 2.) In line 4 the contents of $kopt are committed to debconf which silently fails. Since the quotes around ${kopt} expand the string as it is (newlines are keept), db_set gets an argument with newlines resulting in grub-pc/linux_cmdline only containing the first parameter (resume=/dev/sda1). The remaining kernel options are lost. So please remove the quotes from line 4 to profit from bash's word splitting, which works find in this case. The $kopt var will be split at all characters from IFS and concatenated with spaces. Best regards from Dresden/Germany! Marcus Obst
diff -r a47bcf8fd823 grub-pc.config --- a/grub-pc.config Wed Feb 11 11:20:48 2009 +0100 +++ b/grub-pc.config Wed Feb 11 11:21:38 2009 +0100 @@ -9,7 +9,7 @@ # this check ensures we only do this once if [ "$RET" = "fillme" ] ; then kopt=`sed -ne "s/^# kopt=//p" /boot/grub/menu.lst | tr -s " " "\n" | grep -vx "\(ro\|root=[^ ]*\)"` || true - db_set grub-pc/linux_cmdline "${kopt}" || true + db_set grub-pc/linux_cmdline ${kopt} || true if [ "${kopt}" == "" ] ; then # something smells bad. give user a chance to correct it. priority=high
pgp7eapHPioV7.pgp
Description: PGP signature