From 3c3d1b21a15e9fa9e08c75508da3ffbb1eb1efeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= Date: Mon, 4 Nov 2024 20:20:43 +0100 Subject: [PATCH] Add variables to BLS entries only if grub is used MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bootloader plugin needs patched BLS entries with the TuneD variables. It seems variables in the BLS entries is grub extension which is not described in the BLS specification. It can cause boot problems with e.g. systemd-boot, thus add variables to BLS entries only if the BLS entries were generated by grub. Resolves: rhbz#2323514 Signed-off-by: Jaroslav Škarvada --- 92-tuned.install | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/92-tuned.install b/92-tuned.install index 0f7bdf3..5864eb9 100755 --- a/92-tuned.install +++ b/92-tuned.install @@ -5,6 +5,9 @@ KERNEL_VERSION="$2" BOOT_DIR_ABS="$3" KERNEL_IMAGE="$4" +# skip if systemd-boot is used +[ "$KERNEL_INSTALL_LAYOUT" = "bls" ] && exit 0 + if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then exit 0 fi @@ -32,16 +35,17 @@ for f in `basename "$MACHINE_ID"`-*.conf; do continue fi - if [ "${ARCH:0:4}" = "s390" ]; then - # On s390(x), the zipl bootloader doesn't support variables, - # unpatch TuneD variables which could be there from the previous TuneD - # versions - grep -q '^\s*options\s\+.*\$tuned_params' "$f" && sed -i '/^\s*options\s\+/ s/\s\+\$tuned_params\b//g' "$f" - grep -q '^\s*initrd\s\+.*\$tuned_initrd' "$f" && sed -i '/^\s*initrd\s\+/ s/\s\+\$tuned_initrd\b//g' "$f" - else - # Not on s390(x), add TuneD variables if they are not there + if grep -q '\(\s*grub_\)\|\($grub\)' "$f" && [ "${ARCH:0:4}" != "s390" ]; then + # grub generated BLS entries detected and not on s390(x) where zipl is used, + # there is high chance that variables in BLS entries will be supported (grub + # extension is unsupported by zipl) grep -q '^\s*options\s\+.*\$tuned_params' "$f" || sed -i '/^\s*options\s\+/ s/\(.*\)/\1 \$tuned_params/' "$f" grep -q '^\s*initrd\s\+.*\$tuned_initrd' "$f" || sed -i '/^\s*initrd\s\+/ s/\(.*\)/\1 \$tuned_initrd/' "$f" + else + # BLS entries generated by some unsupported tool or on s390x, unpatch TuneD + # variables which could be there from the previous TuneD versions + grep -q '^\s*options\s\+.*\$tuned_params' "$f" && sed -i '/^\s*options\s\+/ s/\s\+\$tuned_params\b//g' "$f" + grep -q '^\s*initrd\s\+.*\$tuned_initrd' "$f" && sed -i '/^\s*initrd\s\+/ s/\s\+\$tuned_initrd\b//g' "$f" fi done popd &> /dev/null