From adcc780eaa9524c28ccb6074886bed62935c8bbb Mon Sep 17 00:00:00 2001 From: Mike Gilbert Date: Fri, 26 May 2023 14:18:31 -0400 Subject: [PATCH] Fix path to UEFI stub on split-usr systems systemd always installs the UEFI stub in ${prefix}/lib/systemd/boot/efi. On split-usr systems, systemdutildir is ${rootprefix}/lib/systemd, which makes useless for finding the UEFI stub. Instead, grab 'prefix' from systemd.pc and store it in 'systemd_prefix'. Signed-off-by: Mike Gilbert --- dracut.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dracut.sh b/dracut.sh index e87e31f3..90d8e02a 100755 --- a/dracut.sh +++ b/dracut.sh @@ -1395,9 +1395,10 @@ abs_outfile=$(readlink -f "$outfile") && outfile="$abs_outfile" # set_global_var [] ... set_global_var() { local _pkgconfig="$1" - local _var="$2" + local _pkgvar="${2%:*}" + local _var="${2#*:}" [[ -z ${!_var} || ! -d ${dracutsysrootdir}${!_var} ]] \ - && export "$_var"="$(pkg-config "$_pkgconfig" --variable="$_var" 2> /dev/null)" + && export "$_var"="$(pkg-config "$_pkgconfig" --variable="$_pkgvar" 2> /dev/null)" if [[ -z ${!_var} || ! -d ${dracutsysrootdir}${!_var} ]]; then shift 2 if (($# == 1)); then @@ -1434,6 +1435,7 @@ set_global_var "udev" "udevrulesdir" "${udevdir}/rules.d" set_global_var "udev" "udevrulesconfdir" "${udevconfdir}/rules.d" # systemd global variables +set_global_var "systemd" "prefix:systemd_prefix" "/usr" set_global_var "systemd" "systemdutildir" "/lib/systemd:/lib/systemd/systemd-udevd" "/usr/lib/systemd:/usr/lib/systemd/systemd-udevd" set_global_var "systemd" "systemdutilconfdir" "/etc/systemd" set_global_var "systemd" "environment" "/usr/lib/environment.d" @@ -1524,7 +1526,7 @@ if [[ ! $print_cmdline ]]; then esac if ! [[ -s $uefi_stub ]]; then - uefi_stub="$dracutsysrootdir${systemdutildir}/boot/efi/linux${EFI_MACHINE_TYPE_NAME}.efi.stub" + uefi_stub="$dracutsysrootdir${systemd_prefix}/lib/systemd/boot/efi/linux${EFI_MACHINE_TYPE_NAME}.efi.stub" fi if ! [[ -s $uefi_stub ]]; then -- 2.40.1