[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] util/grub.d/10_linux: Improve initramfs detection
From: |
Oskari Pirhonen |
Subject: |
[PATCH] util/grub.d/10_linux: Improve initramfs detection |
Date: |
Wed, 16 Mar 2022 23:21:51 -0500 |
Prefer using a *.old initramfs for *.old kernels if it exists. Otherwise
look for an initramfs without the suffix.
Also add detection for initramfs of the form *.img.old. For example,
Gentoo's sys-kernel/genkernel installs it as initramfs-*.img and moves
any existing one to initramfs-*.img.old.
Signed-off-by: Oskari Pirhonen <xxc3ncoredxx@gmail.com>
---
util/grub.d/10_linux.in | 41 ++++++++++++++++++++++++++++-------------
1 file changed, 28 insertions(+), 13 deletions(-)
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index ca068038e..4a666c317 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -215,19 +215,34 @@ while [ "x$list" != "x" ] ; do
done
initrd_real=
- for i in "initrd.img-${version}" "initrd-${version}.img"
"initrd-${version}.gz" \
- "initrd-${version}" "initramfs-${version}.img" \
- "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
- "initrd-${alt_version}" "initramfs-${alt_version}.img" \
- "initramfs-genkernel-${version}" \
- "initramfs-genkernel-${alt_version}" \
- "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
- "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
- if test -e "${dirname}/${i}" ; then
- initrd_real="${i}"
- break
- fi
- done
+ # Prefer to match *.old kernel with *.old initramfs if it exists
+ if [ "${alt_version}" != "${version}" ]; then
+ for i in "initrd.img-${version}" "initrd-${version}.img" \
+ "initrd-${alt_version}.img.old" "initrd-${version}.gz" \
+ "initrd-${alt_version}.gz.old" "initrd-${version}" \
+ "initramfs-${version}.img" "initramfs-${alt_version}.img.old" \
+ "initramfs-genkernel-${version}" \
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${version}"; do
+ if test -e "${dirname}/${i}" ; then
+ initrd_real="${i}"
+ break
+ fi
+ done
+ fi
+
+ # alt_version == version or *.old initramfs not found
+ # use alt_version to handle both cases at once
+ if [ -z "${initrd_real}" ]; then
+ for i in "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
+ "initrd-${alt_version}.gz" "initrd-${alt_version}" \
+ "initramfs-${alt_version}.img" "initramfs-genkernel-${alt_version}" \
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
+ if test -e "${dirname}/${i}" ; then
+ initrd_real="${i}"
+ break
+ fi
+ done
+ fi
initrd=
if test -n "${initrd_early}" || test -n "${initrd_real}"; then
--
2.34.1
- [PATCH] util/grub.d/10_linux: Improve initramfs detection,
Oskari Pirhonen <=