void-packages/srcpkgs/efibootmgr/files/kernel.d/efibootmgr.post-install

46 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