fully validate BIOS/EFI bootloader combinations
thus far, config bootloader validation only did the basic check that each bootloader specified was a known and supported bootloader, it did not check combinations. it now checks combinations, and strips out the previous "bootloader role" stuff. the no-bootloaders warning is duplicated, covering two slightly different situations (empty string, and whitespace string). this is anticipated to be just temporary, with this just being the first step in better handling bootloader selections. Gbp-Dch: Short
This commit is contained in:
parent
f3a818da9a
commit
3f840aeeba
|
@ -1,80 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
## live-build(7) - System Build Scripts
|
||||
## Copyright (C) 2016-2020 The Debian Live team
|
||||
## Copyright (C) 2016 Adrian Gibanel Lopez <adrian15sgd@gmail.com>
|
||||
##
|
||||
## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
|
||||
## This is free software, and you are welcome to redistribute it
|
||||
## under certain conditions; see COPYING for details.
|
||||
|
||||
Is_Requested_Bootloader ()
|
||||
{
|
||||
local BOOTLOADER
|
||||
for BOOTLOADER in ${LB_BOOTLOADERS}; do
|
||||
if [ "${BOOTLOADER}" = "${1}" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
Is_First_Bootloader ()
|
||||
{
|
||||
if [ "${LB_FIRST_BOOTLOADER}" != "${1}" ]; then
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
Is_Extra_Bootloader ()
|
||||
{
|
||||
if Is_First_Bootloader "${1}"; then
|
||||
return 1
|
||||
fi
|
||||
if ! Is_Requested_Bootloader "${1}"; then
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
Check_Non_First_Bootloader ()
|
||||
{
|
||||
if Is_First_Bootloader "${1}"; then
|
||||
Echo_error "Bootloader: \`${1}\` is not supported as a first bootloader."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
Check_Non_Extra_Bootloader ()
|
||||
{
|
||||
if Is_Extra_Bootloader "${1}"; then
|
||||
Echo_error "Bootloader: \`${1}\` is not supported as a extra bootloader."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
Check_First_Bootloader_Role ()
|
||||
{
|
||||
Check_Non_Extra_Bootloader "${1}"
|
||||
|
||||
if ! Is_First_Bootloader "${1}"; then
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
Check_Extra_Bootloader_Role ()
|
||||
{
|
||||
Check_Non_First_Bootloader "${1}"
|
||||
|
||||
if ! Is_Extra_Bootloader "${1}"; then
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
Check_Any_Bootloader_Role ()
|
||||
{
|
||||
if ! Is_Requested_Bootloader "${1}"; then
|
||||
exit 0
|
||||
fi
|
||||
}
|
|
@ -576,12 +576,35 @@ Validate_config_permitted_values ()
|
|||
Echo_warning "You have specified no bootloaders; I predict that you will experience some problems!"
|
||||
else
|
||||
local BOOTLOADER
|
||||
for BOOTLOADER in ${LB_BOOTLOADERS}; do
|
||||
if ! In_list "${BOOTLOADER}" grub-legacy grub-pc grub-efi syslinux; then
|
||||
Echo_error "The following is not a valid bootloader: '%s'" "${BOOTLOADER}"
|
||||
exit 1
|
||||
fi
|
||||
local BOOTLOADERS_BIOS=0
|
||||
local BOOTLOADERS_EFI=0
|
||||
for BOOTLOADER in $LB_BOOTLOADERS; do
|
||||
# Note, multiple instances of the same bootloader should be rejected,
|
||||
# to avoid issues (e.g. in `binary_iso` bootloader handling).
|
||||
case "${BOOTLOADER}" in
|
||||
grub-legacy|grub-pc|syslinux)
|
||||
BOOTLOADERS_BIOS=$(( $BOOTLOADERS_BIOS + 1 ))
|
||||
;;
|
||||
grub-efi)
|
||||
BOOTLOADERS_EFI=$(( $BOOTLOADERS_EFI + 1 ))
|
||||
;;
|
||||
*)
|
||||
Echo_error "The following is not a valid bootloader: '%s'" "${BOOTLOADER}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [ $BOOTLOADERS_BIOS -ge 2 ]; then
|
||||
Echo_error "Invalid bootloader selection. Multiple BIOS instances specified."
|
||||
exit 1
|
||||
fi
|
||||
if [ $BOOTLOADERS_EFI -ge 2 ]; then
|
||||
Echo_error "Invalid bootloader selection. Multiple EFI instances specified."
|
||||
exit 1
|
||||
fi
|
||||
if [ $BOOTLOADERS_BIOS -eq 0 ] && [ $BOOTLOADERS_EFI -eq 0 ]; then
|
||||
Echo_warning "You have specified no bootloaders; I predict that you will experience some problems!"
|
||||
fi
|
||||
fi
|
||||
|
||||
local CACHE_STAGE
|
||||
|
|
|
@ -21,11 +21,13 @@ USAGE="${PROGRAM} [--force]"
|
|||
# Processing arguments and configuration files
|
||||
Init_config_data "${@}"
|
||||
|
||||
if In_list "${LB_IMAGE_TYPE}" hdd netboot; then
|
||||
if ! In_list "grub-efi" $LB_BOOTLOADERS; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Check_Any_Bootloader_Role "grub-efi"
|
||||
if In_list "${LB_IMAGE_TYPE}" hdd netboot; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Echo_message "Begin preparing Grub based EFI support..."
|
||||
|
||||
|
|
|
@ -21,11 +21,13 @@ USAGE="${PROGRAM} [--force]"
|
|||
# Processing arguments and configuration files
|
||||
Init_config_data "${@}"
|
||||
|
||||
if In_list "${LB_IMAGE_TYPE}" hdd netboot; then
|
||||
if ! In_list "grub-legacy" $LB_BOOTLOADERS; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Check_First_Bootloader_Role "grub-legacy"
|
||||
if In_list "${LB_IMAGE_TYPE}" hdd netboot; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Echo_message "Begin installing grub-legacy..."
|
||||
|
||||
|
|
|
@ -21,11 +21,13 @@ USAGE="${PROGRAM} [--force]"
|
|||
# Processing arguments and configuration files
|
||||
Init_config_data "${@}"
|
||||
|
||||
if In_list "${LB_IMAGE_TYPE}" hdd netboot; then
|
||||
if ! In_list "grub-pc" $LB_BOOTLOADERS; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Check_Any_Bootloader_Role "grub-pc"
|
||||
if In_list "${LB_IMAGE_TYPE}" hdd netboot; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Echo_message "Begin installing grub-pc..."
|
||||
|
||||
|
|
|
@ -21,7 +21,9 @@ USAGE="${PROGRAM} [--force]"
|
|||
# Processing arguments and configuration files
|
||||
Init_config_data "${@}"
|
||||
|
||||
Check_Any_Bootloader_Role "syslinux"
|
||||
if ! In_list "syslinux" $LB_BOOTLOADERS; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Echo_message "Begin installing syslinux..."
|
||||
|
||||
|
|
Loading…
Reference in New Issue