From a13e6db5a4f6ff4d538424018d5fad4eca8152db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Sun, 31 May 2020 21:39:55 -0300 Subject: [PATCH] dracut: add EFI kernel hook Also made some small formatting changes. --- srcpkgs/dracut/files/dracut-uefi-hook.confd | 12 ++++++++++ .../dracut/files/kernel-uefi-hook-postinst | 22 +++++++++++++++++++ srcpkgs/dracut/files/kernel-uefi-hook-postrm | 18 +++++++++++++++ srcpkgs/dracut/template | 14 +++++++----- 4 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 srcpkgs/dracut/files/dracut-uefi-hook.confd create mode 100644 srcpkgs/dracut/files/kernel-uefi-hook-postinst create mode 100644 srcpkgs/dracut/files/kernel-uefi-hook-postrm diff --git a/srcpkgs/dracut/files/dracut-uefi-hook.confd b/srcpkgs/dracut/files/dracut-uefi-hook.confd new file mode 100644 index 00000000000..bbc9fded1b3 --- /dev/null +++ b/srcpkgs/dracut/files/dracut-uefi-hook.confd @@ -0,0 +1,12 @@ +# Options for the dracut-uefi kernel hook script installed by the dracut package. + +CREATE_UEFI_BUNDLES=0 +# To allow dracut to create EFI bundles, set +# CREATE_UEFI_BUNDLES=1 +# This requires an EFI stub, usually provided by the gummiboot package + +# Output path for the EFI bundle +UEFI_BUNDLE_PATH="/boot/efi/EFI/Void/linux-${VERSION}.efi" + +# Command line options for the dracut command +# OPTIONS= diff --git a/srcpkgs/dracut/files/kernel-uefi-hook-postinst b/srcpkgs/dracut/files/kernel-uefi-hook-postinst new file mode 100644 index 00000000000..aba62dfb65c --- /dev/null +++ b/srcpkgs/dracut/files/kernel-uefi-hook-postinst @@ -0,0 +1,22 @@ +#!/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 [ "x${CREATE_UEFI_BUNDLES}" != x1 ]; then + exit 0 +fi + +if [ ! -x bin/dracut ]; then + exit 0 +fi + +OPTIONS="${OPTIONS} --force --uefi ${UEFI_BUNDLE_PATH} ${VERSION}" + +dracut ${OPTIONS} +exit $? diff --git a/srcpkgs/dracut/files/kernel-uefi-hook-postrm b/srcpkgs/dracut/files/kernel-uefi-hook-postrm new file mode 100644 index 00000000000..33a63367a04 --- /dev/null +++ b/srcpkgs/dracut/files/kernel-uefi-hook-postrm @@ -0,0 +1,18 @@ +#!/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" +if [ "x${CREATE_UEFI_BUNDLES}" != x1 ]; then + exit 0 +fi + +if [ -f "${UEFI_BUNDLE_PATH}" ]; then + rm -fv "${UEFI_BUNDLE_PATH}" +fi +exit $? diff --git a/srcpkgs/dracut/template b/srcpkgs/dracut/template index 3c6aca0ada6..407e55564f4 100644 --- a/srcpkgs/dracut/template +++ b/srcpkgs/dracut/template @@ -1,10 +1,10 @@ # Template file for 'dracut' pkgname=dracut version=050 -revision=2 +revision=3 build_style=configure configure_args="--prefix=/usr --sysconfdir=/etc" -conf_files="/etc/dracut.conf" +conf_files="/etc/dracut.conf /etc/default/dracut-uefi-hook" hostmakedepends="asciidoc pkg-config" makedepends="libkmod-devel" depends="bash coreutils cpio eudev gzip kmod>=3.7 kpartx util-linux" @@ -16,8 +16,8 @@ distfiles="https://github.com/dracutdevs/dracut/archive/${version}.tar.gz" checksum=f9dbf18597e5929221365964293212c8c9ffb7d84529c5a338c834ecab06e333 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 @@ -40,6 +40,10 @@ 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 + # EFI bundle config and hooks + 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 # 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,7 +56,7 @@ 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 }