2024-08-23 18:23:36 +02:00
|
|
|
From abd8b83cdc6398c52c7d2b71b378938cf51872fd Mon Sep 17 00:00:00 2001
|
2024-07-03 10:52:42 +02:00
|
|
|
From: Michael Chang <mchang@suse.com>
|
|
|
|
Date: Wed, 13 Mar 2024 15:26:42 +0800
|
|
|
|
Subject: [PATCH 9/9] 10_linux: Some refinement for BLS
|
|
|
|
|
|
|
|
Remove BLS_POPULATE_MENU as it is not being used currently and removing
|
|
|
|
kernelopts assignment in the grub boot config itself to fully delegate
|
|
|
|
the responsibility of generating kernel options to a functioning BLS
|
|
|
|
generator.
|
|
|
|
|
2024-08-23 18:23:36 +02:00
|
|
|
Additionally, removing unused dead code, which is often blamed for
|
|
|
|
causing errors in the dash shell script.
|
|
|
|
|
2024-07-03 10:52:42 +02:00
|
|
|
Signed-off-by: Michael Chang <mchang@suse.com>
|
|
|
|
---
|
2024-08-23 18:23:36 +02:00
|
|
|
util/grub.d/10_linux.in | 194 ----------------------------------------
|
|
|
|
1 file changed, 194 deletions(-)
|
2024-07-03 10:52:42 +02:00
|
|
|
|
|
|
|
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
2024-08-23 18:23:36 +02:00
|
|
|
index edf0fca55..666eae995 100644
|
2024-07-03 10:52:42 +02:00
|
|
|
--- a/util/grub.d/10_linux.in
|
|
|
|
+++ b/util/grub.d/10_linux.in
|
|
|
|
@@ -93,11 +93,7 @@ fi
|
|
|
|
|
|
|
|
populate_header_warn()
|
|
|
|
{
|
|
|
|
-if [ "x${BLS_POPULATE_MENU}" = "xtrue" ]; then
|
|
|
|
- bls_parser="10_linux script"
|
|
|
|
-else
|
|
|
|
bls_parser="blscfg command"
|
|
|
|
-fi
|
|
|
|
cat <<EOF
|
|
|
|
|
|
|
|
# This section was generated by a script. Do not modify the generated file - all changes
|
2024-08-23 18:23:36 +02:00
|
|
|
@@ -110,102 +106,6 @@ cat <<EOF
|
|
|
|
EOF
|
2024-07-03 10:52:42 +02:00
|
|
|
}
|
|
|
|
|
2024-08-23 18:23:36 +02:00
|
|
|
-read_config()
|
|
|
|
-{
|
|
|
|
- config_file=${1}
|
|
|
|
- title=""
|
|
|
|
- initrd=""
|
|
|
|
- options=""
|
|
|
|
- linux=""
|
|
|
|
- grub_arg=""
|
|
|
|
-
|
|
|
|
- while read -r line
|
|
|
|
- do
|
|
|
|
- record=$(echo ${line} | cut -f 1 -d ' ')
|
|
|
|
- value=$(echo ${line} | cut -s -f2- -d ' ')
|
|
|
|
- case "${record}" in
|
|
|
|
- "title")
|
|
|
|
- title=${value}
|
|
|
|
- ;;
|
|
|
|
- "initrd")
|
|
|
|
- initrd=${value}
|
|
|
|
- ;;
|
|
|
|
- "linux")
|
|
|
|
- linux=${value}
|
|
|
|
- ;;
|
|
|
|
- "options")
|
|
|
|
- options=${value}
|
|
|
|
- ;;
|
|
|
|
- "grub_arg")
|
|
|
|
- grub_arg=${value}
|
|
|
|
- ;;
|
|
|
|
- esac
|
|
|
|
- done < ${config_file}
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-blsdir="/boot/loader/entries"
|
|
|
|
-
|
|
|
|
-get_sorted_bls()
|
|
|
|
-{
|
|
|
|
- if ! [ -d "${blsdir}" ] || [ -f /run/ostree-booted ] || [ -d /ostree/repo ]; then
|
|
|
|
- return
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
- local IFS=$'\n'
|
|
|
|
-
|
|
|
|
- files=($(for bls in ${blsdir}/*.conf; do
|
|
|
|
- if ! [[ -e "${bls}" ]] ; then
|
|
|
|
- continue
|
|
|
|
- fi
|
|
|
|
- bls="${bls%.conf}"
|
|
|
|
- bls="${bls##*/}"
|
|
|
|
- echo "${bls}"
|
|
|
|
- done | ${kernel_sort} 2>/dev/null | tac)) || :
|
|
|
|
-
|
|
|
|
- echo "${files[@]}"
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-update_bls_cmdline()
|
|
|
|
-{
|
|
|
|
- local cmdline="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
|
|
|
- local -a files=($(get_sorted_bls))
|
|
|
|
-
|
|
|
|
- for bls in "${files[@]}"; do
|
|
|
|
- local options="${cmdline}"
|
|
|
|
- if [ -z "${bls##*debug*}" ]; then
|
|
|
|
- options="${options} ${GRUB_CMDLINE_LINUX_DEBUG}"
|
|
|
|
- fi
|
|
|
|
- options="$(echo "${options}" | sed -e 's/\//\\\//g')"
|
|
|
|
- sed -i -e "s/^options.*/options ${options}/" "${blsdir}/${bls}.conf"
|
|
|
|
- done
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-populate_menu()
|
|
|
|
-{
|
|
|
|
- local -a files=($(get_sorted_bls))
|
|
|
|
-
|
|
|
|
- gettext_printf "Generating boot entries from BLS files...\n" >&2
|
|
|
|
-
|
|
|
|
- for bls in "${files[@]}"; do
|
|
|
|
- read_config "${blsdir}/${bls}.conf"
|
|
|
|
-
|
|
|
|
- menu="${menu}menuentry '${title}' ${grub_arg} --id=${bls} {\n"
|
|
|
|
- menu="${menu}\t linux ${linux} ${options}\n"
|
|
|
|
- if [ -n "${initrd}" ] ; then
|
|
|
|
- menu="${menu}\t initrd ${boot_prefix}${initrd}\n"
|
|
|
|
- fi
|
|
|
|
- menu="${menu}}\n\n"
|
|
|
|
- done
|
|
|
|
- # The printf command seems to be more reliable across shells for special character (\n, \t) evaluation
|
|
|
|
- printf "$menu"
|
|
|
|
-}
|
|
|
|
-
|
2024-07-03 10:52:42 +02:00
|
|
|
-# Make BLS the default if GRUB_ENABLE_BLSCFG was not set and grubby is not installed.
|
|
|
|
-# FIXME: The test should be aligned to openSUSE, grubby is not our default tool
|
|
|
|
-if [ -z "${GRUB_ENABLE_BLSCFG}" ] && ! command -v new-kernel-pkg >/dev/null && false; then
|
|
|
|
- GRUB_ENABLE_BLSCFG="true"
|
|
|
|
-fi
|
2024-08-23 18:23:36 +02:00
|
|
|
-
|
2024-07-03 10:52:42 +02:00
|
|
|
if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then
|
|
|
|
if [ x$dirname = x/ ]; then
|
2024-08-23 18:23:36 +02:00
|
|
|
if [ -z "${prepare_root_cache}" ]; then
|
|
|
|
@@ -225,111 +125,17 @@ if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then
|
|
|
|
prepare_grub_to_access_device_with_variable boot ${boot_device}
|
|
|
|
fi
|
2024-07-03 10:52:42 +02:00
|
|
|
|
2024-08-23 18:23:36 +02:00
|
|
|
- arch="$(uname -m)"
|
|
|
|
- if [ "x${arch}" = "xppc64le" ] && [ -d /sys/firmware/opal ]; then
|
|
|
|
-
|
|
|
|
- BLS_POPULATE_MENU="true"
|
|
|
|
- petitboot_path="/sys/firmware/devicetree/base/ibm,firmware-versions/petitboot"
|
|
|
|
-
|
|
|
|
- if test -e ${petitboot_path}; then
|
|
|
|
- read -r -d '' petitboot_version < ${petitboot_path}
|
|
|
|
- petitboot_version="$(echo ${petitboot_version//v})"
|
|
|
|
-
|
|
|
|
- if test -n ${petitboot_version}; then
|
|
|
|
- major_version="$(echo ${petitboot_version} | cut -d . -f1)"
|
|
|
|
- minor_version="$(echo ${petitboot_version} | cut -d . -f2)"
|
|
|
|
-
|
|
|
|
- re='^[0-9]+$'
|
|
|
|
- if [[ $major_version =~ $re ]] && [[ $minor_version =~ $re ]] &&
|
|
|
|
- ([[ ${major_version} -gt 1 ]] ||
|
|
|
|
- [[ ${major_version} -eq 1 &&
|
|
|
|
- ${minor_version} -ge 8 ]]); then
|
|
|
|
- BLS_POPULATE_MENU="false"
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
-
|
2024-07-03 10:52:42 +02:00
|
|
|
populate_header_warn
|
|
|
|
|
|
|
|
- cat << EOF
|
|
|
|
-# 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
|
|
|
|
-EOF
|
|
|
|
-
|
|
|
|
- update_bls_cmdline
|
|
|
|
-
|
|
|
|
- if [ "x${BLS_POPULATE_MENU}" = "xtrue" ]; then
|
|
|
|
- populate_menu
|
|
|
|
- else
|
|
|
|
cat << EOF
|
|
|
|
|
|
|
|
insmod blscfg
|
|
|
|
blscfg
|
|
|
|
EOF
|
|
|
|
- fi
|
2024-08-23 18:23:36 +02:00
|
|
|
-
|
|
|
|
- if [ "x${GRUB_GRUBENV_UPDATE}" = "xyes" ]; then
|
|
|
|
- blsdir="/boot/loader/entries"
|
|
|
|
- [ -d "${blsdir}" ] && GRUB_BLS_FS="$(${grub_probe} --target=fs ${blsdir})"
|
|
|
|
- if [ "x${GRUB_BLS_FS}" = "xbtrfs" ] || [ "x${GRUB_BLS_FS}" = "xzfs" ]; then
|
|
|
|
- blsdir=$(make_system_path_relative_to_its_root "${blsdir}")
|
|
|
|
- if [ "x${blsdir}" != "x/loader/entries" ] && [ "x${blsdir}" != "x/boot/loader/entries" ]; then
|
|
|
|
- ${grub_editenv} - set blsdir="${blsdir}"
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
- if [ -n "${GRUB_EARLY_INITRD_LINUX_CUSTOM}" ]; then
|
|
|
|
- ${grub_editenv} - set early_initrd="${GRUB_EARLY_INITRD_LINUX_CUSTOM}"
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
- if [ -n "${GRUB_DEFAULT_DTB}" ]; then
|
|
|
|
- ${grub_editenv} - set devicetree="${GRUB_DEFAULT_DTB}"
|
|
|
|
- fi
|
|
|
|
-
|
|
|
|
- if [ -n "${GRUB_SAVEDEFAULT}" ]; then
|
|
|
|
- ${grub_editenv} - set save_default="${GRUB_SAVEDEFAULT}"
|
|
|
|
- fi
|
|
|
|
- fi
|
|
|
|
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
|
|
|
-mktitle ()
|
|
|
|
-{
|
|
|
|
- local title_type
|
|
|
|
- local version
|
|
|
|
- local OS_NAME
|
|
|
|
- local OS_VERS
|
|
|
|
-
|
|
|
|
- title_type=$1 && shift
|
|
|
|
- version=$1 && shift
|
|
|
|
-
|
|
|
|
- OS_NAME="$(eval $(grep ^NAME= /etc/os-release) ; echo ${NAME})"
|
|
|
|
- OS_VERS="$(eval $(grep ^VERSION= /etc/os-release) ; echo ${VERSION})"
|
|
|
|
-
|
|
|
|
- case $title_type in
|
|
|
|
- recovery)
|
|
|
|
- title=$(printf '%s (%s) %s (recovery mode)' \
|
|
|
|
- "${OS_NAME}" "${version}" "${OS_VERS}")
|
|
|
|
- ;;
|
|
|
|
- *)
|
|
|
|
- title=$(printf '%s (%s) %s' \
|
|
|
|
- "${OS_NAME}" "${version}" "${OS_VERS}")
|
|
|
|
- ;;
|
|
|
|
- esac
|
|
|
|
- echo -n ${title}
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
title_correction_code=
|
2024-07-03 10:52:42 +02:00
|
|
|
|
2024-08-23 18:23:36 +02:00
|
|
|
hotkey=1
|
2024-07-03 10:52:42 +02:00
|
|
|
--
|
2024-08-23 18:23:36 +02:00
|
|
|
2.45.2
|
2024-07-03 10:52:42 +02:00
|
|
|
|