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 <j...@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 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel