DistroBaker 73cad9
From 79fa095319696a9e91ab35cc694cdf9919a3428f Mon Sep 17 00:00:00 2001
DistroBaker 73cad9
From: Javier Martinez Canillas <javierm@redhat.com>
DistroBaker 73cad9
Date: Mon, 22 Feb 2021 19:25:01 +0100
DistroBaker 73cad9
Subject: [PATCH] Determine GRUB directory relative path to use in config file
DistroBaker 73cad9
DistroBaker 73cad9
Currently Anaconda is only checking whether /boot/ is a mount point or not
DistroBaker 73cad9
to use the proper relative path to the GRUB directory. But there are more
DistroBaker 73cad9
cases than this, for example /boot/grub2 could be a symlink or a subvolume
DistroBaker 73cad9
in a btrfs filesystem.
DistroBaker 73cad9
DistroBaker 73cad9
Use the grub2-mkrelpath tool to figure out the actual relative path that
DistroBaker 73cad9
has to be used in the GRUB config file.
DistroBaker 73cad9
DistroBaker 73cad9
Resolves: rhbz#1928588
DistroBaker 73cad9
DistroBaker 73cad9
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
DistroBaker 73cad9
---
DistroBaker 73cad9
 pyanaconda/modules/storage/bootloader/efi.py | 7 ++++---
DistroBaker 73cad9
 1 file changed, 4 insertions(+), 3 deletions(-)
DistroBaker 73cad9
DistroBaker 73cad9
diff --git a/pyanaconda/modules/storage/bootloader/efi.py b/pyanaconda/modules/storage/bootloader/efi.py
DistroBaker 73cad9
index 8c08b8c68d..425cb31954 100644
DistroBaker 73cad9
--- a/pyanaconda/modules/storage/bootloader/efi.py
DistroBaker 73cad9
+++ b/pyanaconda/modules/storage/bootloader/efi.py
DistroBaker 73cad9
@@ -173,10 +173,11 @@ class EFIGRUB(EFIBase, GRUB2):
DistroBaker 73cad9
         with open(config_path, "w") as fd:
DistroBaker 73cad9
             grub_dir = self.config_dir
DistroBaker 73cad9
             fs_uuid = self.stage2_device.format.uuid
DistroBaker 73cad9
-            mountpoint = self.stage2_device.format.mountpoint
DistroBaker 73cad9
 
DistroBaker 73cad9
-            if mountpoint != "/" and grub_dir.startswith(mountpoint):
DistroBaker 73cad9
-                grub_dir = grub_dir[len(mountpoint):]
DistroBaker 73cad9
+            grub_dir = util.execWithCapture("grub2-mkrelpath", [grub_dir],
DistroBaker 73cad9
+                                            root=conf.target.system_root)
DistroBaker 73cad9
+            if not grub_dir:
DistroBaker 73cad9
+                raise BootLoaderError("Could not get GRUB directory path")
DistroBaker 73cad9
 
DistroBaker 73cad9
             fd.write("search --no-floppy --fs-uuid --set=dev %s\n" % fs_uuid)
DistroBaker 73cad9
             fd.write("set prefix=($dev)%s\n" % grub_dir)
DistroBaker 73cad9
-- 
DistroBaker 73cad9
2.26.2
DistroBaker 73cad9