refind: add hook to update refind.conf on changing kernel
This commit is contained in:
parent
9f37d4514f
commit
0f7689906e
|
@ -0,0 +1,54 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Kernel hook for refind.
|
||||||
|
#
|
||||||
|
# Arguments passed to this script: $1 pkgname, $2 version.
|
||||||
|
#
|
||||||
|
PKGNAME="$1"
|
||||||
|
VERSION="$2"
|
||||||
|
|
||||||
|
. "${ROOTDIR}/etc/default/refind-kernel-hook.conf"
|
||||||
|
if [ "z$UPDATE_REFIND_CONF" != "z1" ]; then
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Default refind.conf
|
||||||
|
REFIND_CONF="${REFIND_CONF:-/boot/EFI/refind/refind.conf}"
|
||||||
|
|
||||||
|
zrefind_dir="${REFIND_CONF%/*}"
|
||||||
|
mkdir -p "$zrefind_dir"
|
||||||
|
touch "$REFIND_CONF"
|
||||||
|
|
||||||
|
zefi_mountpoint=$(df -P "$REFIND_CONF" | awk 'NR==2{print $6}')
|
||||||
|
zicon="${zrefind_dir#$zefi_mountpoint}/icons/os_void.png"
|
||||||
|
|
||||||
|
mkedscript() {
|
||||||
|
zversion=$(echo $VERSION | sed 's/[.]/[.]/g')
|
||||||
|
zexpr='^menuentry "Void Linux '"$zversion"'" {$'
|
||||||
|
if grep -q "$zexpr" "$REFIND_CONF"; then
|
||||||
|
# Do not merge into /expr/,/}/d, it doesn't work
|
||||||
|
printf '%s\n' "/$zexpr/" '.,/}/d'
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
1
|
||||||
|
/^menuentry /
|
||||||
|
i
|
||||||
|
menuentry "Void Linux $VERSION" {
|
||||||
|
icon $zicon
|
||||||
|
volume "Void Linux"
|
||||||
|
loader /vmlinuz-$VERSION
|
||||||
|
initrd /initramfs-$VERSION.img
|
||||||
|
options "$OPTIONS"
|
||||||
|
}
|
||||||
|
.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if ! grep -q '^timeout ' "$REFIND_CONF"; then
|
||||||
|
printf '%s\n' 1i "timeout 20" .
|
||||||
|
fi
|
||||||
|
echo wq
|
||||||
|
}
|
||||||
|
|
||||||
|
mkedscript | ed "$REFIND_CONF" >/dev/null
|
||||||
|
exit 0
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Kernel hook for refind.
|
||||||
|
#
|
||||||
|
# Arguments passed to this script: $1 pkgname, $2 version.
|
||||||
|
#
|
||||||
|
PKGNAME="$1"
|
||||||
|
VERSION="$2"
|
||||||
|
|
||||||
|
. "${ROOTDIR}/etc/default/refind-kernel-hook.conf"
|
||||||
|
if [ "z$UPDATE_REFIND_CONF" != "z1" ]; then
|
||||||
|
exit 0;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Default refind.conf
|
||||||
|
REFIND_CONF="${REFIND_CONF:-/boot/EFI/refind/refind.conf}"
|
||||||
|
|
||||||
|
[ -f "$REFIND_CONF" ] || exit 0
|
||||||
|
|
||||||
|
tmpfile=$(mktemp /tmp/refind.XXXXXXX)
|
||||||
|
zversion=$(echo $VERSION | sed 's/[.]/[.]/g')
|
||||||
|
sed "/^menuentry \"Void Linux $zversion\" [{]\$/,/[}]/d" "$REFIND_CONF" >"$tmpfile"
|
||||||
|
|
||||||
|
if ! cmp -s "$REFIND_CONF" "$tmpfile"; then
|
||||||
|
mv "$tmpfile" "$REFIND_CONF"
|
||||||
|
else
|
||||||
|
rm -f "$tmpfile"
|
||||||
|
fi
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Change this line to 1 to update refind conf whenever new kernel is installed
|
||||||
|
UPDATE_REFIND_CONF=0
|
||||||
|
|
||||||
|
# refind.conf location
|
||||||
|
# It usually stay in
|
||||||
|
#
|
||||||
|
# /boot/EFI/refind/refind.conf
|
||||||
|
# if you use all default configuration and EFI partition mounted to /boot
|
||||||
|
# /boot/efi/EFI/refind/refind.conf
|
||||||
|
# if using default configuration and EFI partition mounted to /boot/efi
|
||||||
|
# /boot/EFI/BOOT/refind.conf
|
||||||
|
# if you run refind-install ==usedefault and EFI partition mounted to /boot
|
||||||
|
# /boot/efi/EFI/BOOT/refind.conf
|
||||||
|
# likewise, EFI mounted to /boot/efi
|
||||||
|
# /efi/EFI/refind/refind.conf
|
||||||
|
# /eif/EFI/BOOT/refind.conf
|
||||||
|
REFIND_CONF=/boot/EFI/refind/refind.conf
|
||||||
|
|
||||||
|
# addition kernel cmdline
|
||||||
|
OPTIONS="quiet"
|
|
@ -1,15 +1,16 @@
|
||||||
# Template file for 'refind'
|
# Template file for 'refind'
|
||||||
pkgname=refind
|
pkgname=refind
|
||||||
version=0.11.4
|
version=0.11.4
|
||||||
revision=1
|
revision=2
|
||||||
makedepends="gnu-efi-libs git"
|
makedepends="gnu-efi-libs git"
|
||||||
depends="bash dosfstools efibootmgr"
|
depends="bash dosfstools efibootmgr"
|
||||||
short_desc="An EFI boot manager utility"
|
short_desc="EFI boot manager utility"
|
||||||
maintainer="Julio Galvan <juliogalvan@protonmail.com>"
|
maintainer="Julio Galvan <juliogalvan@protonmail.com>"
|
||||||
license="GPL-3.0-only, BSD-3-Clause"
|
license="GPL-3.0-only, BSD-3-Clause"
|
||||||
homepage="https://sourceforge.net/projects/refind/"
|
homepage="https://sourceforge.net/projects/refind/"
|
||||||
distfiles="${SOURCEFORGE_SITE}/refind/refind-src-${version}.tar.gz"
|
distfiles="${SOURCEFORGE_SITE}/refind/refind-src-${version}.tar.gz"
|
||||||
checksum=39baf140603951da098238c1cbf4176fdd7d4a45fab0399e9985ad7368034dae
|
checksum=39baf140603951da098238c1cbf4176fdd7d4a45fab0399e9985ad7368034dae
|
||||||
|
conf_files="/etc/default/refind-kernel-hook.conf"
|
||||||
|
|
||||||
case "$XBPS_TARGET_MACHINE" in
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
x86_64|i686|aarch64) ;;
|
x86_64|i686|aarch64) ;;
|
||||||
|
@ -85,4 +86,9 @@ do_install() {
|
||||||
vmkdir etc/refind.d
|
vmkdir etc/refind.d
|
||||||
vcopy keys /etc/refind.d/
|
vcopy keys /etc/refind.d/
|
||||||
|
|
||||||
|
vinstall "${FILESDIR}/refind-kernel-hook.conf" 644 etc/default
|
||||||
|
vinstall ${FILESDIR}/kernel.post-install 744 \
|
||||||
|
etc/kernel.d/post-install 50-refind
|
||||||
|
vinstall ${FILESDIR}/kernel.post-remove 744 \
|
||||||
|
etc/kernel.d/post-remove 50-refind
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue