mirror of
https://git.busybox.net/buildroot.git
synced 2024-11-28 07:53:32 +08:00
b68810e70c
When Grub2 is build it is configured only for one boot set-up, BIOS Legacy, EFI 32 bit or EFI 64 bit. It can not deal with several boot set-up on the same image. This patch allows to build Grub2 for different configurations simultaneously. To cover Grub2 configuration of legacy BIOS platforms (32-bit), 32-bit EFI BIOS and 64-bit EFI BIOS in the same build, multi-build system felt much more reasonable to just extend the grub2 package into 3 packages. We can no longer use autotools-package as a consequence of this multi-build, and we have to resort to generic-package and a partial duplication of the autotools-infra. Grub2 was already using custom option like --prefix or --exec-prefix so this won't add much more weirdness. We use a GRUB2_TUPLES list to describe all the configurations selected. For each boot case described in the GRUB2_TUPLES list, it configures and builds Grub2 in a separate folder named build-$(tuple). We use a foreach loop to make actions on each tuple selected. We have to separate the BR2_TARGET_GRUB2_BUILTIN_MODULES and the BR2_TARGET_GRUB2_BUILTIN_CONFIG for each BIOS or EFI boot cases. Signed-off-by: Kory Maincent <kory.maincent@bootlin.com> [yann.morin.1998@free.fr: - keep sub-options properly indented - fix check-package ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
153 lines
4.8 KiB
Plaintext
153 lines
4.8 KiB
Plaintext
config BR2_TARGET_GRUB2_ARCH_SUPPORTS
|
|
bool
|
|
default y if BR2_i386
|
|
default y if BR2_x86_64
|
|
default y if BR2_arm
|
|
default y if BR2_aarch64
|
|
depends on BR2_USE_MMU
|
|
|
|
config BR2_TARGET_GRUB2
|
|
bool "grub2"
|
|
depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS
|
|
depends on BR2_USE_WCHAR
|
|
select BR2_TARGET_GRUB2_I386_PC if \
|
|
!BR2_TARGET_GRUB2_HAS_PTF && \
|
|
(BR2_i386 || BR2_x86_64)
|
|
select BR2_TARGET_GRUB2_ARM_UBOOT if \
|
|
!BR2_TARGET_GRUB2_HAS_PTF && \
|
|
BR2_arm
|
|
select BR2_TARGET_GRUB2_ARM64_EFI if BR2_aarch64
|
|
help
|
|
GNU GRUB is a Multiboot boot loader. It was derived from
|
|
GRUB, the GRand Unified Bootloader, which was originally
|
|
designed and implemented by Erich Stefan Boleyn. GRUB 2 has
|
|
replaced what was formerly known as GRUB (i.e. version
|
|
0.9x), which has, in turn, become GRUB Legacy.
|
|
|
|
Amongst others, GRUB2 offers EFI support, which GRUB Legacy
|
|
doesn't provide.
|
|
|
|
For additional notes on using Grub 2 with Buildroot, see
|
|
boot/grub2/readme.txt
|
|
|
|
http://www.gnu.org/software/grub/
|
|
|
|
if BR2_TARGET_GRUB2
|
|
|
|
config BR2_TARGET_GRUB2_HAS_PTF
|
|
bool
|
|
|
|
config BR2_TARGET_GRUB2_I386_PC
|
|
bool "i386-pc"
|
|
depends on BR2_i386 || BR2_x86_64
|
|
help
|
|
Select this option if the platform you're targetting is a
|
|
x86 or x86-64 legacy BIOS based platform.
|
|
|
|
config BR2_TARGET_GRUB2_I386_EFI
|
|
bool "i386-efi"
|
|
depends on BR2_i386 || BR2_x86_64
|
|
select BR2_TARGET_GRUB2_HAS_PTF
|
|
help
|
|
Select this option if the platform you're targetting has a
|
|
32 bits EFI BIOS. Note that some x86-64 platforms use a 32
|
|
bits EFI BIOS, and this option should be used in this case.
|
|
|
|
config BR2_TARGET_GRUB2_X86_64_EFI
|
|
bool "x86-64-efi"
|
|
depends on BR2_x86_64
|
|
select BR2_TARGET_GRUB2_HAS_PTF
|
|
help
|
|
Select this option if the platform you're targetting has a
|
|
64 bits EFI BIOS.
|
|
|
|
config BR2_TARGET_GRUB2_ARM_UBOOT
|
|
bool "arm-uboot"
|
|
depends on BR2_arm
|
|
help
|
|
Select this option if the platform you're targetting is an
|
|
ARM u-boot platform, and you want to boot Grub 2 as an u-boot
|
|
compatible image.
|
|
|
|
config BR2_TARGET_GRUB2_ARM_EFI
|
|
bool "arm-efi"
|
|
depends on BR2_arm
|
|
select BR2_TARGET_GRUB2_HAS_PTF
|
|
help
|
|
Select this option if the platform you're targetting is an
|
|
ARM platform and you want to boot Grub 2 as an EFI
|
|
application.
|
|
|
|
config BR2_TARGET_GRUB2_ARM64_EFI
|
|
bool "arm64-efi"
|
|
depends on BR2_aarch64
|
|
help
|
|
Select this option if the platform you're targetting is an
|
|
Aarch64 platform and you want to boot Grub 2 as an EFI
|
|
application.
|
|
|
|
if BR2_TARGET_GRUB2_I386_PC || BR2_TARGET_GRUB2_ARM_UBOOT
|
|
|
|
comment "Options for the x86 legacy BIOS or ARM U-Boot support"
|
|
|
|
config BR2_TARGET_GRUB2_BOOT_PARTITION
|
|
string "boot partition"
|
|
default "hd0,msdos1"
|
|
help
|
|
Specify the partition where the /boot/grub/grub.cfg file is
|
|
located. Use 'hd0,msdos1' for the first partition of the
|
|
first disk if using a legacy partition table, or 'hd0,gpt1'
|
|
if using GPT partition table.
|
|
|
|
config BR2_TARGET_GRUB2_BUILTIN_MODULES_PC
|
|
string "builtin modules"
|
|
default BR2_TARGET_GRUB2_BUILTIN_MODULES if BR2_TARGET_GRUB2_BUILTIN_MODULES != "" # legacy
|
|
default "boot linux ext2 fat squash4 part_msdos part_gpt normal biosdisk" if BR2_TARGET_GRUB2_I386_PC
|
|
default "linux ext2 fat part_msdos normal" if BR2_TARGET_GRUB2_ARM_UBOOT
|
|
|
|
config BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC
|
|
string "builtin config"
|
|
default BR2_TARGET_GRUB2_BUILTIN_CONFIG if BR2_TARGET_GRUB2_BUILTIN_CONFIG != "" # legacy
|
|
help
|
|
Path to a Grub 2 configuration file that will be embedded
|
|
into the Grub image itself. This allows to set the root
|
|
device and other configuration parameters, but however menu
|
|
entries cannot be described in this embedded configuration.
|
|
|
|
endif # BR2_TARGET_GRUB2_I386_PC || BR2_TARGET_GRUB2_ARM_UBOOT
|
|
|
|
if BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI || \
|
|
BR2_TARGET_GRUB2_ARM_EFI || BR2_TARGET_GRUB2_ARM64_EFI
|
|
|
|
comment "Options for the EFI BIOS or ARM EFI support"
|
|
|
|
config BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI
|
|
string "builtin modules"
|
|
default BR2_TARGET_GRUB2_BUILTIN_MODULES if BR2_TARGET_GRUB2_BUILTIN_MODULES != "" # legacy
|
|
default "boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop"
|
|
|
|
config BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI
|
|
string "builtin config"
|
|
default BR2_TARGET_GRUB2_BUILTIN_CONFIG if BR2_TARGET_GRUB2_BUILTIN_CONFIG != "" # legacy
|
|
help
|
|
Path to a Grub 2 configuration file that will be embedded
|
|
into the Grub image itself. This allows to set the root
|
|
device and other configuration parameters, but however menu
|
|
entries cannot be described in this embedded configuration.
|
|
|
|
endif
|
|
config BR2_TARGET_GRUB2_INSTALL_TOOLS
|
|
bool "install tools"
|
|
help
|
|
Install support tools to interact with GNU GRUB Multiboot
|
|
boot loader.
|
|
|
|
This will also install the Grub 2 loadable modules to the
|
|
target.
|
|
|
|
endif # BR2_TARGET_GRUB2
|
|
|
|
comment "grub2 needs a toolchain w/ wchar"
|
|
depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS
|
|
depends on !BR2_USE_WCHAR
|