Makes EFI images bootable by bios

For Bios and EFI compatibility, grub must be installed twice.
This patch adds the bios version when EFI is selected. The GPT EFI  block partitioning
already adds the bios partition, but the bootloader only called grub once.

Change-Id: Iee6c8b3b97b3cfff4562bcb30a50800f5ade894a
Closes-Bug: #1889089
This commit is contained in:
Pierre Crégut 2020-07-26 18:51:35 +02:00 committed by Ian Wienand
parent a7fba927ca
commit 6e71bd4239
3 changed files with 12 additions and 3 deletions

View File

@ -150,6 +150,9 @@ function install_grub2 {
case $ARCH in case $ARCH in
"x86_64"|"amd64") "x86_64"|"amd64")
GRUB_OPTS="--target=x86_64-efi" GRUB_OPTS="--target=x86_64-efi"
# This call installs grub for BIOS compatability
# which makes portable EFI/BIOS images.
$GRUBNAME --modules="$modules" --target=i386-pc $BOOT_DEV
;; ;;
# At this point, we don't need to override the target # At this point, we don't need to override the target
# for any other architectures. # for any other architectures.

View File

@ -4,7 +4,7 @@
"8": { "8": {
"extlinux": "syslinux-extlinux", "extlinux": "syslinux-extlinux",
"grub-pc": "grub2-tools grub2", "grub-pc": "grub2-tools grub2",
"grub-efi-amd64": "grub2-tools grub2-efi-x64 grub2-efi-x64-modules", "grub-efi-amd64": "grub2-tools grub2-pc grub2-efi-x64 grub2-efi-x64-modules",
"grub-efi-arm64": "grub2-tools grub2-efi-aa64 grub2-efi-aa64-modules", "grub-efi-arm64": "grub2-tools grub2-efi-aa64 grub2-efi-aa64-modules",
"grub-efi-aarch64": "grub2-tools grub2-efi-aa64 grub2-efi-aa64-modules", "grub-efi-aarch64": "grub2-tools grub2-efi-aa64 grub2-efi-aa64-modules",
"grub-efi": "grub2-tools grub2-efi", "grub-efi": "grub2-tools grub2-efi",
@ -29,7 +29,7 @@
"redhat": { "redhat": {
"extlinux": "syslinux-extlinux", "extlinux": "syslinux-extlinux",
"grub-pc": "grub2-tools grub2", "grub-pc": "grub2-tools grub2",
"grub-efi-amd64": "grub2-tools grub2-efi-x64 grub2-efi-x64-modules", "grub-efi-amd64": "grub2-tools grub2-pc grub2-efi-x64 grub2-efi-x64-modules",
"grub-efi-arm64": "grub2-tools grub2-efi-aa64 grub2-efi-aa64-modules", "grub-efi-arm64": "grub2-tools grub2-efi-aa64 grub2-efi-aa64-modules",
"grub-efi-aarch64": "grub2-tools grub2-efi-aa64 grub2-efi-aa64-modules", "grub-efi-aarch64": "grub2-tools grub2-efi-aa64 grub2-efi-aa64-modules",
"grub-efi": "grub2-tools grub2-efi", "grub-efi": "grub2-tools grub2-efi",
@ -40,7 +40,7 @@
"dkms_package": "dkms", "dkms_package": "dkms",
"extlinux": "extlinux", "extlinux": "extlinux",
"grub-pc": "grub-pc", "grub-pc": "grub-pc",
"grub-efi-amd64": "grub-efi", "grub-efi-amd64": "grub-efi grub-pc-bin",
"grub-efi-arm64": "grub-efi-arm64", "grub-efi-arm64": "grub-efi-arm64",
"grub-ppc64": "grub-ieee1275" "grub-ppc64": "grub-ieee1275"
} }

View File

@ -0,0 +1,6 @@
---
features:
- |
The ``bootloader`` element now co-installs a BIOS bootloader for
x86-64 when ``DIB_BLOCK_DEVICE=efi`` is set. This makes images
that are EFI and BIOS cross-compatiable.