Commit Graph

11 Commits

Author SHA1 Message Date
Adrien Bourmault 56c59af861
packages: roms_helper: boot: add support for debug configuration
When a computer does not boot at all or the result is only a deep black screen,
a very useful option can be to use a serial connector to get UART debug console
and read it, looking for any useful hint. However, enabling UART debug console
with a sufficient level of details slows down the boot process in most cases.

This commit adds the capability to build debug images, using a special
configuration file for coreboot with debug options. This is a simplistic way
that works for now, but should be improved later on.

These debug images will be generated in the bin-dbg/ directory instead
of bin/ where regular images are located.

Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
Acked-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
2024-12-07 13:51:20 +01:00
Adrien Bourmault fe30ffd6ee
packages: roms_helper: boot: add missing GNUtoo copyright notice
Denis 'GNUtoo' Carikli substancially modified this file at least with the
commits:

a202dce646 (images: remove 'libgfxinit' from the image names)
80f75a334f (rename seabios_withgrub images to seabios)
6fa9af30ad (Remove images with the seabios_grubfirst main payload)
5b9dd7adba (packages: fix calls to build descriptors)
585f4d359a (coreboot/i945 Thinkpads: replace dd commands with INTEL_ADD_TOP_SWAP_BOOTBLOCK)

This commit thus adds GNUtoo's copyright notice.

Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
Acked-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
2024-12-07 13:50:58 +01:00
Adrien Bourmault b7e7b5a257
packages: seabios: fix payload not being added to the GNU Boot image
A bug has been introduced in

    a202dce646
    ("images: remove 'libgfxinit' from the image names.")

where we simplified images names without taking care of renaming the filename
used as the SeaBIOS build target.

This error was visible during the generation of the images:

    Creating new ROM image: bin/[...]/seabios_kgpe-d16-[...].rom
    payload/seabios/seabios.elf: No such file or directory
    E: Could not load file 'payload/seabios/seabios.elf'.
    E: Failed while operating on 'COREBOOT' region!
    E: The image will be left unmodified.

The resulting image was then missing a payload entry and was then
non-functional (people would then just get a black screen without any OS loaded
from the disk).

GNUtoo confirmed by bisecting that the commit cited above was indeed responsible
of the bug and also that the error message above was specific to this issue.

This commit fixes this bug by setting variables to hold the actual payload
location (making future changes easier), in the relevant files.

Tested-by: Adrien 'neox' Bourmault <neox@gnu.org>
Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
GNUtoo: Added "Created new ROM image" log, made it fit,
        improved source code comment.
Acked-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
2024-11-29 00:31:22 +01:00
Adrien Bourmault d80a69e47c
packages: seabios: remove seabios_vgarom.elf
This commit removes the generation of the unused seabios_vgarom.elf image.

Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
GNUtoo: Removed speculations from the commit message
Acked-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
2024-11-29 00:10:42 +01:00
Adrien Bourmault e6cb97c91c
packages: roms_helper/boot: fix trailing whitespace
Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
Acked-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
2024-11-29 00:08:59 +01:00
Denis 'GNUtoo' Carikli a202dce646
images: remove 'libgfxinit' from the image names.
The build system was designed to produce images with different GPU
drivers for a single computer and/or to show the image name in the
final image names, to enable users to know which GPU driver was used.

However since all boards have practically speaking the same GPU driver
('libgfxinit') this adds too much complexity for almost no benefits.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:37:59 +02:00
Denis 'GNUtoo' Carikli 80f75a334f
rename seabios_withgrub images to seabios.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:33:39 +02:00
Denis 'GNUtoo' Carikli 6fa9af30ad
Remove images with the seabios_grubfirst main payload.
The seabios_grubfirst images provides the same functionality than the
GRUB images, but instead of having GRUB being loaded directly by
Coreboot, Coreboot loads SeaBIOS which then loads GRUB.

These images probably exist to enable end users to try it to workaround
potential compatibility issues between the OS and GRUB with the GRUB
image as we have a BIOS implementation being loaded.

While this looks useful, it also makes things more complicated:

- It increase the number of images to choose from, and it's
  complicated to explain the difference between grub and
  seabios_grubfirst to end users.

  For instance for the "x200_8mb", users need to choose between 2 GPU
  modes (corebootfb, or txtmode) and 12 keyboard layouts. So having to
  choose between 2 payloads instead of 3 with one difference that is
  hard to understand makes things easier.

- It makes testing more complicated as we have one more payload to
  test and we also need to make sure to always differenciate both
  images in bug reports, documentation, etc.

And if issues arise from this change in the future, we could work with
upstream to fix them and/or replace the grub images with
'seabios_grubfirst' while keeping the 'grub' name to avoid
complicating things by having two main payloads with identical
features.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
neox: fixed typos in commit message
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:32:14 +02:00
Denis 'GNUtoo' Carikli 5b9dd7adba
packages: fix calls to build descriptors.
Without that fix building images with make release or './build release
all' results in the following error:
    [...]
    Built lenovo/t400 (ThinkPad R400)
    make[1]: Leaving directory '/home/gnutoo/gnuboot/coreboot/default'

    Creating new ROM image: bin/r400_16mb/seabios_withgrub_r400_16mb_libgfxinit_corebootfb_colemak.rom
    Usage:
            ./build <TASK> <PACKAGE>
            ./build --help
    [...]
    Refer to the gnuboot documentation for more information.
    Error: Invalid task 'descriptors'.
    Error:  See './build --help'.
    Error: build/roms: something went wrong
    make: *** [Makefile:47: release] Error 1

This was broken by the commit 857afa42a8
("Switch to packages structure.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:40:31 +01:00
Denis 'GNUtoo' Carikli 585f4d359a
coreboot/i945 Thinkpads: replace dd commands with INTEL_ADD_TOP_SWAP_BOOTBLOCK
It is possible to install GNU Boot on I945 Thinkpads without opening
the computer even if the nonfree bios sets the bootblock region (the
last 64K of the flash chip) read-only.

The flash chip looks like that:
+-----   -----+---------------------------+-------------------------+
|     ...     | Secondary bootblock (64k) | Primary bootblock (64k) |
+-----   -----+---------------------------+-------------------------+
0      0x1e0000                                                  2MiB

To bypass the read-only restriction we use an utility (bucts) that
tells the hardware to swap the primary bootblock with the secondary
one for the next boot. We then have to disable that swap and reflash
again.

CONFIG_INTEL_ADD_TOP_SWAP_BOOTBLOCK generates the two bootblocks
directly in coreboot so we don't need to use special commands to do
that anymore.

In addition the MacBook 1.1 and 2.1 are known not to have such
read-only restrictions so they don't need to have
CONFIG_INTEL_ADD_TOP_SWAP_BOOTBLOCK enabled.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-06 17:32:36 +01:00
Denis 'GNUtoo' Carikli 857afa42a8
Switch to packages structure.
The various build scripts are scattered around in multiple
places. This make it hard for contributors to understand what they
need to modify.

Most GNU Boot users are interested in running GNU/Linux or BSD
operating systems. And the way to install software on these
operating systems is through a package manager. So most users and
contributors already know the package manager abstraction.

So using that abstraction makes it easier to find where things are.

The scripts to install dependencies don't really fit the new structure
but for now we move them in to make sure that everything works
fine. This could be fixed later on and migrated to a single
dependencies packages by auto-detecting the distribution with
/etc/os-release.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-06 17:14:14 +01:00
Renamed from resources/scripts/build/boot/roms_helper (Browse further)