To prevent loss of config when grub-pc is updated and the user naively
chooses to take the maintainer's version any intelligent modifications
done during installation will be lost.

Instead we take advantage of the fact that the grub-pc package in
Debian since tag 2.00-10 contained some version of reading
/etc/default/grub.d/*.cfg to read additional configuration without
triggering a ucf missmatch.

Reported-by: Curt Brune <c...@cumulusnetworks.com>
Signed-off-by: Jonathan Toppins <jtopp...@cumulusnetworks.com>
---

Please consider this for backport to Jessie, I was able to cherry-pick
this patch cleanly on top of version 1.117+deb8u1. Also of note I only
tested with a rebuilt Jessie installer using monolithic and localudebs
version of grub-installer udeb.

Thanks!

 grub-installer | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/grub-installer b/grub-installer
index 8b4531231e09..c6d911e882d8 100755
--- a/grub-installer
+++ b/grub-installer
@@ -1151,16 +1151,9 @@ if [ "$serial" ] ; then
                mv $ROOT/boot/grub/$menu_file.new $ROOT/boot/grub/$menu_file
                ;;
            grub-pc|grub-efi*)
-               if grep -q "^GRUB_TERMINAL=" $ROOT/etc/default/grub; then
-                       sed -i $ROOT/etc/default/grub -e 
"s/^\(GRUB_TERMINAL\)=.*/\1=serial/g"
-               else
-                       echo "GRUB_TERMINAL=serial" >> $ROOT/etc/default/grub
-               fi
-               if grep -q "^GRUB_SERIAL_COMMAND=" $ROOT/etc/default/grub ; then
-                       sed -i $ROOT/etc/default/grub -e 
"s/^\(GRUB_SERIAL_COMMAND\)=.*/\1=\"`grub_serial_console $serial`\"/g"
-               else
-                       echo "GRUB_SERIAL_COMMAND=\"`grub_serial_console 
$serial`\"" >> $ROOT/etc/default/grub
-               fi
+               mkdir -p $ROOT/etc/default/grub.d
+               echo "GRUB_TERMINAL=serial" > 
$ROOT/etc/default/grub.d/00-installer-defaults.cfg
+               echo "GRUB_SERIAL_COMMAND=\"`grub_serial_console $serial`\"" >> 
$ROOT/etc/default/grub.d/00-installer-defaults.cfg
                update_grub # propagate to grub.cfg
                ;;
        esac
-- 
2.1.4

Reply via email to