All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] util/grub.d/10_linux: Improve initramfs detection
@ 2022-03-17  4:21 Oskari Pirhonen
  2022-03-24 17:11 ` Daniel Kiper
  0 siblings, 1 reply; 3+ messages in thread
From: Oskari Pirhonen @ 2022-03-17  4:21 UTC (permalink / raw)
  To: grub-devel

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



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] util/grub.d/10_linux: Improve initramfs detection
  2022-03-17  4:21 [PATCH] util/grub.d/10_linux: Improve initramfs detection Oskari Pirhonen
@ 2022-03-24 17:11 ` Daniel Kiper
  2022-03-27  6:59   ` Oskari Pirhonen
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Kiper @ 2022-03-24 17:11 UTC (permalink / raw)
  To: Oskari Pirhonen; +Cc: grub-devel

On Wed, Mar 16, 2022 at 11:21:51PM -0500, Oskari Pirhonen wrote:
> 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 ++++++++++++++++++++++++++++-------------

You should update the util/grub.d/20_linux_xen.in too.

>  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}" \

Why do you change order of images in comparison to the original above?
I think it should be more or less *${version} *${alt_version}.img.old
*${alt_version}.gz.old *${alt_version} and so on...

> +          "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

Daniel


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] util/grub.d/10_linux: Improve initramfs detection
  2022-03-24 17:11 ` Daniel Kiper
@ 2022-03-27  6:59   ` Oskari Pirhonen
  0 siblings, 0 replies; 3+ messages in thread
From: Oskari Pirhonen @ 2022-03-27  6:59 UTC (permalink / raw)
  To: grub-devel

[-- Attachment #1: Type: text/plain, Size: 3337 bytes --]

On Thu, Mar 24, 2022 at 06:11:25PM +0100, Daniel Kiper wrote:
> On Wed, Mar 16, 2022 at 11:21:51PM -0500, Oskari Pirhonen wrote:
> > 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 ++++++++++++++++++++++++++++-------------
> 
> You should update the util/grub.d/20_linux_xen.in too.

Good point.

> 
> >  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}" \
> 
> Why do you change order of images in comparison to the original above?
> I think it should be more or less *${version} *${alt_version}.img.old
> *${alt_version}.gz.old *${alt_version} and so on...

I reordered it slightly, but tried to keep it the same in spirit. I can
rework this though and submit a v2 including 20_linux_xen in it too.

> 
> > +          "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
> 
> Daniel

- Oskari

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-03-27  6:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-17  4:21 [PATCH] util/grub.d/10_linux: Improve initramfs detection Oskari Pirhonen
2022-03-24 17:11 ` Daniel Kiper
2022-03-27  6:59   ` Oskari Pirhonen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.