[pve-devel] [PATCH installer] grub: only set special config for ZFS

Fabian Grünbichler f.gruenbichler at proxmox.com
Mon Jun 28 15:10:41 CEST 2021


and handle that one via a snippet instead of touching the main
'/etc/default/grub' config file.

distributor (and disabling os-prober for PVE) are already handled by the
product-specific meta packages via snippets - proxmox-ve was the last to
join this club in 7.0-2.

Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
proxmox-ve on the beta ISO is still too old, so fully testing requires
`apt update && apt full-upgrade && update-grub` after installing with
this change - or an ISO rebuilt with current proxmox-ve and this change.

 proxinstall | 52 +++-------------------------------------------------
 1 file changed, 3 insertions(+), 49 deletions(-)

diff --git a/proxinstall b/proxinstall
index a6176d2..35a7ad2 100755
--- a/proxinstall
+++ b/proxinstall
@@ -1251,50 +1251,6 @@ 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) = @_;
 
@@ -1829,12 +1785,10 @@ _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";
+	    # add ZFS options while preserving existing kernel cmdline
+	    my $zfs_snippet = "GRUB_CMDLINE_LINUX=\"\$GRUB_CMDLINE_LINUX root=ZFS=$zfspoolname/ROOT/$zfsrootvolname boot=zfs\"";
+	    write_config($zfs_snippet, "$targetdir/etc/default/grub.d/zfs.cfg");
 
 	    write_config("root=ZFS=$zfspoolname/ROOT/$zfsrootvolname boot=zfs", "$targetdir/etc/kernel/cmdline");
 
-- 
2.30.2






More information about the pve-devel mailing list