Secure Boot GRUB template: be more dynamic + don't overwrite with empty variable
authorMichael Prokop <mika@grml.org>
Wed, 6 Sep 2017 07:20:08 +0000 (09:20 +0200)
committerMichael Prokop <mika@grml.org>
Wed, 6 Sep 2017 15:44:08 +0000 (17:44 +0200)
By searching for grmlenv.cfg we can make it more dynamic
instead of having to hardcode (hd0) which might be wrong
in the grml2usb situation.

There's also no need to set root/prefix multiple times, especially
since we depend on 'root=(hd0)' for the default ISO boot anyway.

Don't overwrite prefix if the grml_orig_prefix variable is empty.

Secure Boot enabled ISOs generated with grml-live >=0.31.0 are supported
with grml2usb >=0.16.0.

templates/secureboot/grub.cfg

index b378aab..b5010f3 100644 (file)
@@ -3,26 +3,24 @@ export grml_orig_prefix
 set grml_orig_root=$root
 export grml_orig_root
 
-set prefix=(hd0)/boot/grub/
-set root=(hd0)
-source (hd0)/boot/grub/grmlenv.cfg
-set prefix=(hd0)/boot/grub/
+search.file /boot/grub/grmlenv.cfg root
+set prefix=($root)/boot/grub/
+source ($root)/boot/grub/grmlenv.cfg
 
 if [ "$grml_secureboot" = false ] ; then
-  set root=(hd0)
   configfile /boot/grub/grub.cfg
+  # if that fails we need to fallback, but how?
 else
-  set prefix=$grml_orig_prefix
-  set root=$grml_orig_root
-
-  set timeout=20
-  set root=(hd0)
+  if [ "$grml_orig_prefix" != "" ] ; then
+    set prefix=$grml_orig_prefix
+  fi
 
   # this is basically a copy of templates/boot/grub/header.cfg but to avoid
   # failures due to Secure Boot restrictions and sourcing addons.cfg via
   # /boot/grub/loopback.cfg (and then showing entries that are at the wrong
   # position as well as don't work at all) we have to specify the appropriate
   # config here
+  set timeout=20
   if loadfont /boot/grub/ascii.pf2 ; then
     set gfxmode=auto
     insmod efi_gop