Commit Graph

846 Commits (da3c9bb3c5c3b1f2e6e67a3695ce39b17bf68d5b)

Author SHA1 Message Date
Leah Rowe da3c9bb3c5 merge config/ and resources/
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-04 02:47:25 +01:00
Leah Rowe a05010503f blobs/download: don't handle ifd/gbe files
they weren't even handled at all, but they were referenced
under coreboot configuration

they don't need to be handled. lbmk simply includes these files.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-04 02:12:05 +01:00
Leah Rowe 03788d14fb move ifd/gbe configs into config/ifd/
it doesn't really make sense for them to be under
blobs/ - nominally, they are blobs, but they are
well-understood data files containing config data,
that is easily parsed by tools like ich9show or
ifdtool (and tools like bincfg or nvmutil)

blobs/ has been re-purposed: this directory no longer
exists in lbmk, but it is created (and on .gitignore)
when needed, by blobutil

thus, the blobs/ directory shall only contain vendor
files, and only those files that libreboot scrubs from
releases. therefore, build/release/src can (and has
been) simplified; it currently copies just the ifd and
gbe files from blobs/, selectively, and this logic is
quite error prone, requiring maintenance. now, the
build/release/src script simply copies config/ (which
only ever contains distributable files) and entirely
ignores the blobs/ directory

the blob download script already creates the required
directory, except for the sch5545 download; this is
now fixed

lbmk code size is slightly smaller, due to this patch

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-04 01:38:08 +01:00
Leah Rowe 6ddb0e0974 run make oldconfig on coreboot/default mainboards
the resulting changes are what i will push. this prevents
the coreboot build system from asking for user input.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 23:20:28 +01:00
Leah Rowe 19efdf9eeb ich9m mainboards: use pre-assembled ifd/gbe files
This cuts down on build time, and it will allow libreboot
to remove large chunks of code.

these ifd/gbe configs are just binary-encoded config files,
in a format well-understood. they can easily be opened up
and displayed, using ich9show or ifdtool, and manipulated
by these tools; bincfg can generate them from scratch, and
nvmutil can change mac addresses, for example.

so, do this and remove from lbmk the following:

* ich9utils (which contains ich9gen) - not needed anymore
* code in lbmk for handling ich9gen and insertions; the
  coreboot build system is now used, for this same purpose,
  so remove such code from lbmk

this results in a massive code size reduction (thousands of
lines) in lbmk; smaller when only looking at the build
system, but much larger when you consider that ich9utils
is also removed (about 3k sloc)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 22:40:33 +01:00
Leah Rowe af8d8cda7d add ich9m ifd/gbe files
a follow-up patch will make use of these, rather than ich9gen,
and ich9gen will be deleted.

these files were in fact generated *by* ich9gen.

coreboot has ifdtool and bincfg, the latter of which can
generate both ifd and gbe files for ich9m. that, and nvmutil
which is part of libreboot, can change gbe mac addresses.

i was going to replace ich9gen with a script that would run
bincfg, ifdtool and nvmutil, to greatly reduce code size,
because ich9gen is about 3k sloc.

however, in practise we would always generate the same ifd
config, and basically only change the mac address if that's
what the user wants; nvmutil can already do that just fine.

so, just include the binaries directly.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 19:19:50 +01:00
Leah Rowe d554efae81 build/release/src: copy e6430 ifd/gbe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 18:36:25 +01:00
Leah Rowe 09aae7be45 build/rpi-pico-serprog: better error handling
use a subshell for changing directory, and use more
verbose error messages under fault conditions

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 17:46:59 +01:00
Leah Rowe 1dc54608a1 fix rpi-pico builds when running it twice
it needed to be make-cleaned

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 17:36:42 +01:00
Leah Rowe c63052cf19 fix memtest86plus download/build
the mkdir command in update/project/repo, added for
pico-pi integration, broke a bunch of other downloads.

the fix is a bit of a hack but it should hold for now.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 17:28:10 +01:00
Leah Rowe fb4e6834c1 Merge pull request 'Add Dell Latitude E6430' (#124) from nic3-14159/lbmk:e6430 into master
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/124
2023-09-03 15:55:42 +00:00
Nicholas Chin ebc04e5212 Add Dell Latitude E6430
This was only tested on the iGPU model, though a dGPU model does exist.
The vendor firmware used a 16KiB gbe.bin, which was modified with a
random MAC address as well as shrinking it to 8KiB. As with the E6400,
GRUB doesn't like the way the EC implements the keyboard controller and
thus GRUB payloads are disabled at this time. Suspend does not currently
work, and this is believed to be due to the EC controlling the DRAM
reset gate which is required to prevent DRAM from being reset on resume.

With some tweaks, the e6400-flash-unlock utility also works on this
system, though both flash chips can be accessed through removal of only
the keyboard.

Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
2023-09-03 09:13:03 -06:00
Leah Rowe 71d361aac7 Merge pull request 'Less cat abuse' (#123) from Riku_V/lbmk:cat into master
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/123
2023-09-03 14:12:47 +00:00
Riku Viitanen ef3fb05d66 Less cat abuse
More than 90% of cats were thus terminated.
read (shell built-in) is better at reading, and dogs are better pets.

Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-09-03 17:00:21 +03:00
Leah Rowe eebf713311 switch repo links for pico-serprog
use official libreboot repos

the codeberg repo makes reference to riku's repo

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 14:36:52 +01:00
Leah Rowe 9ef8a7ea80 Merge pull request 'Automate pico-serprog builds' (#122) from Riku_V/lbmk:mkserprog into master
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/122
2023-09-03 01:13:30 +00:00
Riku Viitanen e369e8fb4a automate rpi-pico serprog builds
./build rpi-pico serprog
build bin/serprog/rpi-pico-serprog.uf2

Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
2023-09-03 04:00:42 +03:00
Leah Rowe 92b4db6992 build/release/src: only clean kbc1126 if it exists
the way this script works, it only copies what was built,
but it currently operatios as though coreboot/default
always exists, and then cleans the kbc1126 util

this patch fixes such buggy behaviour

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 01:53:35 +01:00
Leah Rowe 7c6b35cf95 unify build/clean scripts: use handle/make instead
The -c option is added for distclean, and -x for crossgcc-clean,
in handle/make/config

about 100 sloc removed from lbmk

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 01:53:35 +01:00
Leah Rowe cec37747b7 build/release/*: use -T0 in xz, for multithreading
The -T option specifies how many threads xz shall use.

The -T value of zero shall dictate that xz use so many
threads as there are CPUs, on the host system.

This will probably speed up the release process a bit.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 01:53:35 +01:00
Leah Rowe b4b63adb50 don't support ucode removal on untested targets
i have in fact tested whether many of these targets (ivy,
sandy and haswell on intel) boot without microcode, and many
do, but it's not as well tested

the older targets like i945, x4x, pineview and gm45 are
well-tested without microcode; ditto fam10/15h amd.

lbmk supports providing roms with and/or without microcode.
for the targets touched in this commit, lbmk now only
provides images with microcode included by default.

manual removal (with cbfstool) is still possible, if you want
to do that.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-03 01:53:35 +01:00
Leah Rowe b30c7e330b coreboot/e6400: support nvidia models
The same ROM images that you flash on Intel GPU variants,
are now flashed on Nvidia models. The same ROM will work
on both. If an Intel GPU variant is present, libgfxinit
is used, and the VGA ROM is used if an Nvidia GPU variant;
however, release ROMs will scrub the nvidia option ROM,
so release ROMs will only work on Intel GPUs unless you
run the blobutil inject command.

I decided to no longer have this under WIP, but to put
it in master. The issue with it pertains to video drivers,
which is not Libreboot's problem.

Nouveau crashes under Linux, so use "nomodeset" if it does.
The "nv" drivers in BSD systems work very well.

The nvidia model of E6400 isn't recommended for other
reasons, namely: poor thermal cooling (thermal pad on
the GPU) and that Nvidia GPU doesn't get very good
performance on any libre drivers anyway. The Intel GPU
variant is better, in terms of power efficiency and
software support; the intel variant also works with
native graphics initialisation in coreboot.

This board port already only enables SeaBIOS, which will
simply execute the VGA ROM. Blobutil already supports
reading the config, detecting that a VGA ROM is needed,
because that part of the WIP E6400 branch was already
merged in lbmk master.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02 17:40:49 +01:00
Leah Rowe 436b2ccb5a handle/make/config -m/-u: actually copy configs
they weren't being copied back, after running the
make command. i overlooked this when testing in
the previous optimisations, because i only tested
building, not modification or updating of configs

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02 17:02:17 +01:00
Leah Rowe 3c7b09ace9 handle/make/config: properly handle cbutils
it wasn't being checked for, to run cbfstool.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02 12:04:50 +01:00
Leah Rowe a3bc7ccd71 handle/make/file: fix uefitool builds
the current check only worked if it had already
been built, when checking for the Makefile

however, running this during build/release/src
caused problems, hence the current check

so: perform the same check, but as a fallback for
cmake failing (and if that check fails, only then
will err be called)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02 10:43:35 +01:00
Leah Rowe 4885c7962d handle TMPDIR from include/export.sh
it looks a bit cluttered just sitting there in
the main script. make it an include.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-02 10:22:39 +01:00
Leah Rowe 56f16bc883 don't do cmake on uefitool if the Makefile exists
nasty little hack to fix another nasty little hack,
which i call script/build/release/src

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 11:07:00 +01:00
Leah Rowe 98d1ea5ae7 build/release/src: bugfix: actually copy cb/ub/sb
coreboot, seabios and u-boot were not being copied at all

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 11:02:47 +01:00
Leah Rowe 755f925ad9 build/release/src: copy handle symlink
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 10:48:33 +01:00
Leah Rowe 3ad29d2d2a build/release/src: remove Makefile reference
lbmk never needed a makefile, because the build system
is all shell scripting; the former makefile simply called
those scripts, in a way that was mostly superfluous

build/release/src was still trying to copy it, so let's
remove it from that file

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 10:43:33 +01:00
Leah Rowe d69c231e24 build/release/src: fix bad variable reference
it's i, not 1

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 10:27:14 +01:00
Leah Rowe 38440153b5 update build/release/src based on lbmk changes
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 10:19:14 +01:00
Leah Rowe 0e782e7ee5 update the fetch scripts themselves
the fetch scripts call themselves, for dependencies

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 09:38:24 +01:00
Leah Rowe 98f30b6dbe build/coreboot/utils: exit 1 if target.cfg missing
it was previously trying to "continue", despite not being
inside a loop. the correct instruction would have
been "return 0", but then I thought it'd be better to
err here

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 08:46:24 +01:00
Leah Rowe b9662fbe36 handle project downloads in main lbmk script
this means the unified /tmp handling is now provided for
in both the former "fetch" and "fetch_trees" script, which
are now (respectively):

./update project repo
./update project trees

if the fetch scripts weren't cleaning /tmp before, they
now are, because lbmk handles it

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 08:30:08 +01:00
Leah Rowe 12b33eb8c1 lbmk script: always clean up /tmp files
export TMPDIR to scripts, and handle it in a way that
we know lbmk set it

delete it at the end of the parent process, but not child
processes; when the lbmk script calls itself, child processes
will not delete the tmp directory.

some scripts in lbmk weren't cleaning up the tmpfiles they
made, and they still don't, but this mitigates that.

now in follow-up commits, i can start cleaning up those
scripts too.

not handled by this patch:
if the user cancels lbmk (ctrl+c), the tmp directory will
still be there. this too will be handled, in subsequent
patches

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-01 01:36:34 +01:00
Leah Rowe 225e2609fa only remove microcode in build/release/roms
libreboot's build system, lbmk, *is* available to use
in releases aswell (use the _src tarball), but it is
mostly intended for development, in lbmk.git

well, there's not much point wasting time / disk space
generating no-microcode roms within lbmk

they should be generated only at release time, alongside
the default ones

this patch implements that, thus speeding up the build
process and saving disk usage during development

the other alternative was to add a new option in
build/boot/roms, -m, that would opt in to removing them,
but this is extra complexity for something that is ill
advised and only provided to appease certain people

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-31 23:30:56 +01:00
Leah Rowe bf774acf1d move build/boot/rom moverom to handle/make/config
most of these steps do not need to be repeated, per image.

move it into handle/make/config, so that the steps are
performed on files that go under elf/coreboot (this will
save on build time).

the logic for handling 4MB ROM images on sandy/ivy was unused,
and has been removed.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-31 21:12:35 +01:00
Leah Rowe e5546128ea build/release/roms: fix syntax error
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-31 17:47:56 +01:00
Leah Rowe fbda0f04db re-add /dev/null redirect on . ${1}
the error messages that it shows are benign, but users
see them and worry that something went wrong

this patch reduces the number of people asking pointless
questions on irc

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-31 17:16:54 +01:00
Leah Rowe b2bad5a030 build/release/src: copy the include/ directory
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-29 13:15:13 +01:00
Leah Rowe eb54e427e6 grub: all one grub.elf containing keymaps and cfg
new behaviour:
* grub.cfg and grubtest.cfg no longer inserted to cbfs
* grub.cfg in memdisk instead
* grub.cfg in memdisk defers to cbfs/grub.cfg if added
  (not added by default, anymore)
* does not defer to grubtest.cfg even if available
* only shows link to grubtest.cfg if available,
  as a menuentry item

keymaps:
if /keymap.gkb exists in cbfs, it uses that by default,
but by default this isn't added. instead, it looks for
a file named keymap.cfg and sources that, which then
sets the keymap to one that is located under memdisk.
this file is inserted for each rom, per layout.
if keymap.gkb and keymap.cfg both absent, grub.cfg in
memdisk shall defer to usqwerty as the default keymap

grub_scan_disk: grub.cfg looks for cbfs file "scan.cfg"
and sources that if found, which will be inserted with
the string: set grub_scandisk=setting_goes_here (based
on target.cfg, generated by build/boot/roms automatically).
If no scan.cfg is found, it defaults to "both"

The "background.png" file remains unchanged, and present in
CBFS, used by grub.cfg if present (and it is, by default)

This change actually *saves* space in CBFS, due to compression,
and means that the grub.cfg is now compressed heavily. This
is also safer, because now the user overrides grub.cfg by
adding it, and they can still add grubtest.cfg for testing
first. If they accidentally delete both configs from cbfs,
Libreboot will fall back to the one in memdisk which would
presumably not be deleted.

This also means that lbmk can now more easily be used by
other build systems, that just want the GRUB part to re-use
in their own project. For example, people who want to build
custom coreboot images without using Libreboot's build system.

This change also *speeds* up the build process considerably,
on the parts where ROM images are copied. It's less than half
a second now, whereas previously it took about 30-45 seconds
for ROM images to copy, because of grub.elf being re-added in
each ROM via cbfstool, where compression is used; I believe
the compression part is what caused slowness.

Much, much faster, more versatile builds.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-29 02:03:16 +01:00
Leah Rowe c6fd4d2ad3 lbmk: run ./build dependencies *before* root check
After that, do not allow anything to run if the user is
root. This logic flow is more robust, and reduces the
chance of bugs in the future.

We must not permit the user to run lbmk as root.

Running it as root *is* possible, by just removing
the check, and wily enough users will do that, but
this behaviour in lbmk is good practise because it
prevents accidentally running as root. If the user
went into root just for installing dependencies, they
might accidentally forget to switch back. This is a
safeguard against such folly.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 15:28:19 +01:00
Leah Rowe 6722624dfc build/boot/roms: fix bad variable assignment
this was an oversight, in a previous commit.
there was a space, between variable name and
the equals sign, and then another space, so it
was trying to *execute* the rom

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 13:51:17 +01:00
Leah Rowe 55be6dda10 dependencies/ubuntu2004: update based on debian
ttf-unifont instead of fonts-unifont

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 12:16:43 +01:00
Leah Rowe 0052f9d03a fix: don't require git config for dependencies
this was an oversight on my part. the script cannot be
run as root, except to install distro dependencies e.g.:

as root: ./build dependencies debian

however, ./checkgit was being run *before* checking that,
making it required to set git config as root.

this patch fixes that bug.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 12:00:26 +01:00
Leah Rowe 6dbddf852c build/boot/roms: simplify ich9m ifd handling
Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 11:41:38 +01:00
Leah Rowe f5787c9e50 build/boot/roms ich9m ifd: use fast dd command
bs=block size and count=1,
rather than bs=1 and count=block size

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 11:28:41 +01:00
Leah Rowe d9292cec6a build/boot/roms: use the new coding style
lbmk's new style is inspired by the bsd coding styles:
top-down logic, main simplified to a skeleton showing
overall program structure, variables well-defined,
rigorous (yet deceptively simple) error checking.

this was attempted before, but caused problems; coreboot
wasn't being cleaned properly, and rather than audit it,
i simply reverted this back to the old style.

this is actually attempt number 5, because i made 3 more
attempts between then and this one. i've build-tested this
using "./build boot roms all" (which is what b0rked on
the first attempt, months ago). it should be stable(tm).

the code is much nicer to read / work on now. this is the
beating heart of lbmk. get this script wrong, and you break
all of libreboot.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 11:23:23 +01:00
Leah Rowe 4623f3f2b2 Remove superfluous GRUB modules (save CBFS space)
With this change, about 54KB of compressed space is saved
inside of CBFS, on setups that use the GRUB payload.

The uncompressed saving is about 720KB, but payloads are
compressed inside each coreboot image, so the compressed
saving is much smaller. That 54KB saving means a lot,
especially on small (1MB or smaller) flash sizes.

The following modules were removed:

adler32, afsplitter, aout, archelp, backtrace, blocklist,
bswap_test, cat, cmdline_cat_test, cmosdump, cmostest, cmp,
cmp_test, cpuid, cs5536, ctz_test, date, datehook, datetime,
disk, diskfilter, div, div_test, dm_nv, efiemu, eval,
exfctest, extcmd, file, fshelp, functional_test, gdb,
gettext, gptsync, hashsum, hdparm, hello, hfspluscomp, http,
json, json, ldm, loadenv, macbless, macho, mda_text, morse,
mpi, msdospart, mul_test, net, ntfscomp, offsetio,
part_acorn, part_amiga, part_apple, part_dvh, part_plan,
part_sun, part_sunpc, parttool, pbkdf2, pbkdf2_test, pci,
play, priority_queue, probe, progress, random, rdmsr, read,
relocator, setjmp, setjmp_test, shift_test, signature_test,
sleep, sleep_test, smbios, strtoull_test, terminal,
terminfo, test_blockarg, testload, testspeed, tftp, tga,
time, tr, trig, usbtest, video_bochs, video_cirrus,
videoinfo, videotest, videotest_checksum, wrmsr, xnu_uuid,
xnu_uuid_test

These were retained, but moved to modules instead of
install modules:

geli, udf, ufs1, ufs1_be, ufs2

Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-08-28 01:25:10 +01:00