[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gentoo-dev
Subject:    Re: [gentoo-dev] [PATCH 2/2] dist-kernel-utils.eclass: skip initrd installation when using the uki l
From:       Andrew Ammerlaan <andrewammerlaan () gentoo ! org>
Date:       2023-06-17 18:21:48
Message-ID: 5c62b67f-077d-1be3-655e-a72e56a60332 () gentoo ! org
[Download RAW message or body]

This replaces a workaround with a better one. Instead of tricking 
50-dracut.install with an empty inird file we instruct kernel-install to 
simply skip this plugin.

This way we don't end up with a bunch of confusing empty initrd files in 
/boot. End result is the same.

I've got an upstream PR open to fix the underlying issue (i.e make 
50-dracut.install work properly with uefi=yes and layout=uki): 
https://github.com/dracutdevs/dracut/pull/2405


 From c2d6ecb074d25c70677fa9c371801a0002c9a216 Mon Sep 17 00:00:00 2001
From: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
Date: Fri, 16 Jun 2023 22:51:00 +0200
Subject: [PATCH] dist-kernel-utils.eclass: skip initrd installation when 
using
  uki

Gets rid of a hack that prevents 50-dracut.install from regenerating the 
initrd
when calling kernel-install. Instead instruct kernel-install to simply 
not run
this plugin.

Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
---
  eclass/dist-kernel-utils.eclass | 19 +++++++++++++++----
  1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/eclass/dist-kernel-utils.eclass 
b/eclass/dist-kernel-utils.eclass
index c6892c2f01278..e371e035c8565 100644
--- a/eclass/dist-kernel-utils.eclass
+++ b/eclass/dist-kernel-utils.eclass
@@ -106,10 +106,21 @@ dist-kernel_install_kernel() {
  		# install the combined executable in place of kernel
  		image=${initrd}.efi
  		mv "${initrd}" "${image}" || die
-		# put an empty file in place of initrd.  installing a duplicate
-		# file would waste disk space, and removing it entirely provokes
-		# kernel-install to regenerate it via dracut.
-		> "${initrd}"
+		# We moved the generated initrd, prevent dracut from running again
+		local plugins=()
+		for file in "${EROOT}"/usr/lib/kernel/install.d/*; do
+			if [[ ${file} != */50-dracut.install && \
+				${file} != */51-dracut-rescue.install && \
+				${file} == *.install ]]; then
+					plugins+=( "${file}" )
+			fi
+		done
+		for file in "${EROOT}"/etc/kernel/install.d/*; do
+			if [[ ${file} == *.install ]]; then
+					plugins+=( "${file}" )
+			fi
+		done
+		export KERNEL_INSTALL_PLUGINS="${KERNEL_INSTALL_PLUGINS} ${plugins[@]}"
  	fi

  	ebegin "Installing the kernel via installkernel"


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic