From 512cd8ff4a7bf1303b9c91b72232d28fe8b429a8 Mon Sep 17 00:00:00 2001 From: "Guilherme G. Piccoli" Date: Fri, 5 Jan 2024 19:18:06 +0000 Subject: [PATCH] initramfs: Prevent creating the minimal initrd if kernel was uninstalled This condition should be a unusual, but it's possible if users are installing kdumpst right after a kernel upgrade, without rebooting for example. To achieve this, just check if the modules dir exists. Signed-off-by: Guilherme G. Piccoli --- initramfs/alpm-script.sh.in | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/initramfs/alpm-script.sh.in b/initramfs/alpm-script.sh.in index 36cf647..bf2a6dd 100644 --- a/initramfs/alpm-script.sh.in +++ b/initramfs/alpm-script.sh.in @@ -15,6 +15,19 @@ if [ -n "$1" ]; then if command -v INITRD 1>/dev/null; then INITRD_installation + + # Worth noticing that it is possible (though unlikely) that during + # the kdumpst package installation, users are running a previously + # uninstalled kernel. Imagine if the user upgrades the kernel, and + # then install kdumpst before rebooting. With that, creating an + # initrd fails here since it relies on "uname -r". To prevent such + # unhandled error, check if this kernel's modules directory exists. + + if [ ! -d "/lib/modules/$1" ]; then + logger "kdumpst: no kernel modules dir; defer initrd creation to next boot" + exit 0 + fi + create_initramfs_INITRD "$1" fi exit 0