]> git.proxmox.com Git - grub2.git/commitdiff
Fix setup on Secure Boot systems where cryptodisk is in use
authorHervé Werner <dud225@hotmail.com>
Mon, 28 Jan 2019 16:24:23 +0000 (17:24 +0100)
committerColin Watson <cjwatson@debian.org>
Sun, 26 May 2019 09:06:03 +0000 (10:06 +0100)
On full-encrypted systems, including /boot, the current code omits
cryptodisk commands needed to open the drives if Secure Boot is enabled.
This prevents grub2 from reading any further configuration residing on
the encrypted disk.
This patch fixes this issue by adding the needed "cryptomount" commands in
the load.cfg file that is then copied in the EFI partition.

Bug-Debian: https://bugs.debian.org/917117
Last-Update: 2019-02-10

Patch-Name: uefi-secure-boot-cryptomount.patch

util/grub-install.c

index 5f3217ae43c2d79efafefee398c7e7ae5e95aee5..6462d3c70de3fa0c0815e446bf0888bdcd36ca61 100644 (file)
@@ -1521,6 +1521,23 @@ main (int argc, char *argv[])
          || uefi_secure_boot)
        {
          char *uuid = NULL;
+
+         if (uefi_secure_boot && config.is_cryptodisk_enabled)
+           {
+             if (grub_dev->disk)
+               probe_cryptodisk_uuid (grub_dev->disk);
+
+             for (curdrive = grub_drives + 1; *curdrive; curdrive++)
+               {
+                 grub_device_t dev = grub_device_open (*curdrive);
+                 if (!dev)
+                   continue;
+                 if (dev->disk)
+                   probe_cryptodisk_uuid (dev->disk);
+                 grub_device_close (dev);
+               }
+           }
+
          /*  generic method (used on coreboot and ata mod).  */
          if (!force_file_id
              && grub_fs->fs_uuid && grub_fs->fs_uuid (grub_dev, &uuid))