Blob Blame History Raw
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Wed, 29 Apr 2020 20:08:27 +0200
Subject: [PATCH] blscfg: Lookup default_kernelopts variable as fallback for
 options

The 10_linux script sets a variable that contains the kernel command line
parameters. This is done so the entries will still have a kernel cmdline
defined even if the grubenv can't be read.

But older versions of the script used to set a default_kernelopts variable
while newer versions just sets the kernelopts, which is what's defined in
the BLS snippets.

The blscfg module needs to keep looking for the default_kernelops since it
may be that a user doesn't have a grubenv file and has an older grub.cfg
that sets this variable instead of kernelopts.

Related: rhbz#1765297

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---
 grub-core/commands/blscfg.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
index 9263a5c1a02..4ec6504d9a4 100644
--- a/grub-core/commands/blscfg.c
+++ b/grub-core/commands/blscfg.c
@@ -759,6 +759,10 @@ static void create_entry (struct bls_entry *entry)
 
   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);
 
   devicetree = expand_val (bls_get_val (entry, "devicetree", NULL));