Commit Graph

19 Commits

Author SHA1 Message Date
Adam Duskett
7a68960b68 boot/grub2/Config.in: add symbols to represent legacy and EFI boot
There are cases to want a synthetic information whether the legacy BIOS
or U-Boot boot scheme, or the EFI boot scheme, are enabled, without
resorting to testing all and each platforms.

This is already the cae in grub2 itself, for the configuration of the
BIOS/U-Boot boot partition, and builtin modules and configuration on one
hand, and the EFI builtin modules and configuraiton on the other hand.

It is also the case for mender-grubenv, which will want to know if
either or both are enabled, but without having to resort to testing all
the cases.

Add two new symbols, that each represent those conditions:
  * BR2_TARGET_GRUB2_HAS_LEGACY_BOOT
  * BR2_TARGET_GRUB2_HAS_EFI_BOOT

Each target selects the appropriate bool, which makes it much more
simple for other packages such as mender-grubenv to check if grub legacy
or EFI is selected.

And of course, we also make use of those symbols in grub2 itself, to
simplify the conditions for showing.hiding legacy and EFI options.

Additionally (but that does not merit being in its own patch), add a
comment on the closing 'endif' for the EFI part.

Signed-off-by: Adam Duskett <aduskett@gmail.com>
[yann.morin.1998@free.fr:
  - s/BR2_TARGET_GRUB_/BR2_TARGET_GRUB2_/
  - rename variables anyway
  - use variables in grub2 itself
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Köry Maincent <kory.maincent@bootlin.com>
2021-12-04 18:04:08 +01:00
Kory Maincent
b68810e70c boot/grub2: add support to build multiple Grub2 configurations in the same build
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>
2021-09-27 21:36:06 +02:00
Erico Nunes
273a27804a boot/grub2: enable support for arm and aarch64 targets
This commit enables the arm-uboot, arm-efi and aarch64-efi grub2
platforms in Buildroot.

With the uboot platform, the grub2 image gets built as a u-boot image
and is loaded from u-boot through a regular "bootm". The only
requirement from the u-boot side in order to allow this is that u-boot
is built with CONFIG_API enabled. CONFIG_API seems to not be enabled
by default in most in-tree configurations, however, it seems to be
available for quite some time now. So it might be possible to use this
even on older u-boot versions. This is available only for arm
(32-bit).

With the efi platform, grub2 gets built as an EFI executable. This
allows EFI firmware to find and load it similarly as it can be done
for x86_64. Also, since u-boot v2016.05, u-boot is able to load and
boot an EFI executable, so the uboot efi platform can also be used
from u-boot in recent versions. This has been enabled (mostly) by
default for ARM u-boot. efi platform is available for both arm and
aarch64.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
[Thomas: move the BR2_USE_MMU dependency in
BR2_TARGET_GRUB2_ARCH_SUPPORTS]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2018-11-26 21:08:13 +01:00
Erico Nunes
2d9566b7b7 boot/grub2: add option to install tools
Add an option to install grub2 support tools to the target.

In the context of Buildroot, some useful target tools provided are
grub2-editenv, grub2-reboot, which provide means to manage the grub2,
environment, boot order, and others.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2018-11-26 20:59:33 +01:00
Erico Nunes
0802ede021 grub2: move usage notes to package readme.txt
As discussed in the mailing list, grub2 usage notes were growing too big
for a Config.in documentation, and so it was agreed that a readme.txt in
the package directory is a better place to put them.

This commit simply moves the documentation as-is to preserve the
original contents as they were in Config.in which can be worked on in
further commits.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-07-16 15:25:27 +02:00
Erico Nunes
5ffafd2353 grub2: bump up version
After many years since the last release and a long time with grub 2.02
in beta, there is finally a release and it brings many bug fixes and
interesting features such as support for ARM.

Patch boot/grub2/0001-remove-gets.patch doesn't seem to be required
anymore as grub-core/gnulib/stdio.in.h has changed significantly since
"053cfcd Import new gnulib." and has another treatment for gets.
Patch
boot/grub2/0002-grub-core-gettext-gettext.c-main_context-secondary_c.patch
was a backport which is present after the bump and therefore is also no
longer necessary.

Since we're adding a Config.in comment, we also introduce a
BR2_TARGET_GRUB2_ARCH_SUPPORTS hidden boolean, in order to avoid
repeating the architecture dependencies.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[Thomas: add BR2_TARGET_GRUB2_ARCH_SUPPORTS, remove bogus dependencies
on ARM and AArch64, since enabling Grub2 on those architectures is
done in another commit.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-07-16 14:55:33 +02:00
Arnout Vandecappelle
d3a59d8e66 grub2: remove host/usr reference from help text
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2017-07-05 16:06:29 +02:00
Gustavo Zacarias
09a44ddd44 boot/grub2: enable squashfs support by default
Size growth is minimal and generally a non-issue for x86-based
platforms.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-03-29 03:02:05 +02:00
Samuel Martin
fcc8d123ea bootlader/grub2: disable x86-64-efi choice on !BR2_ARCH_IS_64
When x86-64-efi platform is selected, grub2 automatically adds -m64 to the
CFLAGS. This makes the configure script failed when the toolchain does not
have multilib support (like the Buildroot ones).

Reported-by: Noe Rubinstein <nrubinstein@aldebaran-robotics.com>
Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-02-03 12:05:53 +01:00
Jerzy Grzegorek
1769933d98 package: indentation cleanup
Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-10-26 05:47:05 +01:00
Jérôme Pouiller
0fe134f082 grub2: add a tip to create disk image w/o root permission
[Thomas: minor fixes/improvements.]

Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-07-23 23:42:28 +02:00
Thomas Petazzoni
a3ac2a6f58 grub2: fix a few minor issues in help text
The help text of grub2 explains the detailed steps to create a disk
image with grub2 installed on it. However, the steps for the
BIOS-based systems have a few minor issues fixed by this patch:

 - When calling partx to get the partitions detected, we should do it
   on the /dev/loop0 block device, and not on the underlying disk.img
   image file.
 - The grub-bios-setup utility must be called as root to work properly
   on /dev/loop0.
 - The steps to cleanup the partx and loop device were missing.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-07-15 20:09:11 +02:00
Jérôme Pouiller
8a5a57de1c grub2: Specify boot partition
Since boot partition was not specified, grub tools try to detect it
automatically. This patch add an option to force it.

Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-07-02 10:59:01 +02:00
Dima Zavin
1f9a0b3815 grub2: add a configuration option to embed a config file
Add an option for embedding a config file directly in grub.

Signed-off-by: Dima Zavin <dmitriyz@google.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-04-20 17:48:46 +02:00
Thomas Petazzoni
c24fdb3680 grub2: add new package
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2014-02-19 23:28:04 +01:00
Thomas Petazzoni
a5dc0cdced grub2: remove package
Grub 2 has been marked BROKEN in June 2010, and nobody cared to fix it
since then.

At that time, it was marked broken because the build process needed a
Ruby interpreter available on the host, and it's really a pain that
building a bootloader needs such a thing.

I've tried to upgrade the package to Grub2 1.99-rcX, and now it does
not need a Ruby interpreter anymore, but instead requires a tool
called "autogen", which itself needs the Guile Scheme interpreter.

Since we haven't heard any complaints about Grub2 being marked broken,
and since it's such a pain to package, let's get rid of it. Of course,
anybody interested in Grub2 is invited to contribute a working
package.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-10 15:31:16 +02:00
Thomas Petazzoni
38a88b6918 grub2: only available on x86 and PowerPC and mark as BROKEN
The build process of grub2 breaks the compilation. It breaks with:

./configure: line 4766: syntax error near unexpected token `external'
./configure: line 4766: `AM_GNU_GETTEXT(external)'

In addition to this, it later requires Ruby. Do we really want to make
Buildroot depend on Ruby being installed on the host ? Do we really
want to build our own Ruby ? Do we even care about Grub2 ?

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-06-12 13:38:44 +02:00
Thomas Petazzoni
1d73ef9449 grub2: remove non-existing options
Much of the grub2.mk seems to have been copy/pasted from
grub.mk. However, all the network/splashimage related ./configure
options do not exist in grub2.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-06-12 13:38:44 +02:00
Thomas Petazzoni
649b5b9250 bootloaders: move bootloader build code to boot/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-06-10 21:05:12 +02:00