#13 Transition existing installations to unified GRUB configuration
Merged 3 years ago by javierm. Opened 3 years ago by gicmo.
rpms/ gicmo/grub2 uinfyer  into  rawhide

file modified
+29
@@ -344,6 +344,35 @@ 

        /boot/grub2/ &&

  rm -r /boot/grub2.tmp/ || :

  

+ %posttrans common

+ set -eu

+ 

+ EFI_HOME=/boot/efi/EFI/fedora

+ GRUB_HOME=/boot/grub2

+ 

+ if grep -q "configfile" ${EFI_HOME}/grub.cfg; then

+     exit 0 # already unified, nothing to do

+ fi

+ 

+ # create a stub grub2 config in EFI

+ BOOT_DEVICE=$(df -P /boot | awk 'END{print $1}')

+ BOOT_UUID=$(blkid -s UUID -o value "${BOOT_DEVICE}")

+ GRUB_DIR=$(grub2-mkrelpath ${GRUB_HOME})

+ 

+ cat << EOF > ${EFI_HOME}/grub.cfg.stb

+ search --no-floppy --fs-uuid --set=dev ${BOOT_UUID}

+ set prefix=(\$dev)${GRUB_DIR}

+ export \$prefix

+ configfile \$prefix/grub.cfg

+ EOF

+ 

+ cp -av ${EFI_HOME}/grubenv ${EFI_HOME}/grubenv.rpmsave

+ mv --force ${EFI_HOME}/grubenv ${GRUB_HOME}/grubenv

+ 

+ cp -av ${EFI_HOME}/grub.cfg ${EFI_HOME}/grub.cfg.rpmsave

+ cp -av ${EFI_HOME}/grub.cfg ${GRUB_HOME}/

+ mv ${EFI_HOME}/grub.cfg.stb ${EFI_HOME}/grub.cfg

+ 

  %files common -f grub.lang

  %dir %{_libdir}/grub/

  %dir %{_datarootdir}/grub/

The previous commits, especially b14117, unified the grub config
locations across all platforms. In brief, this means that in the
case of EFI, the config file in the EFI System Partition (ESP)
is now meant to be a small stub config file that will in turn
load the main configuration in /boot/grub2, which is used on
all other platforms as well. For new installations all this is
done by the Anaconda installer. But existing installations also
need to be adapted.
Add a %posttrans script to the grub2-common package that will,
if a non-unified installation is detected, transition it into
a unified one. This is done by moving the main grub.cfg file
from the ESP to /boot/grub2, creating minimal stub on the ESP
instead. Additionally, the grubenv file is also moved from the
ESP to /boot/grub2.
The detection of the non-unified installation is done by
checking if the grub.cfg on the ESP contains the 'configfile'
directive. If so, it is assumed the system has a unified
grub configuration.

Signed-off-by: Christian Kellner christian@kellner.me

Pull-Request has been merged by javierm

3 years ago

Build failed. More information on how to proceed and troubleshoot errors available at https://fedoraproject.org/wiki/Zuul-based-ci

Metadata