File: 40-install-grub

package info (click to toggle)
fai 6.5.3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,080 kB
  • sloc: sh: 6,721; perl: 5,625; makefile: 138
file content (51 lines) | stat: -rwxr-xr-x 1,354 bytes parent folder | download | duplicates (2)
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