mirror of
https://src.fedoraproject.org/rpms/grub2.git
synced 2024-11-24 14:32:58 +00:00
7509e59c4a
The logic to parse the BLS configs to generate a set of menuentry commands that's needed on ppc64le machines with bootloaders that don't have support to parse BLS config directly, was implemented in a 10_linux_bls script. But there's no need to have a separate script just for this and this logic can be merged into the 10_linux script to avoid code duplication. Also since the blscfg module will also now be used by ostree-based distros there is a possible corner case in which a user set the blsdir variable to a BLS directory path that is different than the default used by ostree. So to avoid possible issues, only drop the marker file to specify that the bootloader has support to parse BLS files if this variable hasn't been set. Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
59 lines
1.9 KiB
Bash
Executable file
59 lines
1.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
if ! [[ $KERNEL_INSTALL_MACHINE_ID ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
# PV and PVH Xen DomU guests boot with pygrub that doesn't have BLS support,
|
|
# also Xen Dom0 use the menuentries from 20_linux_xen and not the ones from
|
|
# 10_linux. So BLS support needs to be disabled for both Xen Dom0 and DomU.
|
|
if [[ -e /sys/hypervisor/type ]] && grep -q "^xen$" /sys/hypervisor/type; then
|
|
RUN_MKCONFIG=true
|
|
DISABLE_BLS=true
|
|
fi
|
|
|
|
ARCH=$(uname -m)
|
|
# Older ppc64le OPAL firmware (petitboot version < 1.8.0) don't have BLS support
|
|
# so grub2-mkconfig has to be run to generate a config with menuentry commands.
|
|
if [[ $ARCH = "ppc64le" ]] && [ -d /sys/firmware/opal ]; then
|
|
|
|
petitboot_path="/sys/firmware/devicetree/base/ibm,firmware-versions/petitboot"
|
|
|
|
if test -e ${petitboot_path}; then
|
|
read -a petitboot_version < ${petitboot_path}
|
|
petitboot_version="$(echo ${petitboot_version//v})"
|
|
major_version="$(echo ${petitboot_version} | cut -d . -f1)"
|
|
minor_version="$(echo ${petitboot_version} | cut -d . -f2)"
|
|
|
|
if test -z ${petitboot_version} || test ${major_version} -lt 1 || \
|
|
test ${major_version} -eq 1 -a ${minor_version} -lt 8; then
|
|
RUN_MKCONFIG=true
|
|
fi
|
|
else
|
|
RUN_MKCONFIG=true
|
|
fi
|
|
fi
|
|
|
|
if [[ $DISABLE_BLS = "true" ]]; then
|
|
if grep -q '^GRUB_ENABLE_BLSCFG="*true"*\s*$' /etc/default/grub; then
|
|
sed -i 's/^GRUB_ENABLE_BLSCFG=.*/GRUB_ENABLE_BLSCFG=false/' /etc/default/grub
|
|
fi
|
|
fi
|
|
|
|
# A traditional grub configuration file needs to be generated only in the case when
|
|
# the bootloaders are not capable of populating a menu entry from the BLS fragments.
|
|
if [[ $RUN_MKCONFIG != "true" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
[[ -f /etc/default/grub ]] && . /etc/default/grub
|
|
|
|
COMMAND="$1"
|
|
|
|
case "$COMMAND" in
|
|
add|remove)
|
|
grub2-mkconfig --no-grubenv-update -o /boot/grub2/grub.cfg >& /dev/null
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|