]> TLD Linux GIT Repositories - packages/grub2.git/commitdiff
- updated to 2.14 master
authorMarcin Krol <hawk@tld-linux.org>
Tue, 19 May 2026 16:14:21 +0000 (18:14 +0200)
committerMarcin Krol <hawk@tld-linux.org>
Tue, 19 May 2026 16:14:21 +0000 (18:14 +0200)
blscfg.patch [deleted file]
grub-mkconfig-diagnostics.patch
grub2-fonts_path.patch
grub2.spec
image-base.patch [new file with mode: 0644]
md-name.patch [new file with mode: 0644]
restricted.patch
tld-sysconfdir.patch

diff --git a/blscfg.patch b/blscfg.patch
deleted file mode 100644 (file)
index d7749a6..0000000
+++ /dev/null
@@ -1,1528 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Tue, 22 Jan 2013 06:31:38 +0100
-Subject: [PATCH] blscfg: add blscfg module to parse Boot Loader Specification
- snippets
-
-The BootLoaderSpec (BLS) defines a scheme where different bootloaders can
-share a format for boot items and a configuration directory that accepts
-these common configurations as drop-in files.
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
-[wjt: some cleanups and fixes]
-Signed-off-by: Will Thompson <wjt@endlessm.com>
----
- grub-core/Makefile.core.def    |   11 +
- grub-core/commands/blscfg.c    | 1096 ++++++++++++++++++++++++++++++++++++++++
- grub-core/commands/legacycfg.c |    5 +-
- grub-core/commands/loadenv.c   |   77 +--
- grub-core/commands/menuentry.c |   20 +-
- grub-core/normal/main.c        |    6 +
- grub-core/commands/loadenv.h   |   93 ++++
- include/grub/compiler.h        |    2 +
- include/grub/menu.h            |   13 +
- include/grub/normal.h          |    2 +-
- 10 files changed, 1243 insertions(+), 82 deletions(-)
- create mode 100644 grub-core/commands/blscfg.c
- create mode 100644 grub-core/commands/loadenv.h
-
-diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
-index 41b5e16a3ce..57e253ab1a1 100644
---- a/grub-core/Makefile.core.def
-+++ b/grub-core/Makefile.core.def
-@@ -811,6 +811,16 @@ module = {
-   common = commands/blocklist.c;
- };
-+module = {
-+  name = blscfg;
-+  common = commands/blscfg.c;
-+  common = commands/loadenv.h;
-+  enable = powerpc_ieee1275;
-+  enable = efi;
-+  enable = i386_pc;
-+  enable = emu;
-+};
-+
- module = {
-   name = boot;
-   common = commands/boot.c;
-@@ -988,6 +998,7 @@ module = {
- module = {
-   name = loadenv;
-   common = commands/loadenv.c;
-+  common = commands/loadenv.h;
-   common = lib/envblk.c;
- };
-diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
-new file mode 100644
-index 00000000000..54458b14518
---- /dev/null
-+++ b/grub-core/commands/blscfg.c
-@@ -0,0 +1,1096 @@
-+/*-*- Mode: C; c-basic-offset: 2; indent-tabs-mode: t -*-*/
-+
-+/* bls.c - implementation of the boot loader spec */
-+
-+/*
-+ *  GRUB  --  GRand Unified Bootloader
-+ *
-+ *  GRUB is free software: you can redistribute it and/or modify
-+ *  it under the terms of the GNU General Public License as published by
-+ *  the Free Software Foundation, either version 3 of the License, or
-+ *  (at your option) any later version.
-+ *
-+ *  GRUB is distributed in the hope that it will be useful,
-+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *  GNU General Public License for more details.
-+ *
-+ *  You should have received a copy of the GNU General Public License
-+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <grub/list.h>
-+#include <grub/types.h>
-+#include <grub/misc.h>
-+#include <grub/mm.h>
-+#include <grub/err.h>
-+#include <grub/dl.h>
-+#include <grub/extcmd.h>
-+#include <grub/i18n.h>
-+#include <grub/fs.h>
-+#include <grub/env.h>
-+#include <grub/file.h>
-+#include <grub/normal.h>
-+#include <grub/lib/envblk.h>
-+
-+#include <stdbool.h>
-+
-+GRUB_MOD_LICENSE ("GPLv3+");
-+
-+#include "loadenv.h"
-+
-+#define GRUB_BLS_CONFIG_PATH "/loader/entries/"
-+#ifdef GRUB_MACHINE_EMU
-+#define GRUB_BOOT_DEVICE "/boot"
-+#else
-+#define GRUB_BOOT_DEVICE "($root)"
-+#endif
-+
-+struct keyval
-+{
-+  const char *key;
-+  char *val;
-+};
-+
-+static struct bls_entry *entries = NULL;
-+
-+#define FOR_BLS_ENTRIES(var) FOR_LIST_ELEMENTS (var, entries)
-+
-+static int bls_add_keyval(struct bls_entry *entry, char *key, char *val)
-+{
-+  char *k, *v;
-+  struct keyval **kvs, *kv;
-+  int new_n = entry->nkeyvals + 1;
-+
-+  kvs = grub_realloc (entry->keyvals, new_n * sizeof (struct keyval *));
-+  if (!kvs)
-+    return grub_error (GRUB_ERR_OUT_OF_MEMORY,
-+                     "couldn't find space for BLS entry");
-+  entry->keyvals = kvs;
-+
-+  kv = grub_malloc (sizeof (struct keyval));
-+  if (!kv)
-+    return grub_error (GRUB_ERR_OUT_OF_MEMORY,
-+                     "couldn't find space for BLS entry");
-+
-+  k = grub_strdup (key);
-+  if (!k)
-+    {
-+      grub_free (kv);
-+      return grub_error (GRUB_ERR_OUT_OF_MEMORY,
-+                       "couldn't find space for BLS entry");
-+    }
-+
-+  v = grub_strdup (val);
-+  if (!v)
-+    {
-+      grub_free (k);
-+      grub_free (kv);
-+      return grub_error (GRUB_ERR_OUT_OF_MEMORY,
-+                       "couldn't find space for BLS entry");
-+    }
-+
-+  kv->key = k;
-+  kv->val = v;
-+
-+  entry->keyvals[entry->nkeyvals] = kv;
-+  grub_dprintf("blscfg", "new keyval at %p:%s:%s\n", entry->keyvals[entry->nkeyvals], k, v);
-+  entry->nkeyvals = new_n;
-+
-+  return 0;
-+}
-+
-+/* Find they value of the key named by keyname.  If there are allowed to be
-+ * more than one, pass a pointer to an int set to -1 the first time, and pass
-+ * the same pointer through each time after, and it'll return them in sorted
-+ * order as defined in the BLS fragment file */
-+static char *bls_get_val(struct bls_entry *entry, const char *keyname, int *last)
-+{
-+  int idx, start = 0;
-+  struct keyval *kv = NULL;
-+
-+  if (last)
-+    start = *last + 1;
-+
-+  for (idx = start; idx < entry->nkeyvals; idx++) {
-+    kv = entry->keyvals[idx];
-+
-+    if (!grub_strcmp (keyname, kv->key))
-+      break;
-+  }
-+
-+  if (idx == entry->nkeyvals) {
-+    if (last)
-+      *last = -1;
-+    return NULL;
-+  }
-+
-+  if (last)
-+    *last = idx;
-+
-+  return kv->val;
-+}
-+
-+#define goto_return(x) ({ ret = (x); goto finish; })
-+
-+/* compare alpha and numeric segments of two versions */
-+/* return 1: a is newer than b */
-+/*        0: a and b are the same version */
-+/*       -1: b is newer than a */
-+static int vercmp(const char * a, const char * b)
-+{
-+    char oldch1, oldch2;
-+    char *abuf, *bbuf;
-+    char *str1, *str2;
-+    char * one, * two;
-+    int rc;
-+    int isnum;
-+    int ret = 0;
-+
-+    grub_dprintf("blscfg", "%s comparing %s and %s\n", __func__, a, b);
-+    if (!grub_strcmp(a, b))
-+          return 0;
-+
-+    abuf = grub_malloc(grub_strlen(a) + 1);
-+    bbuf = grub_malloc(grub_strlen(b) + 1);
-+    str1 = abuf;
-+    str2 = bbuf;
-+    grub_strcpy(str1, a);
-+    grub_strcpy(str2, b);
-+
-+    one = str1;
-+    two = str2;
-+
-+    /* loop through each version segment of str1 and str2 and compare them */
-+    while (*one || *two) {
-+      while (*one && !grub_isalnum(*one) && *one != '~') one++;
-+      while (*two && !grub_isalnum(*two) && *two != '~') two++;
-+
-+      /* handle the tilde separator, it sorts before everything else */
-+      if (*one == '~' || *two == '~') {
-+          if (*one != '~') goto_return (1);
-+          if (*two != '~') goto_return (-1);
-+          one++;
-+          two++;
-+          continue;
-+      }
-+
-+      /* If we ran to the end of either, we are finished with the loop */
-+      if (!(*one && *two)) break;
-+
-+      str1 = one;
-+      str2 = two;
-+
-+      /* grab first completely alpha or completely numeric segment */
-+      /* leave one and two pointing to the start of the alpha or numeric */
-+      /* segment and walk str1 and str2 to end of segment */
-+      if (grub_isdigit(*str1)) {
-+          while (*str1 && grub_isdigit(*str1)) str1++;
-+          while (*str2 && grub_isdigit(*str2)) str2++;
-+          isnum = 1;
-+      } else {
-+          while (*str1 && grub_isalpha(*str1)) str1++;
-+          while (*str2 && grub_isalpha(*str2)) str2++;
-+          isnum = 0;
-+      }
-+
-+      /* save character at the end of the alpha or numeric segment */
-+      /* so that they can be restored after the comparison */
-+      oldch1 = *str1;
-+      *str1 = '\0';
-+      oldch2 = *str2;
-+      *str2 = '\0';
-+
-+      /* this cannot happen, as we previously tested to make sure that */
-+      /* the first string has a non-null segment */
-+      if (one == str1) goto_return(-1);       /* arbitrary */
-+
-+      /* take care of the case where the two version segments are */
-+      /* different types: one numeric, the other alpha (i.e. empty) */
-+      /* numeric segments are always newer than alpha segments */
-+      /* XXX See patch #60884 (and details) from bugzilla #50977. */
-+      if (two == str2) goto_return (isnum ? 1 : -1);
-+
-+      if (isnum) {
-+          grub_size_t onelen, twolen;
-+          /* this used to be done by converting the digit segments */
-+          /* to ints using atoi() - it's changed because long  */
-+          /* digit segments can overflow an int - this should fix that. */
-+
-+          /* throw away any leading zeros - it's a number, right? */
-+          while (*one == '0') one++;
-+          while (*two == '0') two++;
-+
-+          /* whichever number has more digits wins */
-+          onelen = grub_strlen(one);
-+          twolen = grub_strlen(two);
-+          if (onelen > twolen) goto_return (1);
-+          if (twolen > onelen) goto_return (-1);
-+      }
-+
-+      /* grub_strcmp will return which one is greater - even if the two */
-+      /* segments are alpha or if they are numeric.  don't return  */
-+      /* if they are equal because there might be more segments to */
-+      /* compare */
-+      rc = grub_strcmp(one, two);
-+      if (rc) goto_return (rc < 1 ? -1 : 1);
-+
-+      /* restore character that was replaced by null above */
-+      *str1 = oldch1;
-+      one = str1;
-+      *str2 = oldch2;
-+      two = str2;
-+    }
-+
-+    /* this catches the case where all numeric and alpha segments have */
-+    /* compared identically but the segment sepparating characters were */
-+    /* different */
-+    if ((!*one) && (!*two)) goto_return (0);
-+
-+    /* whichever version still has characters left over wins */
-+    if (!*one) goto_return (-1); else goto_return (1);
-+
-+finish:
-+    grub_free (abuf);
-+    grub_free (bbuf);
-+    return ret;
-+}
-+
-+/* returns name/version/release */
-+/* NULL string pointer returned if nothing found */
-+static void
-+split_package_string (char *package_string, char **name,
-+                     char **version, char **release)
-+{
-+  char *package_version, *package_release;
-+
-+  /* Release */
-+  package_release = grub_strrchr (package_string, '-');
-+
-+  if (package_release != NULL)
-+      *package_release++ = '\0';
-+
-+  *release = package_release;
-+
-+  if (name == NULL)
-+    {
-+      *version = package_string;
-+    }
-+  else
-+    {
-+      /* Version */
-+      package_version = grub_strrchr(package_string, '-');
-+
-+      if (package_version != NULL)
-+      *package_version++ = '\0';
-+
-+      *version = package_version;
-+      /* Name */
-+      *name = package_string;
-+    }
-+
-+  /* Bubble up non-null values from release to name */
-+  if (name != NULL && *name == NULL)
-+    {
-+      *name = (*version == NULL ? *release : *version);
-+      *version = *release;
-+      *release = NULL;
-+    }
-+  if (*version == NULL)
-+    {
-+      *version = *release;
-+      *release = NULL;
-+    }
-+}
-+
-+static int
-+split_cmp(char *nvr0, char *nvr1, int has_name)
-+{
-+  int ret = 0;
-+  char *name0, *version0, *release0;
-+  char *name1, *version1, *release1;
-+
-+  split_package_string(nvr0, has_name ? &name0 : NULL, &version0, &release0);
-+  split_package_string(nvr1, has_name ? &name1 : NULL, &version1, &release1);
-+
-+  if (has_name)
-+    {
-+      ret = vercmp(name0 == NULL ? "" : name0,
-+                 name1 == NULL ? "" : name1);
-+      if (ret != 0)
-+      return ret;
-+    }
-+
-+  ret = vercmp(version0 == NULL ? "" : version0,
-+             version1 == NULL ? "" : version1);
-+  if (ret != 0)
-+    return ret;
-+
-+  ret = vercmp(release0 == NULL ? "" : release0,
-+             release1 == NULL ? "" : release1);
-+  return ret;
-+}
-+
-+/* return 1: e0 is newer than e1 */
-+/*        0: e0 and e1 are the same version */
-+/*       -1: e1 is newer than e0 */
-+static int bls_cmp(const struct bls_entry *e0, const struct bls_entry *e1)
-+{
-+  char *id0, *id1;
-+  int r;
-+
-+  id0 = grub_strdup(e0->filename);
-+  id1 = grub_strdup(e1->filename);
-+
-+  r = split_cmp(id0, id1, 1);
-+
-+  grub_free(id0);
-+  grub_free(id1);
-+
-+  return r;
-+}
-+
-+static void list_add_tail(struct bls_entry *head, struct bls_entry *item)
-+{
-+  item->next = head;
-+  if (head->prev)
-+    head->prev->next = item;
-+  item->prev = head->prev;
-+  head->prev = item;
-+}
-+
-+static int bls_add_entry(struct bls_entry *entry)
-+{
-+  struct bls_entry *e, *last = NULL;
-+  int rc;
-+
-+  if (!entries) {
-+    grub_dprintf ("blscfg", "Add entry with id \"%s\"\n", entry->filename);
-+    entries = entry;
-+    return 0;
-+  }
-+
-+  FOR_BLS_ENTRIES(e) {
-+    rc = bls_cmp(entry, e);
-+
-+    if (!rc)
-+      return GRUB_ERR_BAD_ARGUMENT;
-+
-+    if (rc == 1) {
-+      grub_dprintf ("blscfg", "Add entry with id \"%s\"\n", entry->filename);
-+      list_add_tail (e, entry);
-+      if (e == entries) {
-+      entries = entry;
-+      entry->prev = NULL;
-+      }
-+      return 0;
-+    }
-+    last = e;
-+  }
-+
-+  if (last) {
-+    grub_dprintf ("blscfg", "Add entry with id \"%s\"\n", entry->filename);
-+    last->next = entry;
-+    entry->prev = last;
-+  }
-+
-+  return 0;
-+}
-+
-+struct read_entry_info {
-+  const char *devid;
-+  const char *dirname;
-+  grub_file_t file;
-+};
-+
-+static int read_entry (
-+    const char *filename,
-+    const struct grub_dirhook_info *dirhook_info UNUSED,
-+    void *data)
-+{
-+  grub_size_t m = 0, n, clip = 0;
-+  int rc = 0;
-+  char *p = NULL;
-+  grub_file_t f = NULL;
-+  struct bls_entry *entry;
-+  struct read_entry_info *info = (struct read_entry_info *)data;
-+
-+  grub_dprintf ("blscfg", "filename: \"%s\"\n", filename);
-+
-+  n = grub_strlen (filename);
-+
-+  if (info->file)
-+    {
-+      f = info->file;
-+    }
-+  else
-+    {
-+      if (filename[0] == '.')
-+      return 0;
-+
-+      if (n <= 5)
-+      return 0;
-+
-+      if (grub_strcmp (filename + n - 5, ".conf") != 0)
-+      return 0;
-+
-+      p = grub_xasprintf ("(%s)%s/%s", info->devid, info->dirname, filename);
-+
-+      f = grub_file_open (p, GRUB_FILE_TYPE_CONFIG);
-+      if (!f)
-+      goto finish;
-+    }
-+
-+  entry = grub_zalloc (sizeof (*entry));
-+  if (!entry)
-+    goto finish;
-+
-+  if (info->file)
-+    {
-+      char *slash;
-+
-+      if (n > 5 && !grub_strcmp (filename + n - 5, ".conf") == 0)
-+      clip = 5;
-+
-+      slash = grub_strrchr (filename, '/');
-+      if (!slash)
-+      slash = grub_strrchr (filename, '\\');
-+
-+      while (*slash == '/' || *slash == '\\')
-+      slash++;
-+
-+      m = slash ? slash - filename : 0;
-+    }
-+  else
-+    {
-+      m = 0;
-+      clip = 5;
-+    }
-+  n -= m;
-+
-+  entry->filename = grub_strndup(filename + m, n - clip);
-+  if (!entry->filename)
-+    goto finish;
-+
-+  entry->filename[n - 5] = '\0';
-+
-+  for (;;)
-+    {
-+      char *buf;
-+      char *separator;
-+
-+      buf = grub_file_getline (f);
-+      if (!buf)
-+      break;
-+
-+      while (buf && buf[0] && (buf[0] == ' ' || buf[0] == '\t'))
-+      buf++;
-+      if (buf[0] == '#')
-+      continue;
-+
-+      separator = grub_strchr (buf, ' ');
-+
-+      if (!separator)
-+      separator = grub_strchr (buf, '\t');
-+
-+      if (!separator || separator[1] == '\0')
-+      {
-+        grub_free (buf);
-+        break;
-+      }
-+
-+      separator[0] = '\0';
-+
-+      do {
-+      separator++;
-+      } while (*separator == ' ' || *separator == '\t');
-+
-+      rc = bls_add_keyval (entry, buf, separator);
-+      grub_free (buf);
-+      if (rc < 0)
-+      break;
-+    }
-+
-+    if (!rc)
-+      bls_add_entry(entry);
-+
-+finish:
-+  if (p)
-+    grub_free (p);
-+
-+  if (f)
-+    grub_file_close (f);
-+
-+  return 0;
-+}
-+
-+static grub_envblk_t saved_env = NULL;
-+
-+static int UNUSED
-+save_var (const char *name, const char *value, void *whitelist UNUSED)
-+{
-+  const char *val = grub_env_get (name);
-+  grub_dprintf("blscfg", "saving \"%s\"\n", name);
-+
-+  if (val)
-+    grub_envblk_set (saved_env, name, value);
-+
-+  return 0;
-+}
-+
-+static int UNUSED
-+unset_var (const char *name, const char *value UNUSED, void *whitelist)
-+{
-+  grub_dprintf("blscfg", "restoring \"%s\"\n", name);
-+  if (! whitelist)
-+    {
-+      grub_env_unset (name);
-+      return 0;
-+    }
-+
-+  if (test_whitelist_membership (name,
-+                               (const grub_env_whitelist_t *) whitelist))
-+    grub_env_unset (name);
-+
-+  return 0;
-+}
-+
-+static char **bls_make_list (struct bls_entry *entry, const char *key, int *num)
-+{
-+  int last = -1;
-+  char *val;
-+
-+  int nlist = 0;
-+  char **list = NULL;
-+
-+  list = grub_malloc (sizeof (char *));
-+  if (!list)
-+    return NULL;
-+  list[0] = NULL;
-+
-+  while (1)
-+    {
-+      char **new;
-+
-+      val = bls_get_val (entry, key, &last);
-+      if (!val)
-+      break;
-+
-+      new = grub_realloc (list, (nlist + 2) * sizeof (char *));
-+      if (!new)
-+      break;
-+
-+      list = new;
-+      list[nlist++] = val;
-+      list[nlist] = NULL;
-+  }
-+
-+  if (num)
-+    *num = nlist;
-+
-+  return list;
-+}
-+
-+static char *field_append(bool is_var, char *buffer, char *start, char *end)
-+{
-+  char *temp = grub_strndup(start, end - start + 1);
-+  const char *field = temp;
-+
-+  if (is_var) {
-+    field = grub_env_get (temp);
-+    if (!field)
-+      return buffer;
-+  }
-+
-+  if (!buffer) {
-+    buffer = grub_strdup(field);
-+    if (!buffer)
-+      return NULL;
-+  } else {
-+    buffer = grub_realloc (buffer, grub_strlen(buffer) + grub_strlen(field));
-+    if (!buffer)
-+      return NULL;
-+
-+    grub_stpcpy (buffer + grub_strlen(buffer), field);
-+  }
-+
-+  return buffer;
-+}
-+
-+static char *expand_val(char *value)
-+{
-+  char *buffer = NULL;
-+  char *start = value;
-+  char *end = value;
-+  bool is_var = false;
-+
-+  if (!value)
-+    return NULL;
-+
-+  while (*value) {
-+    if (*value == '$') {
-+      if (start != end) {
-+      buffer = field_append(is_var, buffer, start, end);
-+      if (!buffer)
-+        return NULL;
-+      }
-+
-+      is_var = true;
-+      start = value + 1;
-+    } else if (is_var) {
-+      if (!grub_isalnum(*value) && *value != '_') {
-+      buffer = field_append(is_var, buffer, start, end);
-+      is_var = false;
-+      start = value;
-+      }
-+    }
-+
-+    end = value;
-+    value++;
-+  }
-+
-+  if (start != end) {
-+    buffer = field_append(is_var, buffer, start, end);
-+    if (!buffer)
-+      return NULL;
-+  }
-+
-+  return buffer;
-+}
-+
-+static char **early_initrd_list (const char *initrd)
-+{
-+  int nlist = 0;
-+  char **list = NULL;
-+  char *separator;
-+
-+  while ((separator = grub_strchr (initrd, ' ')))
-+    {
-+      list = grub_realloc (list, (nlist + 2) * sizeof (char *));
-+      if (!list)
-+        return NULL;
-+
-+      list[nlist++] = grub_strndup(initrd, separator - initrd);
-+      list[nlist] = NULL;
-+      initrd = separator + 1;
-+  }
-+
-+  list = grub_realloc (list, (nlist + 2) * sizeof (char *));
-+  if (!list)
-+    return NULL;
-+
-+  list[nlist++] = grub_strndup(initrd, grub_strlen(initrd));
-+  list[nlist] = NULL;
-+
-+  return list;
-+}
-+
-+static void create_entry (struct bls_entry *entry)
-+{
-+  int argc = 0;
-+  const char **argv = NULL;
-+
-+  char *title = NULL;
-+  char *clinux = NULL;
-+  char *options = NULL;
-+  char **initrds = NULL;
-+  char *initrd = NULL;
-+  const char *early_initrd = NULL;
-+  char **early_initrds = NULL;
-+  char *initrd_prefix = NULL;
-+  char *id = entry->filename;
-+  char *dotconf = id;
-+  char *hotkey = NULL;
-+
-+  char *users = NULL;
-+  char **classes = NULL;
-+
-+  char **args = NULL;
-+
-+  char *src = NULL;
-+  int i, index;
-+
-+  grub_dprintf("blscfg", "%s got here\n", __func__);
-+  clinux = bls_get_val (entry, "linux", NULL);
-+  if (!clinux)
-+    {
-+      grub_dprintf ("blscfg", "Skipping file %s with no 'linux' key.\n", entry->filename);
-+      goto finish;
-+    }
-+
-+  /*
-+   * strip the ".conf" off the end before we make it our "id" field.
-+   */
-+  do
-+    {
-+      dotconf = grub_strstr(dotconf, ".conf");
-+    } while (dotconf != NULL && dotconf[5] != '\0');
-+  if (dotconf)
-+    dotconf[0] = '\0';
-+
-+  title = bls_get_val (entry, "title", NULL);
-+  options = expand_val (bls_get_val (entry, "options", NULL));
-+
-+  if (!options)
-+    options = expand_val (grub_env_get("default_kernelopts"));
-+
-+  initrds = bls_make_list (entry, "initrd", NULL);
-+
-+  hotkey = bls_get_val (entry, "grub_hotkey", NULL);
-+  users = expand_val (bls_get_val (entry, "grub_users", NULL));
-+  classes = bls_make_list (entry, "grub_class", NULL);
-+  args = bls_make_list (entry, "grub_arg", &argc);
-+
-+  argc += 1;
-+  argv = grub_malloc ((argc + 1) * sizeof (char *));
-+  argv[0] = title ? title : clinux;
-+  for (i = 1; i < argc; i++)
-+    argv[i] = args[i-1];
-+  argv[argc] = NULL;
-+
-+  early_initrd = grub_env_get("early_initrd");
-+
-+  grub_dprintf ("blscfg", "adding menu entry for \"%s\" with id \"%s\"\n",
-+              title, id);
-+  if (early_initrd)
-+    {
-+      early_initrds = early_initrd_list(early_initrd);
-+      if (!early_initrds)
-+      {
-+      grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
-+      goto finish;
-+      }
-+
-+      if (initrds != NULL && initrds[0] != NULL)
-+      {
-+        initrd_prefix = grub_strrchr (initrds[0], '/');
-+        initrd_prefix = grub_strndup(initrds[0], initrd_prefix - initrds[0] + 1);
-+      }
-+      else
-+      {
-+        initrd_prefix = grub_strrchr (clinux, '/');
-+        initrd_prefix = grub_strndup(clinux, initrd_prefix - clinux + 1);
-+      }
-+
-+      if (!initrd_prefix)
-+      {
-+        grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
-+        goto finish;
-+      }
-+    }
-+
-+  if (early_initrds || initrds)
-+    {
-+      int initrd_size = sizeof ("initrd");
-+      char *tmp;
-+
-+      for (i = 0; early_initrds != NULL && early_initrds[i] != NULL; i++)
-+      initrd_size += sizeof (" " GRUB_BOOT_DEVICE) \
-+                     + grub_strlen(initrd_prefix)  \
-+                     + grub_strlen (early_initrds[i]) + 1;
-+
-+      for (i = 0; initrds != NULL && initrds[i] != NULL; i++)
-+      initrd_size += sizeof (" " GRUB_BOOT_DEVICE) \
-+                     + grub_strlen (initrds[i]) + 1;
-+      initrd_size += 1;
-+
-+      initrd = grub_malloc (initrd_size);
-+      if (!initrd)
-+      {
-+        grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
-+        goto finish;
-+      }
-+
-+
-+      tmp = grub_stpcpy(initrd, "initrd");
-+      for (i = 0; early_initrds != NULL && early_initrds[i] != NULL; i++)
-+      {
-+        grub_dprintf ("blscfg", "adding early initrd %s\n", early_initrds[i]);
-+        tmp = grub_stpcpy (tmp, " " GRUB_BOOT_DEVICE);
-+        tmp = grub_stpcpy (tmp, initrd_prefix);
-+        tmp = grub_stpcpy (tmp, early_initrds[i]);
-+        grub_free(early_initrds[i]);
-+      }
-+
-+      for (i = 0; initrds != NULL && initrds[i] != NULL; i++)
-+      {
-+        grub_dprintf ("blscfg", "adding initrd %s\n", initrds[i]);
-+        tmp = grub_stpcpy (tmp, " " GRUB_BOOT_DEVICE);
-+        tmp = grub_stpcpy (tmp, initrds[i]);
-+      }
-+      tmp = grub_stpcpy (tmp, "\n");
-+    }
-+
-+  src = grub_xasprintf ("load_video\n"
-+                      "set gfxpayload=keep\n"
-+                      "insmod gzio\n"
-+                      "linux %s%s%s%s\n"
-+                      "%s",
-+                      GRUB_BOOT_DEVICE, clinux, options ? " " : "", options ? options : "",
-+                      initrd ? initrd : "");
-+
-+  grub_normal_add_menu_entry (argc, argv, classes, id, users, hotkey, NULL, src, 0, &index, entry);
-+  grub_dprintf ("blscfg", "Added entry %d id:\"%s\"\n", index, id);
-+
-+finish:
-+  grub_free (initrd);
-+  grub_free (initrd_prefix);
-+  grub_free (early_initrds);
-+  grub_free (initrds);
-+  grub_free (options);
-+  grub_free (classes);
-+  grub_free (args);
-+  grub_free (argv);
-+  grub_free (src);
-+}
-+
-+struct find_entry_info {
-+      const char *dirname;
-+      const char *devid;
-+      grub_device_t dev;
-+      grub_fs_t fs;
-+};
-+
-+/*
-+ * info: the filesystem object the file is on.
-+ */
-+static int find_entry (struct find_entry_info *info)
-+{
-+  struct read_entry_info read_entry_info;
-+  grub_fs_t blsdir_fs = NULL;
-+  grub_device_t blsdir_dev = NULL;
-+  const char *blsdir = info->dirname;
-+  int fallback = 0;
-+  int r = 0;
-+
-+  if (!blsdir) {
-+    blsdir = grub_env_get ("blsdir");
-+    if (!blsdir)
-+      blsdir = GRUB_BLS_CONFIG_PATH;
-+  }
-+
-+  read_entry_info.file = NULL;
-+  read_entry_info.dirname = blsdir;
-+
-+  grub_dprintf ("blscfg", "scanning blsdir: %s\n", blsdir);
-+
-+  blsdir_dev = info->dev;
-+  blsdir_fs = info->fs;
-+  read_entry_info.devid = info->devid;
-+
-+read_fallback:
-+  r = blsdir_fs->fs_dir (blsdir_dev, read_entry_info.dirname, read_entry,
-+                       &read_entry_info);
-+  if (r != 0) {
-+      grub_dprintf ("blscfg", "read_entry returned error\n");
-+      grub_err_t e;
-+      do
-+      {
-+        e = grub_error_pop();
-+      } while (e);
-+  }
-+
-+  if (r && !info->dirname && !fallback) {
-+    read_entry_info.dirname = "/boot" GRUB_BLS_CONFIG_PATH;
-+    grub_dprintf ("blscfg", "Entries weren't found in %s, fallback to %s\n",
-+                blsdir, read_entry_info.dirname);
-+    fallback = 1;
-+    goto read_fallback;
-+  }
-+
-+  return 0;
-+}
-+
-+static grub_err_t
-+bls_load_entries (const char *path)
-+{
-+  grub_size_t len;
-+  grub_fs_t fs;
-+  grub_device_t dev;
-+  static grub_err_t r;
-+  const char *devid = NULL;
-+  char *blsdir = NULL;
-+  struct find_entry_info info = {
-+      .dev = NULL,
-+      .fs = NULL,
-+      .dirname = NULL,
-+  };
-+  struct read_entry_info rei = {
-+      .devid = NULL,
-+      .dirname = NULL,
-+  };
-+
-+  if (path) {
-+    len = grub_strlen (path);
-+    if (grub_strcmp (path + len - 5, ".conf") == 0) {
-+      rei.file = grub_file_open (path, GRUB_FILE_TYPE_CONFIG);
-+      if (!rei.file)
-+      return grub_errno;
-+      /*
-+       * read_entry() closes the file
-+       */
-+      return read_entry(path, NULL, &rei);
-+    } else if (path[0] == '(') {
-+      devid = path + 1;
-+
-+      blsdir = grub_strchr (path, ')');
-+      if (!blsdir)
-+      return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("Filepath isn't correct"));
-+
-+      *blsdir = '\0';
-+      blsdir = blsdir + 1;
-+    }
-+  }
-+
-+  if (!devid) {
-+#ifdef GRUB_MACHINE_EMU
-+    devid = "host";
-+#elif defined(GRUB_MACHINE_EFI)
-+    devid = grub_env_get ("root");
-+#else
-+    devid = grub_env_get ("boot");
-+#endif
-+    if (!devid)
-+      return grub_error (GRUB_ERR_FILE_NOT_FOUND,
-+                       N_("variable `%s' isn't set"), "boot");
-+  }
-+
-+  grub_dprintf ("blscfg", "opening %s\n", devid);
-+  dev = grub_device_open (devid);
-+  if (!dev)
-+    return grub_errno;
-+
-+  grub_dprintf ("blscfg", "probing fs\n");
-+  fs = grub_fs_probe (dev);
-+  if (!fs)
-+    {
-+      r = grub_errno;
-+      goto finish;
-+    }
-+
-+  info.dirname = blsdir;
-+  info.devid = devid;
-+  info.dev = dev;
-+  info.fs = fs;
-+  find_entry(&info);
-+
-+finish:
-+  if (dev)
-+    grub_device_close (dev);
-+
-+  return r;
-+}
-+
-+static bool
-+is_default_entry(const char *def_entry, struct bls_entry *entry, int idx)
-+{
-+  const char *title;
-+  int def_idx;
-+
-+  if (!def_entry)
-+    return false;
-+
-+  if (grub_strcmp(def_entry, entry->filename) == 0)
-+    return true;
-+
-+  title = bls_get_val(entry, "title", NULL);
-+
-+  if (title && grub_strcmp(def_entry, title) == 0)
-+    return true;
-+
-+  def_idx = (int)grub_strtol(def_entry, NULL, 0);
-+  if (grub_errno == GRUB_ERR_BAD_NUMBER) {
-+    grub_errno = GRUB_ERR_NONE;
-+    return false;
-+  }
-+
-+  if (def_idx == idx)
-+    return true;
-+
-+  return false;
-+}
-+
-+static grub_err_t
-+bls_create_entries (bool show_default, bool show_non_default, char *entry_id)
-+{
-+  const char *def_entry = NULL;
-+  struct bls_entry *entry = NULL;
-+  int idx = 0;
-+
-+  def_entry = grub_env_get("default");
-+
-+  grub_dprintf ("blscfg", "%s Creating entries from bls\n", __func__);
-+  FOR_BLS_ENTRIES(entry) {
-+    if (entry->visible) {
-+      idx++;
-+      continue;
-+    }
-+
-+    if ((show_default && is_default_entry(def_entry, entry, idx)) ||
-+      (show_non_default && !is_default_entry(def_entry, entry, idx)) ||
-+      (entry_id && grub_strcmp(entry_id, entry->filename) == 0)) {
-+      create_entry(entry);
-+      entry->visible = 1;
-+    }
-+    idx++;
-+  }
-+
-+  return GRUB_ERR_NONE;
-+}
-+
-+static grub_err_t
-+grub_cmd_blscfg (grub_extcmd_context_t ctxt UNUSED,
-+               int argc, char **args)
-+{
-+  grub_err_t r;
-+  char *path = NULL;
-+  char *entry_id = NULL;
-+  bool show_default = true;
-+  bool show_non_default = true;
-+
-+  if (argc == 1) {
-+    if (grub_strcmp (args[0], "default") == 0) {
-+      show_non_default = false;
-+    } else if (grub_strcmp (args[0], "non-default") == 0) {
-+      show_default = false;
-+    } else if (args[0][0] == '(') {
-+      path = args[0];
-+    } else {
-+      entry_id = args[0];
-+      show_default = false;
-+      show_non_default = false;
-+    }
-+  }
-+
-+  r = bls_load_entries(path);
-+  if (r)
-+    return r;
-+
-+  return bls_create_entries(show_default, show_non_default, entry_id);
-+}
-+
-+static grub_extcmd_t cmd;
-+static grub_extcmd_t oldcmd;
-+
-+GRUB_MOD_INIT(blscfg)
-+{
-+  grub_dprintf("blscfg", "%s got here\n", __func__);
-+  cmd = grub_register_extcmd ("blscfg",
-+                            grub_cmd_blscfg,
-+                            0,
-+                            NULL,
-+                            N_("Import Boot Loader Specification snippets."),
-+                            NULL);
-+  oldcmd = grub_register_extcmd ("bls_import",
-+                               grub_cmd_blscfg,
-+                               0,
-+                               NULL,
-+                               N_("Import Boot Loader Specification snippets."),
-+                               NULL);
-+}
-+
-+GRUB_MOD_FINI(blscfg)
-+{
-+  grub_unregister_extcmd (cmd);
-+  grub_unregister_extcmd (oldcmd);
-+}
-diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
-index db7a8f00273..891eac5a33f 100644
---- a/grub-core/commands/legacycfg.c
-+++ b/grub-core/commands/legacycfg.c
-@@ -133,7 +133,7 @@ legacy_file (const char *filename)
-           args[0] = oldname;
-           grub_normal_add_menu_entry (1, args, NULL, NULL, "legacy",
-                                       NULL, NULL,
--                                      entrysrc, 0);
-+                                      entrysrc, 0, NULL, NULL);
-           grub_free (args);
-           entrysrc[0] = 0;
-           grub_free (oldname);
-@@ -186,7 +186,8 @@ legacy_file (const char *filename)
-       }
-       args[0] = entryname;
-       grub_normal_add_menu_entry (1, args, NULL, NULL, NULL,
--                                NULL, NULL, entrysrc, 0);
-+                                NULL, NULL, entrysrc, 0, NULL,
-+                                NULL);
-       grub_free (args);
-     }
-diff --git a/grub-core/commands/loadenv.c b/grub-core/commands/loadenv.c
-index 3fd664aac33..163b9a09042 100644
---- a/grub-core/commands/loadenv.c
-+++ b/grub-core/commands/loadenv.c
-@@ -28,6 +28,8 @@
- #include <grub/extcmd.h>
- #include <grub/i18n.h>
-+#include "loadenv.h"
-+
- GRUB_MOD_LICENSE ("GPLv3+");
- static const struct grub_arg_option options[] =
-@@ -79,81 +81,6 @@ open_envblk_file (char *filename,
-   return file;
- }
--static grub_envblk_t
--read_envblk_file (grub_file_t file)
--{
--  grub_off_t offset = 0;
--  char *buf;
--  grub_size_t size = grub_file_size (file);
--  grub_envblk_t envblk;
--
--  buf = grub_malloc (size);
--  if (! buf)
--    return 0;
--
--  while (size > 0)
--    {
--      grub_ssize_t ret;
--
--      ret = grub_file_read (file, buf + offset, size);
--      if (ret <= 0)
--        {
--          grub_free (buf);
--          return 0;
--        }
--
--      size -= ret;
--      offset += ret;
--    }
--
--  envblk = grub_envblk_open (buf, offset);
--  if (! envblk)
--    {
--      grub_free (buf);
--      grub_error (GRUB_ERR_BAD_FILE_TYPE, "invalid environment block");
--      return 0;
--    }
--
--  return envblk;
--}
--
--struct grub_env_whitelist
--{
--  grub_size_t len;
--  char **list;
--};
--typedef struct grub_env_whitelist grub_env_whitelist_t;
--
--static int
--test_whitelist_membership (const char* name,
--                           const grub_env_whitelist_t* whitelist)
--{
--  grub_size_t i;
--
--  for (i = 0; i < whitelist->len; i++)
--    if (grub_strcmp (name, whitelist->list[i]) == 0)
--      return 1;  /* found it */
--
--  return 0;  /* not found */
--}
--
--/* Helper for grub_cmd_load_env.  */
--static int
--set_var (const char *name, const char *value, void *whitelist)
--{
--  if (! whitelist)
--    {
--      grub_env_set (name, value);
--      return 0;
--    }
--
--  if (test_whitelist_membership (name,
--                               (const grub_env_whitelist_t *) whitelist))
--    grub_env_set (name, value);
--
--  return 0;
--}
--
- static grub_err_t
- grub_cmd_load_env (grub_extcmd_context_t ctxt, int argc, char **args)
- {
-diff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
-index 2c5363da7f5..9faf2be0f64 100644
---- a/grub-core/commands/menuentry.c
-+++ b/grub-core/commands/menuentry.c
-@@ -78,7 +78,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
-                           char **classes, const char *id,
-                           const char *users, const char *hotkey,
-                           const char *prefix, const char *sourcecode,
--                          int submenu)
-+                          int submenu, int *index, struct bls_entry *bls)
- {
-   int menu_hotkey = 0;
-   char **menu_args = NULL;
-@@ -149,9 +149,12 @@ grub_normal_add_menu_entry (int argc, const char **args,
-   if (! menu_title)
-     goto fail;
-+  grub_dprintf ("menu", "id:\"%s\"\n", id);
-+  grub_dprintf ("menu", "title:\"%s\"\n", menu_title);
-   menu_id = grub_strdup (id ? : menu_title);
-   if (! menu_id)
-     goto fail;
-+  grub_dprintf ("menu", "menu_id:\"%s\"\n", menu_id);
-   /* Save argc, args to pass as parameters to block arg later. */
-   menu_args = grub_calloc (argc + 1, sizeof (char *));
-@@ -170,8 +173,12 @@ grub_normal_add_menu_entry (int argc, const char **args,
-   }
-   /* Add the menu entry at the end of the list.  */
-+  int ind=0;
-   while (*last)
--    last = &(*last)->next;
-+    {
-+      ind++;
-+      last = &(*last)->next;
-+    }
-   *last = grub_zalloc (sizeof (**last));
-   if (! *last)
-@@ -188,8 +195,11 @@ grub_normal_add_menu_entry (int argc, const char **args,
-   (*last)->args = menu_args;
-   (*last)->sourcecode = menu_sourcecode;
-   (*last)->submenu = submenu;
-+  (*last)->bls = bls;
-   menu->size++;
-+  if (index)
-+    *index = ind;
-   return GRUB_ERR_NONE;
-  fail:
-@@ -286,7 +296,8 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
-                                      users,
-                                      ctxt->state[2].arg, 0,
-                                      ctxt->state[3].arg,
--                                     ctxt->extcmd->cmd->name[0] == 's');
-+                                     ctxt->extcmd->cmd->name[0] == 's',
-+                                     NULL, NULL);
-   src = args[argc - 1];
-   args[argc - 1] = NULL;
-@@ -303,7 +314,8 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
-                                 ctxt->state[0].args, ctxt->state[4].arg,
-                                 users,
-                                 ctxt->state[2].arg, prefix, src + 1,
--                                ctxt->extcmd->cmd->name[0] == 's');
-+                                ctxt->extcmd->cmd->name[0] == 's', NULL,
-+                                NULL);
-   src[len - 1] = ch;
-   args[argc - 1] = src;
-diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
-index 9ef98481f70..a326b192c89 100644
---- a/grub-core/normal/main.c
-+++ b/grub-core/normal/main.c
-@@ -20,6 +20,7 @@
- #include <grub/net.h>
- #include <grub/normal.h>
- #include <grub/dl.h>
-+#include <grub/menu.h>
- #include <grub/misc.h>
- #include <grub/file.h>
- #include <grub/mm.h>
-@@ -70,6 +71,11 @@ grub_normal_free_menu (grub_menu_t menu)
-         grub_free (entry->args);
-       }
-+      if (entry->bls)
-+      {
-+        entry->bls->visible = 0;
-+      }
-+
-       grub_free ((void *) entry->id);
-       grub_free ((void *) entry->users);
-       grub_free ((void *) entry->title);
-diff --git a/grub-core/commands/loadenv.h b/grub-core/commands/loadenv.h
-new file mode 100644
-index 00000000000..952f46121bd
---- /dev/null
-+++ b/grub-core/commands/loadenv.h
-@@ -0,0 +1,93 @@
-+/* loadenv.c - command to load/save environment variable.  */
-+/*
-+ *  GRUB  --  GRand Unified Bootloader
-+ *  Copyright (C) 2008,2009,2010  Free Software Foundation, Inc.
-+ *
-+ *  GRUB is free software: you can redistribute it and/or modify
-+ *  it under the terms of the GNU General Public License as published by
-+ *  the Free Software Foundation, either version 3 of the License, or
-+ *  (at your option) any later version.
-+ *
-+ *  GRUB is distributed in the hope that it will be useful,
-+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *  GNU General Public License for more details.
-+ *
-+ *  You should have received a copy of the GNU General Public License
-+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+static grub_envblk_t UNUSED
-+read_envblk_file (grub_file_t file)
-+{
-+  grub_off_t offset = 0;
-+  char *buf;
-+  grub_size_t size = grub_file_size (file);
-+  grub_envblk_t envblk;
-+
-+  buf = grub_malloc (size);
-+  if (! buf)
-+    return 0;
-+
-+  while (size > 0)
-+    {
-+      grub_ssize_t ret;
-+
-+      ret = grub_file_read (file, buf + offset, size);
-+      if (ret <= 0)
-+        {
-+          grub_free (buf);
-+          return 0;
-+        }
-+
-+      size -= ret;
-+      offset += ret;
-+    }
-+
-+  envblk = grub_envblk_open (buf, offset);
-+  if (! envblk)
-+    {
-+      grub_free (buf);
-+      grub_error (GRUB_ERR_BAD_FILE_TYPE, "invalid environment block");
-+      return 0;
-+    }
-+
-+  return envblk;
-+}
-+
-+struct grub_env_whitelist
-+{
-+  grub_size_t len;
-+  char **list;
-+};
-+typedef struct grub_env_whitelist grub_env_whitelist_t;
-+
-+static int UNUSED
-+test_whitelist_membership (const char* name,
-+                           const grub_env_whitelist_t* whitelist)
-+{
-+  grub_size_t i;
-+
-+  for (i = 0; i < whitelist->len; i++)
-+    if (grub_strcmp (name, whitelist->list[i]) == 0)
-+      return 1;  /* found it */
-+
-+  return 0;  /* not found */
-+}
-+
-+/* Helper for grub_cmd_load_env.  */
-+static int UNUSED
-+set_var (const char *name, const char *value, void *whitelist)
-+{
-+  if (! whitelist)
-+    {
-+      grub_env_set (name, value);
-+      return 0;
-+    }
-+
-+  if (test_whitelist_membership (name,
-+                               (const grub_env_whitelist_t *) whitelist))
-+    grub_env_set (name, value);
-+
-+  return 0;
-+}
-diff --git a/include/grub/compiler.h b/include/grub/compiler.h
-index c9e1d7a73dc..9859ff4cc79 100644
---- a/include/grub/compiler.h
-+++ b/include/grub/compiler.h
-@@ -48,4 +48,6 @@
- #  define CLANG_PREREQ(maj,min) 0
- #endif
-+#define UNUSED __attribute__((__unused__))
-+
- #endif /* ! GRUB_COMPILER_HEADER */
-diff --git a/include/grub/menu.h b/include/grub/menu.h
-index ee2b5e91045..0acdc2aa6bf 100644
---- a/include/grub/menu.h
-+++ b/include/grub/menu.h
-@@ -20,6 +20,16 @@
- #ifndef GRUB_MENU_HEADER
- #define GRUB_MENU_HEADER 1
-+struct bls_entry
-+{
-+  struct bls_entry *next;
-+  struct bls_entry *prev;
-+  struct keyval **keyvals;
-+  int nkeyvals;
-+  char *filename;
-+  int visible;
-+};
-+
- struct grub_menu_entry_class
- {
-   char *name;
-@@ -60,6 +70,9 @@ struct grub_menu_entry
-   /* The next element.  */
-   struct grub_menu_entry *next;
-+
-+  /* BLS used to populate the entry */
-+  struct bls_entry *bls;
- };
- typedef struct grub_menu_entry *grub_menu_entry_t;
-diff --git a/include/grub/normal.h b/include/grub/normal.h
-index 218cbabccaf..8839ad85a19 100644
---- a/include/grub/normal.h
-+++ b/include/grub/normal.h
-@@ -145,7 +145,7 @@ grub_normal_add_menu_entry (int argc, const char **args, char **classes,
-                           const char *id,
-                           const char *users, const char *hotkey,
-                           const char *prefix, const char *sourcecode,
--                          int submenu);
-+                          int submenu, int *index, struct bls_entry *bls);
- grub_err_t
- grub_normal_set_password (const char *user, const char *password);
index 36edb0bc34137bda245a7f9e5ecba458d84214af..8cfd7651bba6a878a6e425386287cd242e4d6fd3 100644 (file)
@@ -92,10 +92,10 @@ diff -dur -x '*~' -x '*.orig' grub-2.02~beta2.orig/util/grub.d/10_hurd.in grub-2
      at_least_one=true
    else
      all_of_them=false
-@@ -74,8 +74,8 @@
+@@ -99,8 +99,8 @@ if test -e '/lib/ld-x86-64.so.1' ; then
  fi
  
- if ${all_of_them} && test -e /lib/ld.so.1 ; then : ; else
+ if ${all_of_them} && test -n "$LD_SO" ; then : ; else
 -  gettext "Some Hurd stuff found, but not enough to boot." >&2
 -  echo >&2
 +  gettext "Some Hurd stuff found, but not enough to boot." >&3
index e5f5300937c3a448a34e295a1e67410c7d09a962..204b05f58e3c06c765edb7d6ede0253a65ebe862 100644 (file)
@@ -1,11 +1,11 @@
---- grub-2.12/configure.ac.orig        2023-12-20 18:27:11.057068695 +0100
-+++ grub-2.12/configure.ac     2023-12-20 18:28:25.454952491 +0100
-@@ -1847,7 +1847,7 @@
+--- grub-2.14~rc1/configure.ac~        2025-10-28 13:18:58.000000000 +0100
++++ grub-2.14~rc1/configure.ac 2025-11-13 09:12:59.488212011 +0100
+@@ -2117,7 +2117,7 @@ if test "x$with_dejavufont" = x; then
    # search in well-known directories
    if test x"$starfield_excuse" = x; then
       for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
--       for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype /usr/pkg/share/fonts/X11/TTF /usr/local/share/fonts/dejavu /usr/X11R6/lib/X11/fonts/TTF; do
-+       for dir in . /usr/share/fonts/TTF /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype /usr/pkg/share/fonts/X11/TTF /usr/local/share/fonts/dejavu /usr/X11R6/lib/X11/fonts/TTF; do
+-       for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype /usr/pkg/share/fonts/X11/TTF /usr/local/share/fonts/dejavu /usr/X11R6/lib/X11/fonts/TTF /usr/share/fonts/dejavu-sans-fonts /usr/share/fonts/truetype/dejavu; do
++       for dir in . /usr/share/fonts/TTF /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/truetype/ttf-dejavu /usr/share/fonts/dejavu /usr/share/fonts/truetype /usr/pkg/share/fonts/X11/TTF /usr/local/share/fonts/dejavu /usr/X11R6/lib/X11/fonts/TTF /usr/share/fonts/dejavu-sans-fonts /usr/share/fonts/truetype/dejavu; do
            if test -f "$dir/DejaVuSans.$ext"; then
              DJVU_FONT_SOURCE="$dir/DejaVuSans.$ext"
              break 2
index d49a72eba34c4e542ffabd75b54d6d9779d1111b..55badb8f8cfc4d89f1e185fe5bdf68e33bd463aa 100644 (file)
@@ -143,12 +143,12 @@ Summary(hu.UTF-8):        GRUB2 - rendszerbetöltő x86 és ppc gépekhez
 Summary(pl.UTF-8):     GRUB2 - bootloader dla x86 i ppc
 Summary(pt_BR.UTF-8):  Gerenciador de inicialização GRUB2
 Name:          grub2
-Version:       2.12
-Release:       3
+Version:       2.14
+Release:       1
 License:       GPL v2
 Group:         Base
 Source0:       https://ftp.gnu.org/gnu/grub/grub-%{version}.tar.xz
-# Source0-md5: 60c564b1bdc39d8e43b3aab4bc0fb140
+# Source0-md5: 383f9effad01c235d2535357ff717543
 Source1:       update-grub
 Source2:       update-grub.8
 Source3:       grub.sysconfig
@@ -165,11 +165,13 @@ Patch9:           just-say-linux.patch
 Patch10:       ignore-kernel-symlinks.patch
 Patch11:       choose-preferred-initrd.patch
 Patch12:       %{name}-cfg.patch
-Patch14:       blscfg.patch
-Patch15:       restricted.patch
-Patch16:       x32.patch
+Patch13:       image-base.patch
+Patch14:       md-name.patch
+Patch15:       x32.patch
+Patch16:       restricted.patch
 URL:           http://www.gnu.org/software/grub/
 BuildRequires: autoconf >= 2.64
+BuildRequires: autoconf-archive
 BuildRequires: automake >= 1:1.11.1-1
 BuildRequires: bison >= 2.3
 BuildRequires: device-mapper-devel >= 1.02.34
@@ -196,6 +198,7 @@ BuildRequires:      glibc-localedb-all
 BuildRequires: glibc-static
 BuildRequires: help2man
 BuildRequires: libfuse3-devel
+BuildRequires: libtasn1-devel
 BuildRequires: libtool
 BuildRequires: ncurses-devel
 BuildRequires: pkgconfig
@@ -537,6 +540,7 @@ Motyw starfield dla GRUB-a.
 %patch -P10 -p1
 %patch -P11 -p1
 %patch -P12 -p0
+%patch -P13 -p1
 %patch -P14 -p1
 %patch -P15 -p1
 %patch -P16 -p1
@@ -544,11 +548,6 @@ Motyw starfield dla GRUB-a.
 # we don't have C.utf-8 and need an UTF-8 locale for build
 sed -i -e 's/LC_ALL=C.UTF-8/LC_ALL=en_US.utf-8/g' po/Makefile* po/Rules*
 
-# missing in tarball
-cat > grub-core/extra_deps.lst <<EOF
-depends bli part_gpt
-EOF
-
 %build
 # if gold is used then grub doesn't even boot
 # https://savannah.gnu.org/bugs/?34539
@@ -700,6 +699,7 @@ fi
 %attr(755,root,root) %{_sbindir}/grub-mkstandalone
 %attr(755,root,root) %{_sbindir}/grub-mount
 %attr(755,root,root) %{_sbindir}/grub-ofpathname
+%attr(755,root,root) %{_sbindir}/grub-protect
 %attr(755,root,root) %{_sbindir}/grub-reboot
 %attr(755,root,root) %{_sbindir}/grub-render-label
 %attr(755,root,root) %{_sbindir}/grub-script-check
@@ -731,6 +731,7 @@ fi
 %{_mandir}/man1/grub-mkrescue.1*
 %{_mandir}/man1/grub-mkstandalone.1*
 %{_mandir}/man1/grub-mount.1*
+%{_mandir}/man1/grub-protect.1*
 %{_mandir}/man1/grub-render-label.1*
 %{_mandir}/man1/grub-script-check.1*
 %{_mandir}/man1/grub-syslinux2cfg.1*
@@ -775,7 +776,7 @@ fi
 
 %files -n bash-completion-%{name}
 %defattr(644,root,root,755)
-/etc/bash_completion.d/grub
+%{bash_compdir}/grub*
 
 %if %{with unifont}
 %files fonts
diff --git a/image-base.patch b/image-base.patch
new file mode 100644 (file)
index 0000000..f9510cf
--- /dev/null
@@ -0,0 +1,60 @@
+; revert https://www.mail-archive.com/grub-devel%40gnu.org/msg43001.html
+diff --git b/acinclude.m4 a/acinclude.m4
+index 70c1912f8..fa7840f09 100644
+--- b/acinclude.m4
++++ a/acinclude.m4
+@@ -79,11 +79,6 @@ AC_DEFUN([grub_PROG_OBJCOPY_ABSOLUTE],
+ [AC_MSG_CHECKING([whether ${TARGET_OBJCOPY} works for absolute addresses])
+ AC_CACHE_VAL(grub_cv_prog_objcopy_absolute,
+ [cat > conftest.c <<\EOF
+-asm (
+-    ".globl start, _start, __start\n"
+-    ".ifdef cmain; .set start = _start = __start = cmain\n.endif\n"
+-    ".ifdef _cmain; .set start = _start = __start = _cmain\n.endif\n"
+-);
+ void cmain (void);
+ void
+ cmain (void)
+--- grub-2.14/configure.ac.org 2026-03-03 12:54:23.256474391 +0100
++++ grub-2.14/configure.ac     2026-03-03 12:54:38.716838858 +0100
+@@ -1461,6 +1461,7 @@ elif test x$grub_cv_target_cc_link_forma
+   TARGET_IMG_LDSCRIPT='$(top_srcdir)'"/conf/i386-cygwin-img-ld.sc"
+   TARGET_IMG_LDFLAGS="-Wl,-T${TARGET_IMG_LDSCRIPT}"
+   TARGET_IMG_LDFLAGS_AC="-Wl,-T${srcdir}/conf/i386-cygwin-img-ld.sc"
++  TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
+   TARGET_IMG_CFLAGS=
+ else
+   TARGET_APPLE_LINKER=0
+@@ -1468,6 +1469,7 @@ else
+   TARGET_IMG_LDSCRIPT=
+   TARGET_IMG_LDFLAGS='-Wl,-N'
+   TARGET_IMG_LDFLAGS_AC='-Wl,-N'
++  TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"
+   TARGET_IMG_CFLAGS=
+ fi
+@@ -1792,24 +1794,7 @@ LIBS=""
+ # Defined in acinclude.m4.
+ grub_ASM_USCORE
+ grub_PROG_TARGET_CC
+-
+-# The error message produced by autoconf if autoconf-archive is not installed is
+-# quite misleading and not very helpful. So, try point people in the right direction.
+-m4_ifndef([AX_CHECK_LINK_FLAG], [m4_fatal([autoconf-archive is missing. You must install it to generate the configure script.])])
+-
+ if test "x$TARGET_APPLE_LINKER" != x1 ; then
+-AX_CHECK_LINK_FLAG([-Wl,--image-base,0x400000],
+-    [TARGET_IMG_BASE_LDOPT="-Wl,--image-base"],
+-    [TARGET_IMG_BASE_LDOPT="-Wl,-Ttext"],
+-    [],
+-    [AC_LANG_SOURCE([
+-asm (".globl start; start:");
+-asm (".globl _start; _start:");
+-asm (".globl __start; __start:");
+-void __main (void);
+-void __main (void) {}
+-int main (void);
+-    ])])
+ grub_PROG_OBJCOPY_ABSOLUTE
+ fi
+ grub_PROG_LD_BUILD_ID_NONE
diff --git a/md-name.patch b/md-name.patch
new file mode 100644 (file)
index 0000000..c5869da
--- /dev/null
@@ -0,0 +1,61 @@
+ diskfilter: Fix md RAID device naming for numeric arrays
+
+  grub-install fails with 'disk `md0' not found' on mdraid1x arrays with
+  numeric names (the common case for /dev/md0, /dev/md1, etc.).
+
+  Two subsystems must agree on GRUB device names for md arrays:
+
+    - grub_util_get_raid_grub_dev() translates OS device paths to GRUB
+      names: /dev/md0 and /dev/md/0 both produce "md0", while
+      /dev/md/boot produces "md/boot".
+
+    - grub_diskfilter_make_raid() constructs the internal array name from
+      on-disk superblock metadata.  It unconditionally prepends "md/" to
+      the identifier, producing "md/0" for a RAID 1.x array whose
+      set_name is "hostname:0" (after homehost stripping).
+
+  The mismatch ("md0" vs "md/0") is normally masked by UUID-based lookup
+  (mduuid/...) when mdadm is available.  When mdadm is unavailable --
+  common in chroot and rescue environments -- the name-based fallback
+  path is taken and the mismatch causes the failure.
+
+  Fix grub_diskfilter_make_raid() to choose "md<N>" for numeric names and
+  "md/<name>" for free-form names, matching grub_util_get_raid_grub_dev().
+
+  Also fix grub_mdraid_detect() for RAID 0.9x which passed "md0" (already
+  prefixed) to grub_diskfilter_make_raid(), producing "md/md0".  Pass just
+  the minor number so the callee applies the prefix consistently.
+
+  Bug: https://savannah.gnu.org/bugs/?67868
+
+diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c
+index 3a26de6..de24958 100644
+--- a/grub-core/disk/diskfilter.c
++++ b/grub-core/disk/diskfilter.c
+@@ -1131,8 +1131,11 @@ grub_diskfilter_make_raid (grub_size_t uuidlen, char *uuid, int nmemb,
+     {
+       /* Strip off the homehost if present.  */
+       char *colon = grub_strchr (name, ':');
+-      char *new_name = grub_xasprintf ("md/%s",
+-                                     colon ? colon + 1 : name);
++      const char *base = colon ? colon + 1 : name;
++      /* Use "md<N>" for numeric names and "md/<name>" for free-form names,
++       matching the convention in grub_util_get_raid_grub_dev().  */
++      char *new_name = grub_xasprintf (base[0] >= '0' && base[0] <= '9'
++                                     ? "md%s" : "md/%s", base);
+       if (! new_name)
+       goto fail;
+diff --git a/grub-core/disk/mdraid_linux.c b/grub-core/disk/mdraid_linux.c
+index e40216f..e003f6d 100644
+--- a/grub-core/disk/mdraid_linux.c
++++ b/grub-core/disk/mdraid_linux.c
+@@ -252,7 +252,7 @@ grub_mdraid_detect (grub_disk_t disk,
+   id->id = grub_md_to_cpu32 (sb->this_disk.number);
+   char buf[32];
+-  grub_snprintf (buf, sizeof (buf), "md%d", grub_md_to_cpu32 (sb->md_minor));
++  grub_snprintf (buf, sizeof (buf), "%d", grub_md_to_cpu32 (sb->md_minor));
+   ret = grub_diskfilter_make_raid (16, (char *) uuid,
+                                  grub_md_to_cpu32 (sb->raid_disks), buf,
+                                  (sb->size) ? ((grub_disk_addr_t)
index ff496a50d32e5d1ecf415395d66d4f5aab6b5da2..51f9072bf7931231c67dce4262749eeac63a588f 100644 (file)
@@ -1,6 +1,6 @@
-diff -ur grub-2.12.orig/util/grub.d/10_linux.in grub-2.12/util/grub.d/10_linux.in
---- grub-2.12.orig/util/grub.d/10_linux.in     2025-04-27 17:47:18.122797143 +0200
-+++ grub-2.12/util/grub.d/10_linux.in  2025-04-27 17:47:43.810873653 +0200
+diff -ur grub-2.14.orig/util/grub.d/10_linux.in grub-2.14/util/grub.d/10_linux.in
+--- grub-2.14.orig/util/grub.d/10_linux.in     2026-05-19 16:49:06.410014719 +0200
++++ grub-2.14/util/grub.d/10_linux.in  2026-05-19 16:49:25.118095262 +0200
 @@ -35,6 +35,10 @@
    CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
  fi
@@ -12,9 +12,9 @@ diff -ur grub-2.12.orig/util/grub.d/10_linux.in grub-2.12/util/grub.d/10_linux.i
  # loop-AES arranges things so that /dev/loop/X can be our root device, but
  # the initrds that Linux uses don't like that.
  case ${GRUB_DEVICE} in
-diff -ur grub-2.12.orig/util/grub.d/20_linux_xen.in grub-2.12/util/grub.d/20_linux_xen.in
---- grub-2.12.orig/util/grub.d/20_linux_xen.in 2025-04-27 17:47:18.122797143 +0200
-+++ grub-2.12/util/grub.d/20_linux_xen.in      2025-04-27 17:51:45.263592919 +0200
+diff -ur grub-2.14.orig/util/grub.d/20_linux_xen.in grub-2.14/util/grub.d/20_linux_xen.in
+--- grub-2.14.orig/util/grub.d/20_linux_xen.in 2026-05-19 16:49:06.410014719 +0200
++++ grub-2.14/util/grub.d/20_linux_xen.in      2026-05-19 16:49:25.118095262 +0200
 @@ -35,6 +35,10 @@
    CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
  fi
@@ -26,15 +26,15 @@ diff -ur grub-2.12.orig/util/grub.d/20_linux_xen.in grub-2.12/util/grub.d/20_lin
  # loop-AES arranges things so that /dev/loop/X can be our root device, but
  # the initrds that Linux uses don't like that.
  case ${GRUB_DEVICE} in
-diff -ur grub-2.12.orig/util/grub-mkconfig.in grub-2.12/util/grub-mkconfig.in
---- grub-2.12.orig/util/grub-mkconfig.in       2025-04-27 17:47:18.118797131 +0200
-+++ grub-2.12/util/grub-mkconfig.in    2025-04-27 17:47:43.810873653 +0200
-@@ -271,7 +271,8 @@
-   GRUB_ENABLE_CRYPTODISK \
+diff -ur grub-2.14.orig/util/grub-mkconfig.in grub-2.14/util/grub-mkconfig.in
+--- grub-2.14.orig/util/grub-mkconfig.in       2026-05-19 16:49:06.406014701 +0200
++++ grub-2.14/util/grub-mkconfig.in    2026-05-19 16:50:35.010392262 +0200
+@@ -272,7 +272,8 @@
    GRUB_BADRAM \
    GRUB_OS_PROBER_SKIP_LIST \
--  GRUB_DISABLE_SUBMENU
-+  GRUB_DISABLE_SUBMENU \
+   GRUB_DISABLE_SUBMENU \
+-  GRUB_FORCE_EFI_ALL_VIDEO
++  GRUB_FORCE_EFI_ALL_VIDEO \
 +  GRUB_RESTRICTED
  
  if test "x${grub_cfg}" != "x"; then
index 0c0c7e74e8feffc534187634beb86a96a48abebf..bee945ac0725028956ecf688e228e5d2db50a4a8 100644 (file)
@@ -1,7 +1,7 @@
-diff -ur grub-2.12.orig/docs/grub.info-1 grub-2.12/docs/grub.info-1
---- grub-2.12.orig/docs/grub.info-1    2023-12-20 17:03:44.000000000 +0100
-+++ grub-2.12/docs/grub.info-1 2025-04-26 21:20:04.270885832 +0200
-@@ -1204,7 +1204,7 @@
+diff -ur grub-2.14.orig/docs/grub.info-1 grub-2.14/docs/grub.info-1
+--- grub-2.14.orig/docs/grub.info-1    2026-01-14 19:38:06.000000000 +0100
++++ grub-2.14/docs/grub.info-1 2026-05-19 16:32:53.929828293 +0200
+@@ -1210,7 +1210,7 @@
  Booting::, and *note Shell-like scripting::), and to disable any system
  provided by their distribution to automatically run 'grub-mkconfig'.
  
@@ -10,7 +10,7 @@ diff -ur grub-2.12.orig/docs/grub.info-1 grub-2.12/docs/grub.info-1
  'grub-mkconfig'.  It is sourced by a shell script, and so must be valid
  POSIX shell input; normally, it will just be a sequence of 'KEY=value'
  lines, but if the value contains spaces or other special characters then
-@@ -1212,7 +1212,7 @@
+@@ -1218,7 +1218,7 @@
  
       GRUB_TERMINAL_INPUT="console serial"
  
@@ -19,7 +19,7 @@ diff -ur grub-2.12.orig/docs/grub.info-1 grub-2.12/docs/grub.info-1
  
  'GRUB_DEFAULT'
       The default menu entry.  This may be a number, in which case it
-@@ -1841,7 +1841,7 @@
+@@ -1858,7 +1858,7 @@
  
     'GRUB_DISABLE_OS_PROBER=true'
  
@@ -28,7 +28,7 @@ diff -ur grub-2.12.orig/docs/grub.info-1 grub-2.12/docs/grub.info-1
  
     Then write a grub.cfg (/mnt/boot/grub/grub.cfg):
  
-@@ -2681,7 +2681,7 @@
+@@ -2702,7 +2702,7 @@
  Some laptop vendors provide an additional power-on button which boots
  another OS. GRUB supports such buttons with the 'GRUB_TIMEOUT_BUTTON',
  'GRUB_TIMEOUT_STYLE_BUTTON', 'GRUB_DEFAULT_BUTTON', and
@@ -37,10 +37,10 @@ diff -ur grub-2.12.orig/docs/grub.info-1 grub-2.12/docs/grub.info-1
  configuration::).  'GRUB_TIMEOUT_BUTTON', 'GRUB_TIMEOUT_STYLE_BUTTON',
  and 'GRUB_DEFAULT_BUTTON' are used instead of the corresponding
  variables without the '_BUTTON' suffix when powered on using the special
-diff -ur grub-2.12.orig/docs/grub.texi grub-2.12/docs/grub.texi
---- grub-2.12.orig/docs/grub.texi      2023-12-05 15:25:33.000000000 +0100
-+++ grub-2.12/docs/grub.texi   2025-04-26 21:20:10.962904809 +0200
-@@ -1284,7 +1284,7 @@
+diff -ur grub-2.14.orig/docs/grub.texi grub-2.14/docs/grub.texi
+--- grub-2.14.orig/docs/grub.texi      2026-01-08 19:22:14.000000000 +0100
++++ grub-2.14/docs/grub.texi   2026-05-19 16:32:53.929828293 +0200
+@@ -1289,7 +1289,7 @@
  (@pxref{Booting}, and @ref{Shell-like scripting}), and to disable any system
  provided by their distribution to automatically run @command{grub-mkconfig}.
  
@@ -49,7 +49,7 @@ diff -ur grub-2.12.orig/docs/grub.texi grub-2.12/docs/grub.texi
  @command{grub-mkconfig}.  It is sourced by a shell script, and so must be
  valid POSIX shell input; normally, it will just be a sequence of
  @samp{KEY=value} lines, but if the value contains spaces or other special
-@@ -1294,7 +1294,7 @@
+@@ -1299,7 +1299,7 @@
  GRUB_TERMINAL_INPUT="console serial"
  @end example
  
@@ -58,7 +58,7 @@ diff -ur grub-2.12.orig/docs/grub.texi grub-2.12/docs/grub.texi
  
  @table @samp
  @item GRUB_DEFAULT
-@@ -1908,7 +1908,7 @@
+@@ -1923,7 +1923,7 @@
  
  @code{GRUB_DISABLE_OS_PROBER=true}
  
@@ -67,7 +67,7 @@ diff -ur grub-2.12.orig/docs/grub.texi grub-2.12/docs/grub.texi
  
  Then write a grub.cfg (/mnt/boot/grub/grub.cfg):
  
-@@ -2740,7 +2740,7 @@
+@@ -2758,7 +2758,7 @@
  Some laptop vendors provide an additional power-on button which boots
  another OS.  GRUB supports such buttons with the @samp{GRUB_TIMEOUT_BUTTON},
  @samp{GRUB_TIMEOUT_STYLE_BUTTON}, @samp{GRUB_DEFAULT_BUTTON}, and
@@ -76,9 +76,9 @@ diff -ur grub-2.12.orig/docs/grub.texi grub-2.12/docs/grub.texi
  configuration}).  @samp{GRUB_TIMEOUT_BUTTON},
  @samp{GRUB_TIMEOUT_STYLE_BUTTON}, and @samp{GRUB_DEFAULT_BUTTON} are used
  instead of the corresponding variables without the @samp{_BUTTON} suffix
-diff -ur grub-2.12.orig/grub-core/osdep/aros/config.c grub-2.12/grub-core/osdep/aros/config.c
---- grub-2.12.orig/grub-core/osdep/aros/config.c       2022-03-21 18:47:00.000000000 +0100
-+++ grub-2.12/grub-core/osdep/aros/config.c    2025-04-26 21:51:11.459833102 +0200
+diff -ur grub-2.14.orig/grub-core/osdep/aros/config.c grub-2.14/grub-core/osdep/aros/config.c
+--- grub-2.14.orig/grub-core/osdep/aros/config.c       2022-03-21 18:47:00.000000000 +0100
++++ grub-2.14/grub-core/osdep/aros/config.c    2026-05-19 16:32:53.929828293 +0200
 @@ -36,7 +36,7 @@
    static char *value = NULL;
    if (!value)
@@ -88,9 +88,9 @@ diff -ur grub-2.12.orig/grub-core/osdep/aros/config.c grub-2.12/grub-core/osdep/
    return value;
  }
  
-diff -ur grub-2.12.orig/grub-core/osdep/unix/config.c grub-2.12/grub-core/osdep/unix/config.c
---- grub-2.12.orig/grub-core/osdep/unix/config.c       2022-03-21 18:47:00.000000000 +0100
-+++ grub-2.12/grub-core/osdep/unix/config.c    2025-04-26 21:51:02.807812014 +0200
+diff -ur grub-2.14.orig/grub-core/osdep/unix/config.c grub-2.14/grub-core/osdep/unix/config.c
+--- grub-2.14.orig/grub-core/osdep/unix/config.c       2022-03-21 18:47:00.000000000 +0100
++++ grub-2.14/grub-core/osdep/unix/config.c    2026-05-19 16:32:53.929828293 +0200
 @@ -36,7 +36,7 @@
    static char *value = NULL;
    if (!value)
@@ -100,11 +100,11 @@ diff -ur grub-2.12.orig/grub-core/osdep/unix/config.c grub-2.12/grub-core/osdep/
    return value;
  }
  
-diff -ur grub-2.12.orig/po/ast.po grub-2.12/po/ast.po
---- grub-2.12.orig/po/ast.po   2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/ast.po        2025-04-26 21:20:44.418999686 +0200
-@@ -7428,13 +7428,13 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/ast.po grub-2.14/po/ast.po
+--- grub-2.14.orig/po/ast.po   2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/ast.po        2026-05-19 16:32:53.933828310 +0200
+@@ -8455,13 +8455,13 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -119,7 +119,7 @@ diff -ur grub-2.12.orig/po/ast.po grub-2.12/po/ast.po
  " rellena un informe de fallos col ficheru de darréu axuntáu\n"
  "%s ."
  
-@@ -7511,8 +7511,8 @@
+@@ -8538,8 +8538,8 @@
  msgstr "Afita la entrada predeterminada del menú d'arranque de GRUB."
  
  #: util/grub-set-default.in:49
@@ -130,11 +130,11 @@ diff -ur grub-2.12.orig/po/ast.po grub-2.12/po/ast.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/ca.po grub-2.12/po/ca.po
---- grub-2.12.orig/po/ca.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/ca.po 2025-04-26 21:21:36.791148224 +0200
-@@ -7474,13 +7474,13 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/ca.po grub-2.14/po/ca.po
+--- grub-2.14.orig/po/ca.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/ca.po 2026-05-19 16:32:53.933828310 +0200
+@@ -8498,13 +8498,13 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -148,8 +148,8 @@ diff -ur grub-2.12.orig/po/ca.po grub-2.12/po/ca.po
 +"Assegureu-vos que no hi ha errors a /etc/sysconfig/grub o als fitxers\n"
  " /etc/grub.d/* o bé envieu un informe d'error adjuntant el fitxer %s "
  
- #: util/grub-mkconfig.in:315
-@@ -7553,8 +7553,8 @@
+ #: util/grub-mkconfig.in:316
+@@ -8577,8 +8577,8 @@
  msgstr "Estableix l'entrada del menú d'arrencada per defecte del GRUB."
  
  #: util/grub-set-default.in:49
@@ -160,11 +160,11 @@ diff -ur grub-2.12.orig/po/ca.po grub-2.12/po/ca.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/da.po grub-2.12/po/da.po
---- grub-2.12.orig/po/da.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/da.po 2025-04-26 21:22:52.575363166 +0200
-@@ -7439,13 +7439,13 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/da.po grub-2.14/po/da.po
+--- grub-2.14.orig/po/da.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/da.po 2026-05-19 16:32:53.933828310 +0200
+@@ -8463,13 +8463,13 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -178,8 +178,8 @@ diff -ur grub-2.12.orig/po/da.po grub-2.12/po/da.po
 +"i filerne /etc/sysconfig/grub eller /etc/grub.d/*, eller\n"
  "indsend venligst en fejlrapport med filen %s vedhæftet."
  
- #: util/grub-mkconfig.in:315
-@@ -7514,8 +7514,8 @@
+ #: util/grub-mkconfig.in:316
+@@ -8538,8 +8538,8 @@
  msgstr "Sæt standardmenuindgangen for opstart i GRUB."
  
  #: util/grub-set-default.in:49
@@ -190,11 +190,11 @@ diff -ur grub-2.12.orig/po/da.po grub-2.12/po/da.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/de_CH.po grub-2.12/po/de_CH.po
---- grub-2.12.orig/po/de_CH.po 2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/de_CH.po      2025-04-26 21:21:13.035080850 +0200
-@@ -7433,12 +7433,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/de_CH.po grub-2.14/po/de_CH.po
+--- grub-2.14.orig/po/de_CH.po 2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/de_CH.po      2026-05-19 16:32:53.933828310 +0200
+@@ -8533,12 +8533,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -208,7 +208,7 @@ diff -ur grub-2.12.orig/po/de_CH.po grub-2.12/po/de_CH.po
  "und /etc/grub.d/* fehlerfrei sind oder melden Sie einen Fehler\n"
  "und hängen die Datei %s an."
  
-@@ -7514,8 +7514,8 @@
+@@ -8614,8 +8614,8 @@
  msgstr "Den Standardeintrag im GRUB-Bootmenü festlegen."
  
  #: util/grub-set-default.in:49
@@ -219,11 +219,11 @@ diff -ur grub-2.12.orig/po/de_CH.po grub-2.12/po/de_CH.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/de@hebrew.po grub-2.12/po/de@hebrew.po
---- grub-2.12.orig/po/de@hebrew.po     2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/de@hebrew.po  2025-04-26 21:21:55.659201739 +0200
-@@ -7426,7 +7426,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/de@hebrew.po grub-2.14/po/de@hebrew.po
+--- grub-2.14.orig/po/de@hebrew.po     2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/de@hebrew.po  2026-05-19 16:34:31.322247573 +0200
+@@ -8516,7 +8516,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -231,20 +231,20 @@ diff -ur grub-2.12.orig/po/de@hebrew.po grub-2.12/po/de@hebrew.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7507,7 +7507,7 @@
+@@ -8597,7 +8597,7 @@
  msgstr "דענ שתאנדארדעִינתראג ִימ גרוּבּ-בּוֹוֹתמענֻ פֿעשתלעגענ."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
 +msgid "This requires setting GRUB_DEFAULT=saved in %s/sysconfig/grub.\\n"
- msgstr "דאזוּ מוּשש גרוּבּ_דעפֿאוּלת=שאבֿעד ִינ %s/דעפֿאוּלת/גרוּבּ געשעתזת וערדענ.\\נ"
+ msgstr "דאזוּ מוּשש גרוּבּ_דעפֿאוּלת=שאבֿעד ִינ %s/דעפֿאוּלת/גרוּבּ געשעתזת וערדענ.\\n"
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/de.po grub-2.12/po/de.po
---- grub-2.12.orig/po/de.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/de.po 2025-04-26 21:23:22.459447930 +0200
-@@ -7432,12 +7432,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/de.po grub-2.14/po/de.po
+--- grub-2.14.orig/po/de.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/de.po 2026-05-19 16:32:53.937828327 +0200
+@@ -8532,12 +8532,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -258,7 +258,7 @@ diff -ur grub-2.12.orig/po/de.po grub-2.12/po/de.po
  "und /etc/grub.d/* fehlerfrei sind oder melden Sie einen Fehler\n"
  "und hängen die Datei %s an."
  
-@@ -7513,8 +7513,8 @@
+@@ -8613,8 +8613,8 @@
  msgstr "Den Standardeintrag im GRUB-Bootmenü festlegen."
  
  #: util/grub-set-default.in:49
@@ -269,11 +269,11 @@ diff -ur grub-2.12.orig/po/de.po grub-2.12/po/de.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/en@arabic.po grub-2.12/po/en@arabic.po
---- grub-2.12.orig/po/en@arabic.po     2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/en@arabic.po  2025-04-26 21:21:21.175103936 +0200
-@@ -7336,7 +7336,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/en@arabic.po grub-2.14/po/en@arabic.po
+--- grub-2.14.orig/po/en@arabic.po     2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/en@arabic.po  2026-05-19 16:34:26.474226703 +0200
+@@ -8390,7 +8390,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -281,20 +281,20 @@ diff -ur grub-2.12.orig/po/en@arabic.po grub-2.12/po/en@arabic.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7414,7 +7414,7 @@
+@@ -8468,7 +8468,7 @@
  msgstr "سعت تهع دعفاولت بووت معنو عنتري فور غروب."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
 +msgid "This requires setting GRUB_DEFAULT=saved in %s/sysconfig/grub.\\n"
- msgstr "تهִيس رعقوִيرعس سعتتִينغ غروب_دعفاولت=ساوعد ִين %s/دعفاولت/غروب.\\ن"
+ msgstr "تهִيس رعقوִيرعس سعتتִينغ غروب_دعفاولت=ساوعد ִين %s/دعفاولت/غروب.\\n"
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/en@cyrillic.po grub-2.12/po/en@cyrillic.po
---- grub-2.12.orig/po/en@cyrillic.po   2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/en@cyrillic.po        2025-04-26 21:22:22.807278737 +0200
-@@ -7335,7 +7335,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/en@cyrillic.po grub-2.14/po/en@cyrillic.po
+--- grub-2.14.orig/po/en@cyrillic.po   2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/en@cyrillic.po        2026-05-19 16:34:21.010203179 +0200
+@@ -8389,7 +8389,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -302,20 +302,20 @@ diff -ur grub-2.12.orig/po/en@cyrillic.po grub-2.12/po/en@cyrillic.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7413,7 +7413,7 @@
+@@ -8467,7 +8467,7 @@
  msgstr "Сет тхе дефаулт боот мену ентрѝ фор ГРУБ."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
 +msgid "This requires setting GRUB_DEFAULT=saved in %s/sysconfig/grub.\\n"
- msgstr "Тхис реќуирес сеттинг ГРУБ_ДЕФАУЛТ=савед ин %s/дефаулт/груб.\\н"
+ msgstr "Тхис реќуирес сеттинг ГРУБ_ДЕФАУЛТ=савед ин %s/дефаулт/груб.\\n"
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/en@greek.po grub-2.12/po/en@greek.po
---- grub-2.12.orig/po/en@greek.po      2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/en@greek.po   2025-04-26 21:24:32.647647004 +0200
-@@ -7335,7 +7335,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/en@greek.po grub-2.14/po/en@greek.po
+--- grub-2.14.orig/po/en@greek.po      2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/en@greek.po   2026-05-19 16:34:14.454174952 +0200
+@@ -8389,7 +8389,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -323,20 +323,20 @@ diff -ur grub-2.12.orig/po/en@greek.po grub-2.12/po/en@greek.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7413,7 +7413,7 @@
+@@ -8467,7 +8467,7 @@
  msgstr "Σετ τχε δεφαυλτ ϭοοτ μενυ εντρϋ φορ ΓΡΥϬ."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
 +msgid "This requires setting GRUB_DEFAULT=saved in %s/sysconfig/grub.\\n"
- msgstr "Τχισ ρεϗυιρεσ σεττινγ ΓΡΥϬ_ΔΕΦΑΥΛΤ=σαβεδ ιν %s/δεφαυλτ/γρυϭ.\\ν"
+ msgstr "Τχισ ρεϗυιρεσ σεττινγ ΓΡΥϬ_ΔΕΦΑΥΛΤ=σαβεδ ιν %s/δεφαυλτ/γρυϭ.\\n"
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/en@hebrew.po grub-2.12/po/en@hebrew.po
---- grub-2.12.orig/po/en@hebrew.po     2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/en@hebrew.po  2025-04-26 21:22:34.515311944 +0200
-@@ -7336,7 +7336,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/en@hebrew.po grub-2.14/po/en@hebrew.po
+--- grub-2.14.orig/po/en@hebrew.po     2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/en@hebrew.po  2026-05-19 16:34:05.694137238 +0200
+@@ -8390,7 +8390,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -344,20 +344,20 @@ diff -ur grub-2.12.orig/po/en@hebrew.po grub-2.12/po/en@hebrew.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7414,7 +7414,7 @@
+@@ -8468,7 +8468,7 @@
  msgstr "שעת תהע דעפֿאוּלת בּוֹוֹת מענוּ ענתריִ פֿוֹר גרוּבּ."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
 +msgid "This requires setting GRUB_DEFAULT=saved in %s/sysconfig/grub.\\n"
- msgstr "תהִיש רעקוִּירעש שעתתִינג גרוּבּ_דעפֿאוּלת=שאבֿעד ִינ %s/דעפֿאוּלת/גרוּבּ.\\נ"
+ msgstr "תהִיש רעקוִּירעש שעתתִינג גרוּבּ_דעפֿאוּלת=שאבֿעד ִינ %s/דעפֿאוּלת/גרוּבּ.\\n"
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/en@piglatin.po grub-2.12/po/en@piglatin.po
---- grub-2.12.orig/po/en@piglatin.po   2023-12-20 17:09:22.000000000 +0100
-+++ grub-2.12/po/en@piglatin.po        2025-04-26 21:23:14.723425987 +0200
-@@ -7510,7 +7510,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/en@piglatin.po grub-2.14/po/en@piglatin.po
+--- grub-2.14.orig/po/en@piglatin.po   2026-01-14 19:46:27.000000000 +0100
++++ grub-2.14/po/en@piglatin.po        2026-05-19 16:32:53.941828344 +0200
+@@ -8648,7 +8648,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -365,7 +365,7 @@ diff -ur grub-2.12.orig/po/en@piglatin.po grub-2.12/po/en@piglatin.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7600,7 +7600,7 @@
+@@ -8738,7 +8738,7 @@
  msgstr "etSay ethay efaultday ootbay enumay entryway orfay UBGRay."
  
  #: util/grub-set-default.in:49
@@ -374,11 +374,11 @@ diff -ur grub-2.12.orig/po/en@piglatin.po grub-2.12/po/en@piglatin.po
  msgstr ""
  "isThay equiresray ettingsay UBGRay_EFAULTDay=avedsay inway %s/efaultday/"
  "ubgray.\\n"
-diff -ur grub-2.12.orig/po/en@quot.po grub-2.12/po/en@quot.po
---- grub-2.12.orig/po/en@quot.po       2023-12-20 17:09:21.000000000 +0100
-+++ grub-2.12/po/en@quot.po    2025-04-26 21:24:17.183603147 +0200
-@@ -7357,12 +7357,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/en@quot.po grub-2.14/po/en@quot.po
+--- grub-2.14.orig/po/en@quot.po       2026-01-14 19:46:26.000000000 +0100
++++ grub-2.14/po/en@quot.po    2026-05-19 16:32:53.945828361 +0200
+@@ -8411,12 +8411,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -392,7 +392,7 @@ diff -ur grub-2.12.orig/po/en@quot.po grub-2.12/po/en@quot.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  
-@@ -7435,8 +7435,8 @@
+@@ -8489,8 +8489,8 @@
  msgstr "Set the default boot menu entry for GRUB."
  
  #: util/grub-set-default.in:49
@@ -403,11 +403,11 @@ diff -ur grub-2.12.orig/po/en@quot.po grub-2.12/po/en@quot.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/eo.po grub-2.12/po/eo.po
---- grub-2.12.orig/po/eo.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/eo.po 2025-04-26 21:24:22.123617156 +0200
-@@ -7304,7 +7304,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/eo.po grub-2.14/po/eo.po
+--- grub-2.14.orig/po/eo.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/eo.po 2026-05-19 16:33:45.918052098 +0200
+@@ -8456,12 +8456,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -415,20 +415,28 @@ diff -ur grub-2.12.orig/po/eo.po grub-2.12/po/eo.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7366,7 +7366,7 @@
- msgstr ""
+ "Sintaksaj eraroj eltrovitaj en la generita agorda dosiero.\n"
+-"Certigu, ke ekzistas neniujn erarojn en /etc/default/grub\n"
++"Certigu, ke ekzistas neniujn erarojn en /etc/sysconfig/grub\n"
+ "kaj dosierojn sub /etc/grub.d aŭ bonvolu sendi raporton pri\n"
+ "la programeraro kun la dosiero %s alkroĉita."
+@@ -8535,8 +8535,8 @@
+ msgstr "Agordi la aprioran menueron por praŝargi per GRUB."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
+-msgstr "Tio postulas la valorizon GRUB_DEFAULT=saved en %S/default/grub.\\n"
 +msgid "This requires setting GRUB_DEFAULT=saved in %s/sysconfig/grub.\\n"
- msgstr ""
++msgstr "Tio postulas la valorizon GRUB_DEFAULT=saved en %S/sysconfig/grub.\\n"
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/es.po grub-2.12/po/es.po
---- grub-2.12.orig/po/es.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/es.po 2025-04-26 21:21:42.587164664 +0200
-@@ -7562,13 +7562,13 @@
- #: util/grub-mkconfig.in:299
+ msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
+diff -ur grub-2.14.orig/po/es.po grub-2.14/po/es.po
+--- grub-2.14.orig/po/es.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/es.po 2026-05-19 16:32:53.945828361 +0200
+@@ -8590,13 +8590,13 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -443,7 +451,7 @@ diff -ur grub-2.12.orig/po/es.po grub-2.12/po/es.po
  "en los ficheros /etc/grub.d/* o, por favor, abra una\n"
  "notificación de errores con el fichero %s adjunto."
  
-@@ -7641,8 +7641,8 @@
+@@ -8669,8 +8669,8 @@
  msgstr "Establece la entrada del menú predeterminada para GRUB."
  
  #: util/grub-set-default.in:49
@@ -454,11 +462,11 @@ diff -ur grub-2.12.orig/po/es.po grub-2.12/po/es.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/fi.po grub-2.12/po/fi.po
---- grub-2.12.orig/po/fi.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/fi.po 2025-04-26 21:22:18.151265528 +0200
-@@ -7416,12 +7416,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/fi.po grub-2.14/po/fi.po
+--- grub-2.14.orig/po/fi.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/fi.po 2026-05-19 16:32:53.945828361 +0200
+@@ -8444,12 +8444,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -472,7 +480,7 @@ diff -ur grub-2.12.orig/po/fi.po grub-2.12/po/fi.po
  "ei ole virheitä, tai tee vikailmoitus liittäen\n"
  "%s mukaan ilmoitukseen."
  
-@@ -7503,9 +7503,9 @@
+@@ -8531,9 +8531,9 @@
  msgstr "Aseta GRUBin käynnistysvalikon oletuskohta."
  
  #: util/grub-set-default.in:49
@@ -484,11 +492,11 @@ diff -ur grub-2.12.orig/po/fi.po grub-2.12/po/fi.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/fr.po grub-2.12/po/fr.po
---- grub-2.12.orig/po/fr.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/fr.po 2025-04-26 21:23:05.015398450 +0200
-@@ -7516,13 +7516,13 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/fr.po grub-2.14/po/fr.po
+--- grub-2.14.orig/po/fr.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/fr.po 2026-05-19 16:32:53.949828379 +0200
+@@ -8616,13 +8616,13 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -502,8 +510,8 @@ diff -ur grub-2.12.orig/po/fr.po grub-2.12/po/fr.po
 +"/etc/sysconfig/grub et /etc/grub.d/*. Sinon veuillez signaler un bogue\n"
  "en joignant le fichier %s."
  
- #: util/grub-mkconfig.in:315
-@@ -7602,9 +7602,9 @@
+ #: util/grub-mkconfig.in:316
+@@ -8702,9 +8702,9 @@
  msgstr "Configurer l'entrée de menu par défaut pour GRUB."
  
  #: util/grub-set-default.in:49
@@ -515,11 +523,11 @@ diff -ur grub-2.12.orig/po/fr.po grub-2.12/po/fr.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/gl.po grub-2.12/po/gl.po
---- grub-2.12.orig/po/gl.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/gl.po 2025-04-26 21:24:11.171586092 +0200
-@@ -7490,12 +7490,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/gl.po grub-2.14/po/gl.po
+--- grub-2.14.orig/po/gl.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/gl.po 2026-05-19 16:32:53.949828379 +0200
+@@ -8509,12 +8509,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -533,7 +541,7 @@ diff -ur grub-2.12.orig/po/gl.po grub-2.12/po/gl.po
  "e nos ficheiros /etc/grub.d/* ou escriba un informe de erro co\n"
  "%s ficheiro anexado."
  
-@@ -7560,9 +7560,9 @@
+@@ -8579,9 +8579,9 @@
  msgstr "Estabelecer a entrada predeterminada do menú de arranque no GRUB."
  
  #: util/grub-set-default.in:49
@@ -545,11 +553,11 @@ diff -ur grub-2.12.orig/po/gl.po grub-2.12/po/gl.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/grub.pot grub-2.12/po/grub.pot
---- grub-2.12.orig/po/grub.pot 2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/grub.pot      2025-04-26 21:22:01.503218314 +0200
-@@ -7155,7 +7155,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/grub.pot grub-2.14/po/grub.pot
+--- grub-2.14.orig/po/grub.pot 2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/grub.pot      2026-05-19 16:32:53.949828379 +0200
+@@ -8154,7 +8154,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -557,7 +565,7 @@ diff -ur grub-2.12.orig/po/grub.pot grub-2.12/po/grub.pot
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7217,7 +7217,7 @@
+@@ -8216,7 +8216,7 @@
  msgstr ""
  
  #: util/grub-set-default.in:49
@@ -566,11 +574,11 @@ diff -ur grub-2.12.orig/po/grub.pot grub-2.12/po/grub.pot
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/he.po grub-2.12/po/he.po
---- grub-2.12.orig/po/he.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/he.po 2025-04-26 21:23:26.147458390 +0200
-@@ -7193,7 +7193,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/he.po grub-2.14/po/he.po
+--- grub-2.14.orig/po/he.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/he.po 2026-05-19 16:35:53.426601052 +0200
+@@ -8226,12 +8226,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -578,7 +586,13 @@ diff -ur grub-2.12.orig/po/he.po grub-2.12/po/he.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7255,8 +7255,8 @@
+ "התגלו שגיאות תחביר בקובץ הגדרות ה־GRUB שנוצר.\n"
+-"נא לוודא שאין שגיאות בקבצים ‎/etc/default/grub\n"
++"נא לוודא שאין שגיאות בקבצים ‎/etc/sysconfig/grub\n"
+ "ו־‎/etc/grub.d/*‎ או בבקשה לדווח על התקלה בצירוף\n"
+ "הקובץ %s."
+@@ -8292,8 +8292,8 @@
  msgstr "הגדרת רשומת ברירת המחדל בתפריט הטעינה ל־GRUB."
  
  #: util/grub-set-default.in:49
@@ -589,11 +603,11 @@ diff -ur grub-2.12.orig/po/he.po grub-2.12/po/he.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/hr.po grub-2.12/po/hr.po
---- grub-2.12.orig/po/hr.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/hr.po 2025-04-26 21:23:57.651547748 +0200
-@@ -7397,12 +7397,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/hr.po grub-2.14/po/hr.po
+--- grub-2.14.orig/po/hr.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/hr.po 2026-05-19 16:32:53.953828396 +0200
+@@ -8424,12 +8424,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -607,7 +621,7 @@ diff -ur grub-2.12.orig/po/hr.po grub-2.12/po/hr.po
  "i /etc/grub.d/* datotekama ili pošaljite izvješće greške s\n"
  "%s priloženoj datoteci."
  
-@@ -7475,8 +7475,8 @@
+@@ -8502,8 +8502,8 @@
  msgstr "Postavi zadanu stavku izbornika pokretanja za GRUB."
  
  #: util/grub-set-default.in:49
@@ -618,11 +632,11 @@ diff -ur grub-2.12.orig/po/hr.po grub-2.12/po/hr.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/hu.po grub-2.12/po/hu.po
---- grub-2.12.orig/po/hu.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/hu.po 2025-04-26 21:20:54.963029591 +0200
-@@ -7431,12 +7431,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/hu.po grub-2.14/po/hu.po
+--- grub-2.14.orig/po/hu.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/hu.po 2026-05-19 16:32:53.953828396 +0200
+@@ -8458,12 +8458,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -636,7 +650,7 @@ diff -ur grub-2.12.orig/po/hu.po grub-2.12/po/hu.po
  "és a /etc/grub.d/* fájlokban, vagy küldjön egy hibajelentést a(z)\n"
  "%s fájllal mellékelve."
  
-@@ -7513,9 +7513,9 @@
+@@ -8540,9 +8540,9 @@
  msgstr "A GRUB alapértelmezett rendszerindítási menübejegyzésének beállítása."
  
  #: util/grub-set-default.in:49
@@ -648,11 +662,11 @@ diff -ur grub-2.12.orig/po/hu.po grub-2.12/po/hu.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/id.po grub-2.12/po/id.po
---- grub-2.12.orig/po/id.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/id.po 2025-04-26 21:23:40.283498490 +0200
-@@ -7470,7 +7470,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/id.po grub-2.14/po/id.po
+--- grub-2.14.orig/po/id.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/id.po 2026-05-19 16:34:46.246311825 +0200
+@@ -8490,13 +8490,13 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -660,20 +674,29 @@ diff -ur grub-2.12.orig/po/id.po grub-2.12/po/id.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7533,7 +7533,7 @@
- msgstr ""
+ "Kesalahan sintaks terdeteksi dalam berkas konfigurasi GRUB\n"
+ "yang dihasilkan. Pastikan tidak ada kesalahan dalam berkas\n"
+-"/etc/default/grub dan /etc/grub.d/* atau silakan buat laporan\n"
++"/etc/sysconfig/grub dan /etc/grub.d/* atau silakan buat laporan\n"
+ "bug dengan berkas %s terlampir."
+ #: util/grub-mkconfig.in:316
+@@ -8570,8 +8570,8 @@
+ msgstr "Tata entri menu boot baku untuk GRUB."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
+-msgstr "Ini memerlukan penataan GRUB_DEFAULT=saved di %s/default/grub.\\n"
 +msgid "This requires setting GRUB_DEFAULT=saved in %s/sysconfig/grub.\\n"
- msgstr ""
++msgstr "Ini memerlukan penataan GRUB_DEFAULT=saved di %s/sysconfig/grub.\\n"
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/it.po grub-2.12/po/it.po
---- grub-2.12.orig/po/it.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/it.po 2025-04-26 21:24:28.815636136 +0200
-@@ -7482,7 +7482,7 @@
- #: util/grub-mkconfig.in:299
+ msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
+diff -ur grub-2.14.orig/po/it.po grub-2.14/po/it.po
+--- grub-2.14.orig/po/it.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/it.po 2026-05-19 16:32:53.957828413 +0200
+@@ -8509,7 +8509,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -681,7 +704,7 @@ diff -ur grub-2.12.orig/po/it.po grub-2.12/po/it.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7548,7 +7548,7 @@
+@@ -8575,7 +8575,7 @@
  msgstr ""
  
  #: util/grub-set-default.in:49
@@ -690,11 +713,11 @@ diff -ur grub-2.12.orig/po/it.po grub-2.12/po/it.po
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/ja.po grub-2.12/po/ja.po
---- grub-2.12.orig/po/ja.po    2023-12-20 17:09:18.000000000 +0100
-+++ grub-2.12/po/ja.po 2025-04-26 21:20:18.178925273 +0200
-@@ -7318,7 +7318,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/ja.po grub-2.14/po/ja.po
+--- grub-2.14.orig/po/ja.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/ja.po 2026-05-19 16:32:53.957828413 +0200
+@@ -8336,7 +8336,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -702,7 +725,7 @@ diff -ur grub-2.12.orig/po/ja.po grub-2.12/po/ja.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7380,7 +7380,7 @@
+@@ -8398,7 +8398,7 @@
  msgstr ""
  
  #: util/grub-set-default.in:49
@@ -711,11 +734,11 @@ diff -ur grub-2.12.orig/po/ja.po grub-2.12/po/ja.po
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/ka.po grub-2.12/po/ka.po
---- grub-2.12.orig/po/ka.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/ka.po 2025-04-26 21:20:48.571011463 +0200
-@@ -7215,7 +7215,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/ka.po grub-2.14/po/ka.po
+--- grub-2.14.orig/po/ka.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/ka.po 2026-05-19 16:32:53.957828413 +0200
+@@ -8249,7 +8249,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -723,7 +746,7 @@ diff -ur grub-2.12.orig/po/ka.po grub-2.12/po/ka.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7277,7 +7277,7 @@
+@@ -8311,7 +8311,7 @@
  msgstr "GRUB-ის მენიუს ნაგულისხმები პუნქტის დაყენება."
  
  #: util/grub-set-default.in:49
@@ -732,11 +755,11 @@ diff -ur grub-2.12.orig/po/ka.po grub-2.12/po/ka.po
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/ko.po grub-2.12/po/ko.po
---- grub-2.12.orig/po/ko.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/ko.po 2025-04-26 21:49:54.163644672 +0200
-@@ -7342,12 +7342,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/ko.po grub-2.14/po/ko.po
+--- grub-2.14.orig/po/ko.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/ko.po 2026-05-19 16:32:53.957828413 +0200
+@@ -8402,12 +8402,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -749,8 +772,8 @@ diff -ur grub-2.12.orig/po/ko.po grub-2.12/po/ko.po
 +"/etc/sysconfig/grub 파일과 and /etc/grub.d/* 파일에 오류가 없는지\n"
  "확인하시고 %s 파일을 첨부하여 버그 보고서를 제출하십시오."
  
- #: util/grub-mkconfig.in:315
-@@ -7416,8 +7416,8 @@
+ #: util/grub-mkconfig.in:316
+@@ -8476,8 +8476,8 @@
  msgstr "GRUB 기본 부팅 메뉴 항목을 설정합니다."
  
  #: util/grub-set-default.in:49
@@ -761,11 +784,11 @@ diff -ur grub-2.12.orig/po/ko.po grub-2.12/po/ko.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/lg.po grub-2.12/po/lg.po
---- grub-2.12.orig/po/lg.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/lg.po 2025-04-26 21:24:42.071673736 +0200
-@@ -7185,7 +7185,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/lg.po grub-2.14/po/lg.po
+--- grub-2.14.orig/po/lg.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/lg.po 2026-05-19 16:32:53.961828431 +0200
+@@ -8186,7 +8186,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -773,7 +796,7 @@ diff -ur grub-2.12.orig/po/lg.po grub-2.12/po/lg.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7247,7 +7247,7 @@
+@@ -8248,7 +8248,7 @@
  msgstr ""
  
  #: util/grub-set-default.in:49
@@ -782,11 +805,11 @@ diff -ur grub-2.12.orig/po/lg.po grub-2.12/po/lg.po
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/lt.po grub-2.12/po/lt.po
---- grub-2.12.orig/po/lt.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/lt.po 2025-04-26 21:23:36.715488368 +0200
-@@ -7365,12 +7365,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/lt.po grub-2.14/po/lt.po
+--- grub-2.14.orig/po/lt.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/lt.po 2026-05-19 16:32:53.961828431 +0200
+@@ -8387,12 +8387,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -800,7 +823,7 @@ diff -ur grub-2.12.orig/po/lt.po grub-2.12/po/lt.po
  "ir /etc/grub.d/* failuose arba praneškite apie klaidą\n"
  "prisegdami %s failą."
  
-@@ -7433,8 +7433,8 @@
+@@ -8455,8 +8455,8 @@
  msgstr "Nurodyti numatytąjį numatytąjį paleidimo GRUB meniu įrašą."
  
  #: util/grub-set-default.in:49
@@ -811,11 +834,11 @@ diff -ur grub-2.12.orig/po/lt.po grub-2.12/po/lt.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/nb.po grub-2.12/po/nb.po
---- grub-2.12.orig/po/nb.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/nb.po 2025-04-26 21:23:44.367510074 +0200
-@@ -7399,12 +7399,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/nb.po grub-2.14/po/nb.po
+--- grub-2.14.orig/po/nb.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/nb.po 2026-05-19 16:32:53.961828431 +0200
+@@ -8426,12 +8426,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -829,7 +852,7 @@ diff -ur grub-2.12.orig/po/nb.po grub-2.12/po/nb.po
  "ikke innheholder feil, og send inn en feilrapport\n"
  "med %s vedlagt hvis du fremdeles har problemer."
  
-@@ -7479,9 +7479,9 @@
+@@ -8506,9 +8506,9 @@
  msgstr "Velg standardoppføring på GRUB-oppstartsmenyen."
  
  #: util/grub-set-default.in:49
@@ -841,11 +864,11 @@ diff -ur grub-2.12.orig/po/nb.po grub-2.12/po/nb.po
  "\\n"
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/nl.po grub-2.12/po/nl.po
---- grub-2.12.orig/po/nl.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/nl.po 2025-04-26 21:21:01.231047371 +0200
-@@ -7458,12 +7458,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/nl.po grub-2.14/po/nl.po
+--- grub-2.14.orig/po/nl.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/nl.po 2026-05-19 16:32:53.961828431 +0200
+@@ -8446,12 +8446,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -859,7 +882,7 @@ diff -ur grub-2.12.orig/po/nl.po grub-2.12/po/nl.po
  "noch in de bestanden in /etc/grub.d/.  Rapporteer anders een fout, met het\n"
  "bestand %s als bijlage."
  
-@@ -7533,9 +7533,9 @@
+@@ -8521,9 +8521,9 @@
  msgstr "Het standaardmenu-item voor GRUB instellen."
  
  #: util/grub-set-default.in:49
@@ -871,11 +894,11 @@ diff -ur grub-2.12.orig/po/nl.po grub-2.12/po/nl.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/pa.po grub-2.12/po/pa.po
---- grub-2.12.orig/po/pa.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/pa.po 2025-04-26 21:22:29.351297297 +0200
-@@ -7251,7 +7251,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/pa.po grub-2.14/po/pa.po
+--- grub-2.14.orig/po/pa.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/pa.po 2026-05-19 16:32:53.965828448 +0200
+@@ -8265,7 +8265,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -883,7 +906,7 @@ diff -ur grub-2.12.orig/po/pa.po grub-2.12/po/pa.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7313,7 +7313,7 @@
+@@ -8327,7 +8327,7 @@
  msgstr "ਗਰਬ ਲਈ ਮੂਲ ਬੂਟ ਮੇਨੂ ਐਂਟਰੀ ਸੈੱਟ ਕਰੋ।"
  
  #: util/grub-set-default.in:49
@@ -892,11 +915,11 @@ diff -ur grub-2.12.orig/po/pa.po grub-2.12/po/pa.po
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/pl.po grub-2.12/po/pl.po
---- grub-2.12.orig/po/pl.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/pl.po 2025-04-26 21:20:35.298973828 +0200
-@@ -7411,12 +7411,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/pl.po grub-2.14/po/pl.po
+--- grub-2.14.orig/po/pl.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/pl.po 2026-05-19 16:32:53.965828448 +0200
+@@ -8442,12 +8442,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -910,7 +933,7 @@ diff -ur grub-2.12.orig/po/pl.po grub-2.12/po/pl.po
  "oraz /etc/grub.d/* albo wypełnić raport błędu z załączonym plikiem\n"
  "%s."
  
-@@ -7492,8 +7492,8 @@
+@@ -8523,8 +8523,8 @@
  msgstr "Ustawia domyślny wpis menu dla GRUB-a."
  
  #: util/grub-set-default.in:49
@@ -921,11 +944,11 @@ diff -ur grub-2.12.orig/po/pl.po grub-2.12/po/pl.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/pt_BR.po grub-2.12/po/pt_BR.po
---- grub-2.12.orig/po/pt_BR.po 2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/pt_BR.po      2025-04-26 21:22:48.039350302 +0200
-@@ -7438,7 +7438,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/pt_BR.po grub-2.14/po/pt_BR.po
+--- grub-2.14.orig/po/pt_BR.po 2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/pt_BR.po      2026-05-19 16:32:53.965828448 +0200
+@@ -8461,7 +8461,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -933,7 +956,7 @@ diff -ur grub-2.12.orig/po/pt_BR.po grub-2.12/po/pt_BR.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7502,7 +7502,7 @@
+@@ -8525,7 +8525,7 @@
  msgstr "Definir a entrada do menu padrão para o GRUB."
  
  #: util/grub-set-default.in:49
@@ -942,11 +965,11 @@ diff -ur grub-2.12.orig/po/pt_BR.po grub-2.12/po/pt_BR.po
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/pt.po grub-2.12/po/pt.po
---- grub-2.12.orig/po/pt.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/pt.po 2025-04-26 21:21:47.527178676 +0200
-@@ -7414,12 +7414,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/pt.po grub-2.14/po/pt.po
+--- grub-2.14.orig/po/pt.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/pt.po 2026-05-19 16:32:53.965828448 +0200
+@@ -8477,12 +8477,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -960,7 +983,7 @@ diff -ur grub-2.12.orig/po/pt.po grub-2.12/po/pt.po
  "e /etc/grub.d/* files ou, por favor, envie um relatório com\n"
  "o ficheiro %s anexado."
  
-@@ -7493,8 +7493,8 @@
+@@ -8556,8 +8556,8 @@
  msgstr "Predefinir a entrada GRUB de arranque."
  
  #: util/grub-set-default.in:49
@@ -971,11 +994,11 @@ diff -ur grub-2.12.orig/po/pt.po grub-2.12/po/pt.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/ro.po grub-2.12/po/ro.po
---- grub-2.12.orig/po/ro.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/ro.po 2025-04-26 21:24:47.755689857 +0200
-@@ -7611,13 +7611,13 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/ro.po grub-2.14/po/ro.po
+--- grub-2.14.orig/po/ro.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/ro.po 2026-05-19 16:32:53.969828465 +0200
+@@ -8724,13 +8724,13 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -990,7 +1013,7 @@ diff -ur grub-2.12.orig/po/ro.po grub-2.12/po/ro.po
  "și „/etc/grub.d/*” sau trimiteți un raport de eroare cu fișierul\n"
  "„%s” atașat."
  
-@@ -7700,9 +7700,9 @@
+@@ -8813,9 +8813,9 @@
  msgstr "Stabilește intrarea implicită din meniul de pornire pentru GRUB."
  
  #: util/grub-set-default.in:49
@@ -1002,11 +1025,11 @@ diff -ur grub-2.12.orig/po/ro.po grub-2.12/po/ro.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/ru.po grub-2.12/po/ru.po
---- grub-2.12.orig/po/ru.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/ru.po 2025-04-26 21:22:59.727383451 +0200
-@@ -7426,12 +7426,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/ru.po grub-2.14/po/ru.po
+--- grub-2.14.orig/po/ru.po    2026-01-14 19:46:21.000000000 +0100
++++ grub-2.14/po/ru.po 2026-05-19 16:32:53.969828465 +0200
+@@ -8444,12 +8444,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1020,7 +1043,7 @@ diff -ur grub-2.12.orig/po/ru.po grub-2.12/po/ru.po
  "и /etc/grub.d/* ошибки отсутствуют или пошлите сообщение об ошибке\n"
  "в прикреплённым файлом %s."
  
-@@ -7506,8 +7506,8 @@
+@@ -8524,8 +8524,8 @@
  msgstr "Назначает пункт меню GRUB для загрузки по умолчанию."
  
  #: util/grub-set-default.in:49
@@ -1031,11 +1054,11 @@ diff -ur grub-2.12.orig/po/ru.po grub-2.12/po/ru.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/sl.po grub-2.12/po/sl.po
---- grub-2.12.orig/po/sl.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/sl.po 2025-04-26 21:20:40.110987471 +0200
-@@ -7448,12 +7448,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/sl.po grub-2.14/po/sl.po
+--- grub-2.14.orig/po/sl.po    2026-01-14 19:46:22.000000000 +0100
++++ grub-2.14/po/sl.po 2026-05-19 16:32:53.969828465 +0200
+@@ -8464,12 +8464,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1049,7 +1072,7 @@ diff -ur grub-2.12.orig/po/sl.po grub-2.12/po/sl.po
  "/etc/grub.d/* ni napak ali pa pošljite poročilo o hrošču s pripeto\n"
  "datoteko %s."
  
-@@ -7514,7 +7514,7 @@
+@@ -8530,7 +8530,7 @@
  msgstr "Nastavi privzeti vnos menija zagona za GRUB."
  
  #: util/grub-set-default.in:49
@@ -1058,11 +1081,11 @@ diff -ur grub-2.12.orig/po/sl.po grub-2.12/po/sl.po
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/po/sr.po grub-2.12/po/sr.po
---- grub-2.12.orig/po/sr.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/sr.po 2025-04-26 21:24:36.903659075 +0200
-@@ -7386,12 +7386,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/sr.po grub-2.14/po/sr.po
+--- grub-2.14.orig/po/sr.po    2026-01-14 19:46:22.000000000 +0100
++++ grub-2.14/po/sr.po 2026-05-19 16:32:53.969828465 +0200
+@@ -8448,12 +8448,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1076,7 +1099,7 @@ diff -ur grub-2.12.orig/po/sr.po grub-2.12/po/sr.po
  "и „/etc/grub.d/*“ или попуните извештај о грешкама\n"
  "и приложите датотеку „%s“."
  
-@@ -7468,8 +7468,8 @@
+@@ -8530,8 +8530,8 @@
  msgstr "Подешава основни унос изборника подизања за ГРУБ."
  
  #: util/grub-set-default.in:49
@@ -1087,11 +1110,11 @@ diff -ur grub-2.12.orig/po/sr.po grub-2.12/po/sr.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/sv.po grub-2.12/po/sv.po
---- grub-2.12.orig/po/sv.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/sv.po 2025-04-26 21:21:25.623116552 +0200
-@@ -7391,12 +7391,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/sv.po grub-2.14/po/sv.po
+--- grub-2.14.orig/po/sv.po    2026-01-14 19:46:22.000000000 +0100
++++ grub-2.14/po/sv.po 2026-05-19 16:34:57.770361440 +0200
+@@ -8439,12 +8439,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1099,28 +1122,28 @@ diff -ur grub-2.12.orig/po/sv.po grub-2.12/po/sv.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
- "Syntaxfel upptäcktes i den genererade GRUB-konfigurationsfilen.\n"
--"Kontrollera att det inte finns några fel i /etc/default/grub-\n"
-+"Kontrollera att det inte finns några fel i /etc/sysconfig/grub-\n"
- "och /etc/grub.d/*-filerna eller skicka in en felrapport med\n"
- "bifogad %s-fil."
+ "Syntaxfel har upptäckts i den genererade GRUB-konfigurations-\n"
+-"filen. Kontrollera att det inte finns några fel i filerna /etc/default/grub\n"
++"filen. Kontrollera att det inte finns några fel i filerna /etc/sysconfig/grub\n"
+ "och /etc/grub.d/* eller skicka in en felrapport med filen\n"
+ "%s bifogad."
  
-@@ -7469,8 +7469,8 @@
- msgstr "Ange standardpost för GRUBs startmeny."
+@@ -8519,8 +8519,8 @@
+ msgstr "Ställ in standardpost för GRUB:s uppstartsmeny."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
--msgstr "Detta kräver inställningen GRUB_DEFAULT=saved i %s/default/grub.\\n"
+-msgstr "Detta kräver att GRUB_DEFAULT=saved ställs in i %s/default/grub.\\n"
 +msgid "This requires setting GRUB_DEFAULT=saved in %s/sysconfig/grub.\\n"
-+msgstr "Detta kräver inställningen GRUB_DEFAULT=saved i %s/sysconfig/grub.\\n"
++msgstr "Detta kräver att GRUB_DEFAULT=saved ställs in i %s/sysconfig/grub.\\n"
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/tr.po grub-2.12/po/tr.po
---- grub-2.12.orig/po/tr.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/tr.po 2025-04-26 21:21:07.087063979 +0200
-@@ -7299,7 +7299,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/tr.po grub-2.14/po/tr.po
+--- grub-2.14.orig/po/tr.po    2026-01-14 19:46:22.000000000 +0100
++++ grub-2.14/po/tr.po 2026-05-19 16:32:53.973828482 +0200
+@@ -8296,7 +8296,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1128,8 +1151,8 @@ diff -ur grub-2.12.orig/po/tr.po grub-2.12/po/tr.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7363,8 +7363,8 @@
- msgstr "GRUB için öntanımlı önyükleme menü girdisini ayarla."
+@@ -8360,8 +8360,8 @@
+ msgstr "GRUB için öntanımlı açılış menü girdisini ayarla."
  
  #: util/grub-set-default.in:49
 -msgid "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\\n"
@@ -1139,11 +1162,11 @@ diff -ur grub-2.12.orig/po/tr.po grub-2.12/po/tr.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/uk.po grub-2.12/po/uk.po
---- grub-2.12.orig/po/uk.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/uk.po 2025-04-26 21:23:49.691525172 +0200
-@@ -7469,12 +7469,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/uk.po grub-2.14/po/uk.po
+--- grub-2.14.orig/po/uk.po    2026-01-14 19:46:22.000000000 +0100
++++ grub-2.14/po/uk.po 2026-05-19 16:32:53.973828482 +0200
+@@ -8559,12 +8559,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1157,7 +1180,7 @@ diff -ur grub-2.12.orig/po/uk.po grub-2.12/po/uk.po
  "немає помилок, будь ласка, створіть звіт щодо вади з\n"
  "долученням файла %s."
  
-@@ -7552,8 +7552,8 @@
+@@ -8642,8 +8642,8 @@
  msgstr "Встановити типовий пункт меню завантаження для GRUB."
  
  #: util/grub-set-default.in:49
@@ -1168,11 +1191,11 @@ diff -ur grub-2.12.orig/po/uk.po grub-2.12/po/uk.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/vi.po grub-2.12/po/vi.po
---- grub-2.12.orig/po/vi.po    2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/vi.po 2025-04-26 21:22:38.555323401 +0200
-@@ -7399,12 +7399,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/vi.po grub-2.14/po/vi.po
+--- grub-2.14.orig/po/vi.po    2026-01-14 19:46:22.000000000 +0100
++++ grub-2.14/po/vi.po 2026-05-19 16:32:53.977828499 +0200
+@@ -8432,12 +8432,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1186,7 +1209,7 @@ diff -ur grub-2.12.orig/po/vi.po grub-2.12/po/vi.po
  "và /etc/grub.d/* hoặc báo cáo tập tin lỗi này bằng cách đính\n"
  "kèm tập tin %s."
  
-@@ -7481,8 +7481,8 @@
+@@ -8514,8 +8514,8 @@
  msgstr "Đặt mục menu khởi động mặc định cho GRUB."
  
  #: util/grub-set-default.in:49
@@ -1197,11 +1220,11 @@ diff -ur grub-2.12.orig/po/vi.po grub-2.12/po/vi.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/zh_CN.po grub-2.12/po/zh_CN.po
---- grub-2.12.orig/po/zh_CN.po 2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/zh_CN.po      2025-04-26 21:24:04.391566862 +0200
-@@ -7273,12 +7273,12 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/zh_CN.po grub-2.14/po/zh_CN.po
+--- grub-2.14.orig/po/zh_CN.po 2026-01-14 19:46:22.000000000 +0100
++++ grub-2.14/po/zh_CN.po      2026-05-19 16:32:53.977828499 +0200
+@@ -8305,12 +8305,12 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1215,7 +1238,7 @@ diff -ur grub-2.12.orig/po/zh_CN.po grub-2.12/po/zh_CN.po
  "文件中没有错误,或者请提交一个缺陷报告并\n"
  "将 %s 文件作为附件。"
  
-@@ -7348,8 +7348,8 @@
+@@ -8380,8 +8380,8 @@
  msgstr "设置 GRUB 默认引导菜单项。"
  
  #: util/grub-set-default.in:49
@@ -1226,11 +1249,11 @@ diff -ur grub-2.12.orig/po/zh_CN.po grub-2.12/po/zh_CN.po
  
  #: util/grub-set-default.in:56
  msgid "MENU_ENTRY is a number, a menu item title or a menu item identifier."
-diff -ur grub-2.12.orig/po/zh_TW.po grub-2.12/po/zh_TW.po
---- grub-2.12.orig/po/zh_TW.po 2023-12-20 17:09:19.000000000 +0100
-+++ grub-2.12/po/zh_TW.po      2025-04-26 21:21:31.799134069 +0200
-@@ -7383,7 +7383,7 @@
- #: util/grub-mkconfig.in:299
+diff -ur grub-2.14.orig/po/zh_TW.po grub-2.14/po/zh_TW.po
+--- grub-2.14.orig/po/zh_TW.po 2026-01-14 19:46:22.000000000 +0100
++++ grub-2.14/po/zh_TW.po      2026-05-19 16:32:53.977828499 +0200
+@@ -8392,7 +8392,7 @@
+ #: util/grub-mkconfig.in:300
  msgid ""
  "Syntax errors are detected in generated GRUB config file.\n"
 -"Ensure that there are no errors in /etc/default/grub\n"
@@ -1238,7 +1261,7 @@ diff -ur grub-2.12.orig/po/zh_TW.po grub-2.12/po/zh_TW.po
  "and /etc/grub.d/* files or please file a bug report with\n"
  "%s file attached."
  msgstr ""
-@@ -7446,7 +7446,7 @@
+@@ -8455,7 +8455,7 @@
  msgstr ""
  
  #: util/grub-set-default.in:49
@@ -1247,18 +1270,18 @@ diff -ur grub-2.12.orig/po/zh_TW.po grub-2.12/po/zh_TW.po
  msgstr ""
  
  #: util/grub-set-default.in:56
-diff -ur grub-2.12.orig/util/grub.d/README grub-2.12/util/grub.d/README
---- grub-2.12.orig/util/grub.d/README  2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.12/util/grub.d/README       2025-04-26 21:19:00.010701410 +0200
+diff -ur grub-2.14.orig/util/grub.d/README grub-2.14/util/grub.d/README
+--- grub-2.14.orig/util/grub.d/README  2018-11-24 18:13:02.000000000 +0100
++++ grub-2.14/util/grub.d/README       2026-05-19 16:32:53.977828499 +0200
 @@ -8,4 +8,4 @@
  The number namespace in-between is configurable by system installer and/or
  administrator.  For example, you can add an entry to boot another OS as
  01_otheros, 11_otheros, etc, depending on the position you want it to occupy in
 -the menu; and then adjust the default setting via /etc/default/grub.
 +the menu; and then adjust the default setting via /etc/sysconfig/grub.
-diff -ur grub-2.12.orig/util/grub-mkconfig.in grub-2.12/util/grub-mkconfig.in
---- grub-2.12.orig/util/grub-mkconfig.in       2022-11-14 16:52:54.000000000 +0100
-+++ grub-2.12/util/grub-mkconfig.in    2025-04-26 21:19:00.010701410 +0200
+diff -ur grub-2.14.orig/util/grub-mkconfig.in grub-2.14/util/grub-mkconfig.in
+--- grub-2.14.orig/util/grub-mkconfig.in       2025-11-18 12:49:31.000000000 +0100
++++ grub-2.14/util/grub-mkconfig.in    2026-05-19 16:32:53.977828499 +0200
 @@ -157,8 +157,8 @@
        GRUB_EARLY_INITRD_LINUX_STOCK="intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode.cpio"
  fi
@@ -1270,7 +1293,7 @@ diff -ur grub-2.12.orig/util/grub-mkconfig.in grub-2.12/util/grub-mkconfig.in
  fi
  
  if [ "x${GRUB_DISABLE_UUID}" = "xtrue" ]; then
-@@ -271,7 +271,7 @@
+@@ -272,7 +272,7 @@
  # DO NOT EDIT THIS FILE
  #
  # It is automatically generated by $self using templates
@@ -1279,7 +1302,7 @@ diff -ur grub-2.12.orig/util/grub-mkconfig.in grub-2.12/util/grub-mkconfig.in
  #
  EOF
  
-@@ -297,7 +297,7 @@
+@@ -298,7 +298,7 @@
    if ! ${grub_script_check} ${grub_cfg}.new; then
      # TRANSLATORS: %s is replaced by filename
      gettext_printf "Syntax errors are detected in generated GRUB config file.
@@ -1288,9 +1311,9 @@ diff -ur grub-2.12.orig/util/grub-mkconfig.in grub-2.12/util/grub-mkconfig.in
  and /etc/grub.d/* files or please file a bug report with
  %s file attached." "${grub_cfg}.new" >&2
      echo >&2
-diff -ur grub-2.12.orig/util/grub-set-default.in grub-2.12/util/grub-set-default.in
---- grub-2.12.orig/util/grub-set-default.in    2018-11-24 18:13:02.000000000 +0100
-+++ grub-2.12/util/grub-set-default.in 2025-04-26 21:24:54.539709100 +0200
+diff -ur grub-2.14.orig/util/grub-set-default.in grub-2.14/util/grub-set-default.in
+--- grub-2.14.orig/util/grub-set-default.in    2018-11-24 18:13:02.000000000 +0100
++++ grub-2.14/util/grub-set-default.in 2026-05-19 16:32:53.977828499 +0200
 @@ -46,7 +46,7 @@
  usage () {
      gettext_printf "Usage: %s [OPTION] MENU_ENTRY\n" "$self"