templates: Fix bad test on GRUB_DISABLE_SUBMENU
The GRUB_DISABLE_SUBMENU option is different than the others in the sense that it has to be set to "y" instead of "true" to be enabled. That causes a lot of confusion to users, some may wrongly set it to "true" expecting that will work the same than with most options, and some may set it to "yes" since for other options the value to set is a word and not a single character. This patch changes all the grub.d scripts using the GRUB_DISABLE_SUBMENU option, so they check if it was set to "true" instead of "y", making it consistent with all the other options. But to keep backward compatibility for users that set the option to "y" in /etc/default/grub file, keep testing for this value. And also do it for "yes", since it is a common mistake made by users caused by this option being inconsistent with the others. Signed-off-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
c7cb11b219
commit
ee4bd79ef2
7 changed files with 55 additions and 7 deletions
|
@ -1495,7 +1495,7 @@ Normally, @command{grub-mkconfig} will generate top level menu entry for
|
||||||
the kernel with highest version number and put all other found kernels
|
the kernel with highest version number and put all other found kernels
|
||||||
or alternative menu entries for recovery mode in submenu. For entries returned
|
or alternative menu entries for recovery mode in submenu. For entries returned
|
||||||
by @command{os-prober} first entry will be put on top level and all others
|
by @command{os-prober} first entry will be put on top level and all others
|
||||||
in submenu. If this option is set to @samp{y}, flat menu with all entries
|
in submenu. If this option is set to @samp{true}, flat menu with all entries
|
||||||
on top level will be generated instead. Changing this option will require
|
on top level will be generated instead. Changing this option will require
|
||||||
changing existing values of @samp{GRUB_DEFAULT}, @samp{fallback} (@pxref{fallback})
|
changing existing values of @samp{GRUB_DEFAULT}, @samp{fallback} (@pxref{fallback})
|
||||||
and @samp{default} (@pxref{default}) environment variables as well as saved
|
and @samp{default} (@pxref{default}) environment variables as well as saved
|
||||||
|
|
|
@ -156,7 +156,15 @@ is_top_level=true
|
||||||
while [ "x$kernels" != "x" ] ; do
|
while [ "x$kernels" != "x" ] ; do
|
||||||
kernel=`version_find_latest $kernels`
|
kernel=`version_find_latest $kernels`
|
||||||
|
|
||||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
# The GRUB_DISABLE_SUBMENU option used to be different than others since it was
|
||||||
|
# mentioned in the documentation that has to be set to 'y' instead of 'true' to
|
||||||
|
# enable it. This caused a lot of confusion to users that set the option to 'y',
|
||||||
|
# 'yes' or 'true'. This was fixed but all of these values must be supported now.
|
||||||
|
if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy ]; then
|
||||||
|
GRUB_DISABLE_SUBMENU="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||||
hurd_entry "$kernel" simple
|
hurd_entry "$kernel" simple
|
||||||
submenu_indentation="$grub_tab"
|
submenu_indentation="$grub_tab"
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,15 @@ while [ "x$list" != "x" ] ; do
|
||||||
module_dir_rel=$(make_system_path_relative_to_its_root $module_dir)
|
module_dir_rel=$(make_system_path_relative_to_its_root $module_dir)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
# The GRUB_DISABLE_SUBMENU option used to be different than others since it was
|
||||||
|
# mentioned in the documentation that has to be set to 'y' instead of 'true' to
|
||||||
|
# enable it. This caused a lot of confusion to users that set the option to 'y',
|
||||||
|
# 'yes' or 'true'. This was fixed but all of these values must be supported now.
|
||||||
|
if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy ]; then
|
||||||
|
GRUB_DISABLE_SUBMENU="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||||
kfreebsd_entry "${OS}" "${version}" simple
|
kfreebsd_entry "${OS}" "${version}" simple
|
||||||
submenu_indentation="$grub_tab"
|
submenu_indentation="$grub_tab"
|
||||||
|
|
||||||
|
|
|
@ -261,7 +261,15 @@ while [ "x$list" != "x" ] ; do
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
# The GRUB_DISABLE_SUBMENU option used to be different than others since it was
|
||||||
|
# mentioned in the documentation that has to be set to 'y' instead of 'true' to
|
||||||
|
# enable it. This caused a lot of confusion to users that set the option to 'y',
|
||||||
|
# 'yes' or 'true'. This was fixed but all of these values must be supported now.
|
||||||
|
if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy ]; then
|
||||||
|
GRUB_DISABLE_SUBMENU="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||||
linux_entry "${OS}" "${version}" simple \
|
linux_entry "${OS}" "${version}" simple \
|
||||||
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,15 @@ for k in /netbsd $(ls -t /netbsd?* 2>/dev/null) ; do
|
||||||
|
|
||||||
gettext_printf "Found NetBSD kernel: %s\n" "$k" >&2
|
gettext_printf "Found NetBSD kernel: %s\n" "$k" >&2
|
||||||
|
|
||||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
# The GRUB_DISABLE_SUBMENU option used to be different than others since it was
|
||||||
|
# mentioned in the documentation that has to be set to 'y' instead of 'true' to
|
||||||
|
# enable it. This caused a lot of confusion to users that set the option to 'y',
|
||||||
|
# 'yes' or 'true'. This was fixed but all of these values must be supported now.
|
||||||
|
if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy ]; then
|
||||||
|
GRUB_DISABLE_SUBMENU="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||||
netbsd_entry "knetbsd" "$k" simple "${GRUB_CMDLINE_NETBSD_DEFAULT}"
|
netbsd_entry "knetbsd" "$k" simple "${GRUB_CMDLINE_NETBSD_DEFAULT}"
|
||||||
submenu_indentation="$grub_tab"
|
submenu_indentation="$grub_tab"
|
||||||
|
|
||||||
|
|
|
@ -288,7 +288,15 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
# The GRUB_DISABLE_SUBMENU option used to be different than others since it was
|
||||||
|
# mentioned in the documentation that has to be set to 'y' instead of 'true' to
|
||||||
|
# enable it. This caused a lot of confusion to users that set the option to 'y',
|
||||||
|
# 'yes' or 'true'. This was fixed but all of these values must be supported now.
|
||||||
|
if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy ]; then
|
||||||
|
GRUB_DISABLE_SUBMENU="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||||
linux_entry "${OS}" "${version}" "${xen_version}" simple \
|
linux_entry "${OS}" "${version}" "${xen_version}" simple \
|
||||||
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
|
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
|
||||||
|
|
||||||
|
|
|
@ -234,7 +234,15 @@ EOF
|
||||||
prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | grub_add_tab)"
|
prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | grub_add_tab)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
# The GRUB_DISABLE_SUBMENU option used to be different than others since it was
|
||||||
|
# mentioned in the documentation that has to be set to 'y' instead of 'true' to
|
||||||
|
# enable it. This caused a lot of confusion to users that set the option to 'y',
|
||||||
|
# 'yes' or 'true'. This was fixed but all of these values must be supported now.
|
||||||
|
if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy ]; then
|
||||||
|
GRUB_DISABLE_SUBMENU="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||||
cat << EOF
|
cat << EOF
|
||||||
menuentry '$(echo "$OS $onstr" | grub_quote)' $CLASS --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-simple-$boot_device_id' {
|
menuentry '$(echo "$OS $onstr" | grub_quote)' $CLASS --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-simple-$boot_device_id' {
|
||||||
EOF
|
EOF
|
||||||
|
|
Loading…
Reference in a new issue