Handle updating /etc/kernel/cmdline

Resolves: #1969362
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
This commit is contained in:
Robbie Harwood 2022-08-02 20:09:04 +00:00
parent 1a2bab6d67
commit c1550de84a
2 changed files with 29 additions and 1 deletions

View File

@ -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
}

View File

@ -1,6 +1,6 @@
Name: grubby
Version: 8.40
Release: 59%{?dist}
Release: 60%{?dist}
Summary: Command line tool for updating bootloader configs
License: GPLv2+
URL: https://github.com/rhinstaller/grubby
@ -131,6 +131,10 @@ current boot environment.
%{_mandir}/man8/*.8*
%changelog
* Thu Aug 11 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-60
- Handle updating /etc/kernel/cmdline
- Resolves: #1969362
* Wed Jul 20 2022 Robbie Harwood <rharwood@redhat.com> - 8.40-59
- Appease upgrade tests by keeping deprecated version in lockstep
- Resolves: #2105118