From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Javier Martinez Canillas Date: Mon, 14 Oct 2019 17:37:26 +0200 Subject: [PATCH] blscfg: Don't hardcode an env var as fallback for the BLS options field If the BLS fragments don't have an options field or if this was set to an environment variable that was not defined in the grubenv file, the blscfg module searches for an default_kernelopts variable that is defined in the grub.cfg file. But the blscfg module shouldn't hardcode fallbacks variables and instead this logic should be handled in the GRUB config file itself. Also, add a comment explaining where the kernelopts variable is supposed to be defined and what is the process for the user to change its value. Resolves: rhbz#1710483 Signed-off-by: Javier Martinez Canillas --- grub-core/commands/blscfg.c | 4 ---- util/grub.d/10_linux.in | 12 +++++++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c index 1ec89870483..471975fd2e5 100644 --- a/grub-core/commands/blscfg.c +++ b/grub-core/commands/blscfg.c @@ -733,10 +733,6 @@ 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)); diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in index 0471464e68e..21a6915dca3 100644 --- a/util/grub.d/10_linux.in +++ b/util/grub.d/10_linux.in @@ -118,7 +118,17 @@ if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then populate_header_warn cat << EOF -set default_kernelopts="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" +# The kernelopts variable should be defined in the grubenv file. But to ensure that menu +# entries populated from BootLoaderSpec files that use this variable work correctly even +# without a grubenv file, define a fallback kernelopts variable if this has not been set. +# +# The kernelopts variable in the grubenv file can be modified using the grubby tool or by +# executing the grub2-mkconfig tool. For the latter, the values of the GRUB_CMDLINE_LINUX +# and GRUB_CMDLINE_LINUX_DEFAULT options from /etc/default/grub file are used to set both +# the kernelopts variable in the grubenv file and the fallback kernelopts variable. +if [ -z "\${kernelopts}" ]; then + set kernelopts="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" +fi insmod blscfg blscfg