1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#! /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
|