diff --git a/grubby-bls b/grubby-bls index af0d82d..0571a0b 100755 --- a/grubby-bls +++ b/grubby-bls @@ -502,6 +502,16 @@ update_bls_fragment() { opts="$(echo "$opts" | sed -e 's/\//\\\//g')" sed -i -e "s/^GRUB_CMDLINE_LINUX.*/GRUB_CMDLINE_LINUX=\\\"${opts}\\\"/" "${grub_etc_default}" fi + + if [[ -f /etc/kernel/cmdline ]]; then + sed -i "s/\(root=[^ ]*\) .*/\1 ${opts}/" /etc/kernel/cmdline + else + # grub2-mkconfig creates this. Do that now. + grub2-mkconfig -o /etc/grub2.cfg + fi + if [[ ! -f /etc/kernel/cmdline ]]; then + echo "No /etc/kernel/cmdline; please report a bug"; + fi fi old_args="$(grub2-editenv "${env}" list | grep kernelopts | sed -e "s/kernelopts=//")" @@ -528,6 +538,20 @@ update_bls_fragment() { fi done + if [[ $param = "ALL" && $bootloader = zipl ]] && [[ -n $remove_args || -n $add_args ]]; then + if [[ ! -f /etc/kernel/cmdline ]]; then + # anaconda could pre-populate this file, but until then, most of + # the time we'll just want the most recent one. This is pretty + # close to the current almost-correct behavior of falling back to + # /proc/cmdline anyhow. + echo "$(get_bls_args -1)" > /etc/kernel/cmdline + fi + + read old_args < /etc/kernel/cmdline + local new_args="$(update_args "${old_args}" "${remove_args}" "${add_args}")" + echo "$new_args" > /etc/kernel/cmdline + fi + update_grubcfg } diff --git a/grubby.spec b/grubby.spec index a44afa7..a6ef7ca 100644 --- a/grubby.spec +++ b/grubby.spec @@ -3,7 +3,7 @@ Name: grubby Version: 8.40 -Release: 63%{?dist} +Release: 64%{?dist} Summary: Command line tool for updating bootloader configs License: GPLv2+ Source1: grubby-bls @@ -83,6 +83,9 @@ fi %{_mandir}/man8/grubby.8* %changelog +* Tue Aug 02 2022 Robbie Harwood - 8.40-64 +- Handle updating /etc/kernel/cmdline + * Thu Jul 21 2022 Fedora Release Engineering - 8.40-63 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild