On Wed, Dec 21, 2022 at 04:43:50PM +0100, Philipp Rudo wrote:
Hi Coiby,
On Tue, 20 Dec 2022 19:28:38 +0800
Coiby Xu <coxu(a)redhat.com> wrote:
> Currently when using anaconda to install the OS, the following errors
> occur,
>
> INF packaging: Configuring (running scriptlet for):
kernel-core-5.14.0-70.el9.x86_64 ...
> INF dnf.rpm: grep: /boot/grub2/grubenv: No such file or directory
> grep: /boot/grub2/grubenv: No such file or directory
> grep: /boot/grub2/grubenv: No such file or directory
> grep: /boot/grub2/grubenv: No such file or directory
> ...
> INF packaging: Configuring (running scriptlet for):
kexec-tools-2.0.23-9.el9.x86_64 ...
> INF dnf.rpm: grep: /boot/grub2/grubenv: No such file or directory
> grep: /boot/grub2/grubenv: No such file or directory
> grep: /boot/grub2/grubenv: No such file or directory
>
> Or for s390, the following errors occur,
>
> INF packaging: Configuring (running scriptlet for):
kernel-core-5.14.0-71.el9.s390x ...
> 03:37:51,232 INF dnf.rpm: grep: /etc/zipl.conf: No such file or directory
> grep: /etc/zipl.conf: No such file or directory
> grep: /etc/zipl.conf: No such file or directory
>
> INF packaging: Configuring (running scriptlet for):
kexec-tools-2.0.23-9_1.el9_0.s390x ...
> INF dnf.rpm: grep: /etc/zipl.conf: No such file or directory
>
> This is because when anaconda installs the packages, bootloader hasn't
> been installed and /boot/grub2/grubenv or /etc/zipl.conf doesn't exist.
> So don't try to update crashkernel when bootloader isn't read to avoid
s/read/ready/ ?
> the above errors.
>
> Note this is the second attempt to fix this issue. Previously a file
> /tmp/kexec_tools_package_install was created to avoid running the
> related code thus to avoid the above errors but unfortunately that
> approach has two issues a) somehow osbuild doesn't delete it for RHEL b)
> this file could still exist if users manually remove kexec-tools.
>
and maybe add a
Fixes: e218128 ("Only try to reset crashkernel for osbuild during package
install")
> Reported-by: Jan Stodola <jstodola(a)redhat.com>
> Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Other than that the code looks fine. Let's hope that this corner case
is finally fixed...
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Patch has been merged with the above two suggestions applied, thanks!
> ---
> kdumpctl | 17 ++++++++---------
> kexec-tools.spec | 5 -----
> 2 files changed, 8 insertions(+), 14 deletions(-)
>
> diff --git a/kdumpctl b/kdumpctl
> index 3cad3dd0..361bf51a 100755
> --- a/kdumpctl
> +++ b/kdumpctl
> @@ -1611,10 +1611,13 @@ reset_crashkernel()
> fi
> }
>
> -# to tell if it's package install other than upgrade
> -_is_package_install()
> +_is_bootloader_installed()
> {
> - [[ -f /tmp/kexec_tools_package_install ]]
> + if [[ $(uname -r) == s390x ]]; then
> + test -f /etc/zipl.conf
> + else
> + test -f /boot/grub2/grub.cfg
> + fi
> }
>
> # update the crashkernel value in GRUB_ETC_DEFAULT if necessary
> @@ -1626,10 +1629,6 @@ update_crashkernel_in_grub_etc_default_after_update()
> local _crashkernel _fadump_val
> local _dump_mode _old_default_crashkernel _new_default_crashkernel
>
> - if _is_package_install; then
> - return
> - fi
> -
> if [[ $(uname -m) == s390x ]]; then
> return
> fi
> @@ -1659,7 +1658,7 @@ reset_crashkernel_after_update()
> local _kernel _crashkernel _dump_mode _fadump_val _old_default_crashkernel
_new_default_crashkernel
> declare -A _crashkernel_vals
>
> - if _is_package_install; then
> + if ! _is_bootloader_installed; then
> return
> fi
>
> @@ -1715,7 +1714,7 @@ reset_crashkernel_for_installed_kernel()
>
> # During package install, only try to reset crashkernel for osbuild
> # thus to avoid calling grubby when installing os via anaconda
> - if _is_package_install && ! _is_osbuild; then
> + if ! _is_bootloader_installed && ! _is_osbuild; then
> return
> fi
>
> diff --git a/kexec-tools.spec b/kexec-tools.spec
> index 24fad768..1ee17707 100644
> --- a/kexec-tools.spec
> +++ b/kexec-tools.spec
> @@ -268,11 +268,6 @@ if [ ! -f /run/ostree-booted ] && [ $1 == 2 ] &&
grep -q get-default-crashkernel
> kdumpctl get-default-crashkernel fadump > /tmp/old_default_crashkernel_fadump
2>/dev/null
> %endif
> fi
> -# indicate it's package install so kdumpctl later will only reset crashkernel
> -# value for osbuild.
> -if [ $1 == 1 ]; then
> - touch /tmp/kexec_tools_package_install
> -fi
> # don't block package update
> :
>
--
Best regards,
Coiby