Move grubenv to EFI dir
If the grubenv is regenerated, its changes won't be available to UEFI boot systems unless the changed grubenv is copied to the EFI directory. This change copies the grubenv to the EFI directory when the grub.cfg is copied. Change-Id: I512502117a6bf1e6122fdfd8965ca488b4a5bae4
This commit is contained in:
parent
59420be677
commit
b01aac9715
@ -55,6 +55,16 @@ fi
|
||||
|
||||
echo "Installing GRUB2..."
|
||||
|
||||
# This might be better factored out into a per-distro 'install-bootblock'
|
||||
# helper.
|
||||
if [ -d /boot/grub2 ]; then
|
||||
GRUB_CFG=/boot/grub2/grub.cfg
|
||||
GRUBENV=/boot/grub2/grubenv
|
||||
elif [ -d /boot/grub ]; then
|
||||
GRUB_CFG=/boot/grub/grub.cfg
|
||||
GRUBENV=/boot/grub/grubenv
|
||||
fi
|
||||
|
||||
# When using EFI image-based builds, particularly rhel element
|
||||
# based on RHEL>=8.2 .qcow2, we might have /boot/grub2/grubenv
|
||||
# as a dangling symlink to /boot/efi because we have extracted
|
||||
@ -62,8 +72,8 @@ echo "Installing GRUB2..."
|
||||
# boot partition from the image. grub2-install calls rename()
|
||||
# on this file, so if it's a dangling symlink it errors. Just
|
||||
# remove it if it exists.
|
||||
if [[ -L /boot/grub2/grubenv ]]; then
|
||||
rm -f /boot/grub2/grubenv
|
||||
if [[ -L $GRUBENV ]]; then
|
||||
rm -f $GRUBENV
|
||||
fi
|
||||
|
||||
# We need --force so grub does not fail due to being installed on the
|
||||
@ -145,14 +155,6 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
# This might be better factored out into a per-distro 'install-bootblock'
|
||||
# helper.
|
||||
if [ -d /boot/grub2 ]; then
|
||||
GRUB_CFG=/boot/grub2/grub.cfg
|
||||
elif [ -d /boot/grub ]; then
|
||||
GRUB_CFG=/boot/grub/grub.cfg
|
||||
fi
|
||||
|
||||
# Override the root device to the default label, and disable uuid
|
||||
# lookup.
|
||||
echo "GRUB_DEVICE=LABEL=${DIB_ROOT_LABEL}" >> /etc/default/grub
|
||||
@ -238,12 +240,15 @@ fi
|
||||
if [[ ${DIB_BLOCK_DEVICE} == "efi" ]]; then
|
||||
sed -i 's%\(linux\|initrd\)16 /boot%\1efi /boot%g' $GRUB_CFG
|
||||
|
||||
# Finally copy the grub.cfg to the EFI specific dir to support
|
||||
# functionality like secure boot. We make a copy because
|
||||
# Finally copy the grub.cfg and grubenv to the EFI specific dir
|
||||
# to support functionality like secure boot. We make a copy because
|
||||
# /boot and /boot/efi may be different partitions and uefi looks
|
||||
# for a specific partition UUID preventing symlinks from working.
|
||||
if [ -d /boot/efi/$EFI_BOOT_DIR ] ; then
|
||||
cp $GRUB_CFG /boot/efi/$EFI_BOOT_DIR/grub.cfg
|
||||
if [ -a $GRUBENV ]; then
|
||||
cp $GRUBENV /boot/efi/$EFI_BOOT_DIR/grubenv
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user