All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Norden <jeff@math.tntech.edu>
To: grub-devel@gnu.org
Subject: Re: Proposed PATCH to allow control of the kernel ordering in grub.cfg
Date: Thu, 20 Dec 2018 18:26:20 -0600	[thread overview]
Message-ID: <fdva3nbu8j.fsf@norden.math.tntech.edu> (raw)
In-Reply-To: <fd1s6eypqq.fsf@norden.math.tntech.edu> (message from Jeff Norden on Wed, 19 Dec 2018 00:50:21 -0600)

Hi Daniel,

Thanks for the quick reply! I've made the suggested changes and attached
a "git format-patch" patch below.  Hopefully this is what you need.  I'm
not much of a git-expert.

Thanks again.  Have a great Holiday Season!

-Jeff

On Thu, 20 Dec 2018, Daniel Kiper wrote:
> This looks like nice commit message. So, please rebase your patch on
> latest GRUB2 master branch and repost it using "git format-patch" and
> "git send-email". And please do not forget to add your Signed-off-by.
> 
> And some minor comments below...


Signed-off-by: Jeffrey Norden <jeff@math.tntech.edu>
---
 docs/grub.texi          | 18 ++++++++++++++++++
 util/grub-mkconfig.in   |  3 ++-
 util/grub.d/10_linux.in |  9 ++++++++-
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/docs/grub.texi b/docs/grub.texi
index ecaba9d5c..4aaa151f8 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -1502,6 +1502,24 @@ and @samp{default} (@pxref{default}) environment variables as well as saved
 default entry using @command{grub-set-default} and value used with
 @command{grub-reboot}.
 
+@item GRUB_PREFERRED_KERNEL
+If this option is set, @command{grub-mkconfig} will list kernels that
+match its value before others.  In particular, the ``top-level'' menu
+entry (assuming submenus are enabled) will be the one with the highest
+version number that matches @samp{GRUB_PREFERRED_KERNEL}.  For
+example, @verb{|GRUB_PREFERRED_KERNEL="4.14"|} will put the 4.14 kernel
+first in @file{grub.cfg}, even if newer kernel(s) are found.
+
+Matching is done via @command{egrep} against the file name of the
+kernel, so regular expressions can be used.  For example:
+@verb{|GRUB_PREFERRED_KERNEL='4\.1[0-6]'|} will put any kernels matching
+4.10 thru 4.16 first, starting with the highest version number. Or,
+@verb{|GRUB_PREFERRED_KERNEL='vmlinuz-3\.16-x86_64'|} would match a
+specific kernel file.  Note that the simple example in the previous
+paragraph can be written more carefully as
+@verb{|GRUB_PREFERRED_KERNEL='4\.14'|} to force the @samp{.} to match
+a period instead of an arbitrary character.
+
 @item GRUB_ENABLE_CRYPTODISK
 If set to @samp{y}, @command{grub-mkconfig} and @command{grub-install} will
 check for encrypted disks and generate additional commands needed to access
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index 33332360e..8d6aecf22 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -238,7 +238,8 @@ export GRUB_DEFAULT \
   GRUB_ENABLE_CRYPTODISK \
   GRUB_BADRAM \
   GRUB_OS_PROBER_SKIP_LIST \
-  GRUB_DISABLE_SUBMENU
+  GRUB_DISABLE_SUBMENU \
+  GRUB_PREFERRED_KERNEL
 
 if test "x${grub_cfg}" != "x"; then
   rm -f "${grub_cfg}.new"
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index 4532266be..32affd9d6 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -193,7 +193,14 @@ submenu_indentation=""
 
 is_top_level=true
 while [ "x$list" != "x" ] ; do
-  linux=`version_find_latest $list`
+  linux=""
+  if [ "x${GRUB_PREFERRED_KERNEL}" != "x" ]; then
+    linux=`echo $list | tr ' ' '\n' | egrep "${GRUB_PREFERRED_KERNEL}"`
+  fi
+  if [ "x$linux" = "x" ]; then
+    linux=$list
+  fi
+  linux=`version_find_latest $linux`
   gettext_printf "Found linux image: %s\n" "$linux" >&2
   basename=`basename $linux`
   dirname=`dirname $linux`
-- 
2.19.2



  parent reply	other threads:[~2018-12-21  0:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-19  6:50 Proposed PATCH to allow control of the kernel ordering in grub.cfg Jeff Norden
2018-12-20 11:53 ` Daniel Kiper
2018-12-21  5:20   ` Mihai Moldovan
2018-12-21  0:26 ` Jeff Norden [this message]
2018-12-27 14:23   ` Jeff Norden
2018-12-31  8:09     ` Mihai Moldovan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fdva3nbu8j.fsf@norden.math.tntech.edu \
    --to=jeff@math.tntech.edu \
    --cc=grub-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.