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 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.
Reported-by: Jan Stodola jstodola@redhat.com Signed-off-by: Coiby Xu coxu@redhat.com --- 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 :
Hi Coiby,
On Tue, 20 Dec 2022 19:28:38 +0800 Coiby Xu coxu@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@redhat.com Signed-off-by: Coiby Xu coxu@redhat.com
Other than that the code looks fine. Let's hope that this corner case is finally fixed...
Reviewed-by: Philipp Rudo prudo@redhat.com
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 :
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@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@redhat.com Signed-off-by: Coiby Xu coxu@redhat.com
Other than that the code looks fine. Let's hope that this corner case is finally fixed...
Reviewed-by: Philipp Rudo prudo@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 :