#! /bin/bash

# (c) Michael Goetze, 2011, mgoetze@mgoetze.net
# (c) Thomas Lange 2014-2025

error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code

if [ -r $LOGDIR/disk_var.sh ] ; then
	. $LOGDIR/disk_var.sh
else
	echo "disk_var.sh not found!"
	exit 1
fi

version=$($ROOTCMD rpm -qv kernel | cut -d- -f2-)
mount -o bind /dev $target/dev

if [ -d $target/sys/firmware/efi/efivars ]; then
    # UEFI environment
    rel=$(sed 's/ release.\+//' $target/etc/redhat-release)
    rel1=${rel// *}
    rel1=${rel1,,}
    if [ -f $target/boot/efi/EFI/$rel1/grubx64.efi ]; then
        loader=/EFI/$rel1/grubx64.efi
    fi
    if [ -f $target/boot/efi/EFI/$rel1/shimx64.efi ]; then
        loader=/EFI/$rel1/shimx64.efi
    fi
    $ROOTCMD efibootmgr -c -w -L "$rel" -d $BOOT_DEVICE -p 1 -l $loader

    # fix the wrong initrd loader entry
    id=$(cat $target/etc/machine-id)
    f=$target/boot/loader/entries/$id-$version.conf
    if [ -f $f ]; then
        sed -i "s#^initrd.\+#initrd /boot/initramfs-$version.img#" $f
    fi
else
    $ROOTCMD grub2-install --no-floppy "$BOOT_DEVICE"
fi

$ROOTCMD grub2-mkconfig --output=/boot/grub2/grub.cfg

umount $target/dev

echo ""
echo "Grub installed on $BOOT_DEVICE"
echo "Grub boot partition is $BOOT_PARTITION"
echo "Root partition is $ROOT_PARTITION"
echo "Boot kernel: $version"

exit $error
