On Fri, Sep 16, 2022 at 6:27 PM Coiby Xu <coxu(a)redhat.com> wrote:
>
> Resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=2060319
>
> Currently, kexec-tools tries to reset crashkernel when using anaconda to
> install the system. But grubby isn't ready and complains that,
> 10:33:17,631 INF packaging: Configuring (running scriptlet for):
kernel-core-5.14.0-70.el9.x86_64 1645746534
03dcd32db234b72440ee6764d59b32347c5f0cd98ac3fb55beb47214a76f33b4
> 10:34:16,696 INF dnf.rpm: grep: /boot/grub2/grubenv: No such file or directory
> grep: /boot/grub2/grubenv: No such file or directory
>
> We only need to try resetting crashkernel for osbuild. Skip it for other
> cases. To tell if it's package install instead of package upgrade, make
> use of %pre to write a file /tmp/kexec-tools-install when "$1 == 1" [1].
>
> [1]
https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_sy...
>
> Reported-by: Jan Stodola <jstodola(a)redhat.com>
> Signed-off-by: Coiby Xu <coxu(a)redhat.com>
> ---
> kdumpctl | 16 ++++++++++++++++
> kexec-tools.spec | 5 +++++
> 2 files changed, 21 insertions(+)
>
> diff --git a/kdumpctl b/kdumpctl
> index 19febd53..e705acd0 100755
> --- a/kdumpctl
> +++ b/kdumpctl
> @@ -1597,6 +1597,12 @@ reset_crashkernel()
> fi
> }
>
> +# to tell if it's package install other than upgrade
> +_is_package_install()
> +{
> + [[ -f /tmp/kexec_tools_package_install ]]
> +}
> +
> # update the crashkernel value in GRUB_ETC_DEFAULT if necessary
> #
> # called by reset_crashkernel_after_update and inherit its array variable
> @@ -1606,6 +1612,10 @@ 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
> +
> _crashkernel=$(_read_kernel_arg_in_grub_etc_default crashkernel)
>
> if [[ -z $_crashkernel ]]; then
> @@ -1681,6 +1691,12 @@ reset_crashkernel_for_installed_kernel()
> local _installed_kernel _running_kernel _crashkernel _crashkernel_running
> local _dump_mode_running _fadump_val_running
>
> + # 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
> + return
> + fi
> +
> if ! _installed_kernel=$(_find_kernel_path_by_release "$1"); then
> exit 1
> fi
> diff --git a/kexec-tools.spec b/kexec-tools.spec
> index 5f0e1b53..8f84f8d5 100644
> --- a/kexec-tools.spec
> +++ b/kexec-tools.spec
> @@ -266,6 +266,11 @@ 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
> :
>
> --
> 2.37.2
> _______________________________________________
> kexec mailing list -- kexec(a)lists.fedoraproject.org
> To unsubscribe send an email to kexec-leave(a)lists.fedoraproject.org
> Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives:
https://lists.fedoraproject.org/archives/list/kexec@lists.fedoraproject.org
> Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue