dracut: add UEFI bundle hook in dracut-uefi subpkg

Restricted to i686* and x86_64* for now.

Other changes:

- small formatting changes
- use relative path in kernel-hook-postrm
This commit is contained in:
Érico Rolim 2020-05-31 21:39:55 -03:00 committed by Danh Doan
parent be93dc992b
commit 77489bed54
6 changed files with 92 additions and 6 deletions

1
srcpkgs/dracut-uefi Symbolic link
View file

@ -0,0 +1 @@
dracut

View file

@ -0,0 +1,19 @@
# Options for the dracut-uefi kernel hook script installed by the dracut package.
# To enable EFI bundle creation in dracut, uncomment
#CREATE_UEFI_BUNDLES=yes
# This requires an EFI stub, provided by the gummiboot package,
# as well as setting the kernel command line.
# Booting without a kernel command line is unsupported.
# You can set the kernel command line with
#KERNEL_CMDLINE="loglevel=4 slub_debug=P page_poison=1"
# or by setting kernel_cmdline in a dracut.conf(5) file.
# The bundle can also use the command line from a bootloader / boot manager
# if Secure Boot is disabled.
# You can set command line options for the dracut command
#DRACUT_OPTIONS=
# Output directory for the EFI bundle
#UEFI_BUNDLE_DIR="boot/efi/EFI/void/"

View file

@ -7,7 +7,7 @@
PKGNAME="$1"
VERSION="$2"
if [ -f /boot/initramfs-${VERSION}.img ]; then
rm -f /boot/initramfs-${VERSION}.img
if [ -f boot/initramfs-${VERSION}.img ]; then
rm -f boot/initramfs-${VERSION}.img
fi
exit $?

View file

@ -0,0 +1,23 @@
#!/bin/sh
#
# Kernel post-install hook for dracut EFI bundle.
#
# Arguments passed to this script: $1 pkgname, $2 version.
#
PKGNAME="$1"
VERSION="$2"
. "${ROOTDIR}/etc/default/dracut-uefi-hook"
if [ -z "${CREATE_UEFI_BUNDLES}" ]; then
exit 0
fi
if [ ! -x bin/dracut ]; then
exit 0
fi
mkdir -p ${UEFI_BUNDLE_DIR:=boot/efi/EFI/void}
dracut -q --force ${KERNEL_CMDLINE:+--kernel-cmdline="${KERNEL_CMDLINE}"} ${DRACUT_OPTIONS} \
--uefi ${UEFI_BUNDLE_DIR}/linux-${VERSION}.efi ${VERSION}
exit $?

View file

@ -0,0 +1,17 @@
#!/bin/sh
#
# Kernel post-remove hook for dracut EFI bundle.
#
# Arguments passed to this script: $1 pkgname, $2 version.
#
PKGNAME="$1"
VERSION="$2"
. "${ROOTDIR}/etc/default/dracut-uefi-hook"
: "${UEFI_BUNDLE_DIR:=boot/efi/EFI/void}"
if [ -f "${UEFI_BUNDLE_DIR}/linux-${VERSION}.efi" ]; then
rm -fv "${UEFI_BUNDLE_DIR}/linux-${VERSION}.efi"
fi
exit $?

View file

@ -1,7 +1,7 @@
# Template file for 'dracut'
pkgname=dracut
version=050
revision=3
revision=4
build_style=configure
configure_args="--prefix=/usr --sysconfdir=/etc"
conf_files="/etc/dracut.conf"
@ -14,10 +14,11 @@ license="GPL-2.0-or-later, LGPL-2.0-or-later"
homepage="http://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html"
distfiles="https://github.com/dracutdevs/dracut/archive/${version}.tar.gz"
checksum=f9dbf18597e5929221365964293212c8c9ffb7d84529c5a338c834ecab06e333
subpackages="dracut-network"
make_dirs="
/etc/dracut.conf.d 0755 root root
/usr/lib/dracut/dracut.conf.d 0755 root root"
/etc/dracut.conf.d 0755 root root
/usr/lib/dracut/dracut.conf.d 0755 root root"
case "$XBPS_TARGET_MACHINE" in
*-musl) # Add musl-fts implementation
@ -25,6 +26,13 @@ case "$XBPS_TARGET_MACHINE" in
;;
esac
case "$XBPS_TARGET_MACHINE" in
i686*|x86_64*) # archs supported by dracut for EFI bundle
_efi_bundle=1
subpackages+=" dracut-uefi"
;;
esac
do_build() {
case "$XBPS_TARGET_MACHINE" in
*-musl) make ${makejobs} LDLIBS="-lfts" ;;
@ -40,6 +48,13 @@ post_install() {
# kernel hooks.
vinstall ${FILESDIR}/kernel-hook-postinst 755 etc/kernel.d/post-install 20-dracut
vinstall ${FILESDIR}/kernel-hook-postrm 755 etc/kernel.d/post-remove 20-dracut
if [ "${_efi_bundle}" ]; then
vinstall ${FILESDIR}/dracut-uefi-hook.confd 644 etc/default dracut-uefi-hook
vinstall ${FILESDIR}/kernel-uefi-hook-postinst 755 etc/kernel.d/post-install 20-dracut-uefi
vinstall ${FILESDIR}/kernel-uefi-hook-postrm 755 etc/kernel.d/post-remove 20-dracut-uefi
fi
# We don't need the systemd stuff.
rm -rf ${DESTDIR}/usr/lib/dracut/modules.d/*systemd*
rm -f ${DESTDIR}/usr/share/man/man8/*.service.*
@ -52,8 +67,19 @@ dracut-network_package() {
archs=noarch
pkg_install() {
for f in 40network 90livenet 95fcoe 95iscsi \
95nbd 95nfs 95zfcp 95znet; do
95nbd 95nfs 95zfcp 95znet; do
vmove usr/lib/dracut/modules.d/${f}
done
}
}
dracut-uefi_package() {
depends="binutils gummiboot dracut-${version}_${revision}"
short_desc+=" - UEFI bundle hook"
conf_files="/etc/default/dracut-uefi-hook"
pkg_install() {
vmove etc/kernel.d/post-install/20-dracut-uefi
vmove etc/kernel.d/post-remove/20-dracut-uefi
vmove etc/default/dracut-uefi-hook
}
}