void-packages/srcpkgs/efibootmgr/files/kernel.d/efibootmgr.post-install
Alain Kalker 97af122828 efibootmgr: add option to set partition number of EFI partition
This is useful when ESP is not the first partition, for instance if it
is added after some existing partitions during switch from BIOS to
UEFI boot.
2019-07-08 21:25:57 +02:00

45 lines
1.1 KiB
Bash

#!/usr/bin/sh
#
# Kernel hook for efibootmgr.
#
# Arguments passed to this script: $1 pkgname, $2 version.
#
PKGNAME="$1"
VERSION="$2"
. "${ROOTDIR}/etc/default/efibootmgr-kernel-hook"
if [ "x${MODIFY_EFI_ENTRIES}" != x1 ]; then
exit 0
fi
OPTIONS="${OPTIONS} initrd=/initramfs-${VERSION}.img"
args=""
if [ "x${DISK}" != x ]; then
args="-d $DISK"
fi
if [ "x${PART}" != x ]; then
args="$args -p $PART"
fi
# get major version, e.g. "4.8" for "linux4.8"
major_version=$(echo $PKGNAME | cut -c 6-)
# look for previous entry for this major kernel version
existing_entry=$(efibootmgr | grep "Void Linux with kernel ${major_version}")
# get the boot order
# this is required because when in the next step the existing entry is removed,
# it is also removed from the order so it needs to be restored later
bootorder=$(efibootmgr |grep "BootOrder: " |cut -c 12-)
# if existing, remove it
if [ "$existing_entry" != "" ]; then
/etc/kernel.d/post-remove/50-efibootmgr $PKGNAME
fi
# create the new entry
efibootmgr -qc $args -L "Void Linux with kernel ${major_version}" -l /vmlinuz-${VERSION} -u "${OPTIONS}"
# restore the boot order
efibootmgr -qo $bootorder