]> git.proxmox.com Git - pve-installer.git/commitdiff
override grub default config via installer
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 25 May 2021 17:51:03 +0000 (19:51 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 25 May 2021 17:54:32 +0000 (19:54 +0200)
We used to ship our own grub in the installer, originally due to ZFS
support, but we also used it to setup a slightly modified
`/etc/default/grub`. We do not need a self-build grub for technical
reasons like ZFS support anymore, so avoid the need to ship it and
move over deploying the config changes to the installer.

Just write out the whole config, much easier to see what's going on
compared to some `sed` calls.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
proxinstall

index 6d3f4e0185206062a03b7568ca1755f8fd120d84..5146dd0622bbed937e6c029fc606ea5e2c76a7e5 100755 (executable)
@@ -1248,6 +1248,50 @@ sub prepare_grub_efi_boot_esp {
     die "failed to prepare EFI boot using Grub on '$espdev': $err" if $err;
 }
 
+sub set_grub_default_cfg {
+    my ($targetdir) = @_;
+
+    my $grub_cfg = <<EOF;
+# If you change this file, run 'update-grub' afterwards to update
+# /boot/grub/grub.cfg.
+# For full documentation of the options in this file, see:
+#   info -f grub -n 'Simple configuration'
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISTRIBUTOR="$setup->{fullname}"
+GRUB_CMDLINE_LINUX_DEFAULT="quiet"
+GRUB_CMDLINE_LINUX=""
+
+# Disable os-prober, it might add menu entries for each guest
+GRUB_DISABLE_OS_PROBER=true
+
+# Uncomment to enable BadRAM filtering, modify to suit your needs
+# This works with Linux (no patch required) and with any kernel that obtains
+# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
+#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
+
+# Uncomment to disable graphical terminal (grub-pc only)
+#GRUB_TERMINAL=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+#GRUB_GFXMODE=640x480
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Disable generation of recovery mode menu entries
+GRUB_DISABLE_RECOVERY="true"
+
+# Uncomment to get a beep at grub start
+#GRUB_INIT_TUNE="480 440 1"
+EOF
+
+    write_config($grub_cfg, "$targetdir/etc/default/grub")
+}
+
 sub extract_data {
     my ($basefile, $targetdir) = @_;
 
@@ -1769,6 +1813,9 @@ _EOD
 
        update_progress(0.8, 0.95, 1, "make system bootable");
 
+       # NOTE: rewrites /etc/default/grub completely, all iterative changes need to be after this
+       set_grub_default_cfg($targetdir);
+
        if ($use_zfs) {
            syscmd("sed -i -e 's/^GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"root=ZFS=$zfspoolname\\/ROOT\\/$zfsrootvolname boot=zfs\"/' $targetdir/etc/default/grub") == 0 ||
                die "unable to update /etc/default/grub\n";