todo page: even more stuff (a lot more)
Signed-off-by: Leah Rowe <leah@libreboot.org>master
parent
81f5521bfd
commit
62faae9acd
|
@ -11,6 +11,25 @@ Many of these entries will pertain to *lbmk*, which is Libreboot's build
|
||||||
system, but some entries may relate to documentation, or organisational
|
system, but some entries may relate to documentation, or organisational
|
||||||
changes.
|
changes.
|
||||||
|
|
||||||
|
Libreboot mailing list
|
||||||
|
======================
|
||||||
|
|
||||||
|
Use <https://sr.ht/~libreboot/> to provide a mailing list, for the Libreboot
|
||||||
|
project. Sourcehut is a codeforge, that revolves around use of a mailing list.
|
||||||
|
The actual mailing list itself is very good, though Libreboot would likely
|
||||||
|
continue using [Codeberg](../news/codeberg.md) since it provides an interface
|
||||||
|
that most contributors will be familiar with.
|
||||||
|
|
||||||
|
Libreboot last had a mailing list in 2016, but running one isn't very feasible
|
||||||
|
for a small project like this, with a smaller scope. Although Libreboot has an
|
||||||
|
ambition to support every board from coreboot, of which there are hundreds, the
|
||||||
|
actual design of Libreboot (as a [source-based package manager that auto-builds
|
||||||
|
ROM images](../docs/maintain/)) is very limited in scope.
|
||||||
|
|
||||||
|
At the same time, there aren't many good outsourced options for providing a
|
||||||
|
mailing list. Sourcehut is basically our best option. Access to the `~libreboot`
|
||||||
|
account or sr.ht was [acquired](../news/10.md) during April 2023.
|
||||||
|
|
||||||
General auditing
|
General auditing
|
||||||
================
|
================
|
||||||
|
|
||||||
|
@ -33,6 +52,39 @@ reduces the sloccount by only 1 line, maybe 3, but they all add up. Audit 3
|
||||||
contained hundreds of changes, small changes, that together accounted for
|
contained hundreds of changes, small changes, that together accounted for
|
||||||
about 1000 lines of code removed, while not affecting functionality in any way.
|
about 1000 lines of code removed, while not affecting functionality in any way.
|
||||||
|
|
||||||
|
Port vendor scripts to Heads
|
||||||
|
============================
|
||||||
|
|
||||||
|
Ironically, one of the first entries on this page pertains to a competing
|
||||||
|
project.
|
||||||
|
|
||||||
|
I promised the Heads project that I'd port Libreboot's vendorfile download and
|
||||||
|
inject scripts to the Heads build system. Libreboot provides these scripts for
|
||||||
|
automatically downloading certain firmwares at build time, as and when
|
||||||
|
required for a given mainboard. These are provided by the vendor, e.g. SMSC
|
||||||
|
SCH5545 Environment Control (EC) firmware used for fan control on Dell
|
||||||
|
Precision T1650.
|
||||||
|
|
||||||
|
Heads has such logic, but it's not as developed as the logic in Libreboot,
|
||||||
|
which was originally inspired by the Heads logic and then greatly expanded upon.
|
||||||
|
|
||||||
|
I'm putting this here on the Libreboot TODO page, so that I always see it. And
|
||||||
|
I'm keeping it at the top of the page. This TODO entry is still relevant to
|
||||||
|
Libreboot, because it concerns work that I will do in my official capacity,
|
||||||
|
representing Libreboot while helping the (friendly) competition.
|
||||||
|
|
||||||
|
See: <https://osresearch.net/>
|
||||||
|
|
||||||
|
Heads is a really cool project, offering Linux-based kexec payloads on
|
||||||
|
supported hardware. It's another coreboot distro, and their build system design
|
||||||
|
even works similarly to Libreboot's (though they heavily use Makefiles whereas
|
||||||
|
Libreboot exclusively uses shell scripts and uses a much simpler design). Heads
|
||||||
|
provides many advanced security features like measured boot, even things like
|
||||||
|
TOTP-based authentication using secrets stored in the TPM.
|
||||||
|
|
||||||
|
Very, very, very^2 cool project, and Libreboot has plans to integrate some
|
||||||
|
of the same functionalitiys within it (see other notes on this page).
|
||||||
|
|
||||||
Interesting board ports
|
Interesting board ports
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
|
@ -668,3 +720,142 @@ A 16MB setup was attempted on the ThinkPad T440p, but didn't boot, and I now
|
||||||
believe it was because I didn't insert the MRC firmware at the correct offset
|
believe it was because I didn't insert the MRC firmware at the correct offset
|
||||||
during that test. Libreboot's build system now handles that correctly, in
|
during that test. Libreboot's build system now handles that correctly, in
|
||||||
the vendorfile inject script at `script/vendor/inject`.
|
the vendorfile inject script at `script/vendor/inject`.
|
||||||
|
|
||||||
|
Overclocking
|
||||||
|
============
|
||||||
|
|
||||||
|
See: <https://review.coreboot.org/c/coreboot/+/42547>
|
||||||
|
|
||||||
|
The patch, now abandoned, is a proof of concept tested on Asus P8Z77-V LX2 with
|
||||||
|
i7-2600 and i5-3330. It is possible for coreboot to enable overclocking on
|
||||||
|
some boards, though it's seldom-used and not very universally supported.
|
||||||
|
|
||||||
|
It might be useful on some machines. The research here (by Angel Pons) may be
|
||||||
|
transferrable to other platforms.
|
||||||
|
|
||||||
|
Better dependencies handling
|
||||||
|
============================
|
||||||
|
|
||||||
|
Lbmk supports handling dependencies, in such a way that a required program is
|
||||||
|
automatically downloaded *after* the main one. For example, GRUB requires gnulib.
|
||||||
|
|
||||||
|
The problem is that it doesn't work in reverse. For example, when you download
|
||||||
|
gnulib, it's actually saved under `src/grub/gnulib`, and `src/grub/` is the
|
||||||
|
directory created when downloading GRUB.
|
||||||
|
|
||||||
|
Illustration:
|
||||||
|
|
||||||
|
```
|
||||||
|
./update trees -f gnulib
|
||||||
|
./update trees -f grub
|
||||||
|
```
|
||||||
|
|
||||||
|
This will first download gnulib, but then `src/grub` now exists, and the second
|
||||||
|
command to download GRUB will fail, because that directory now exists, but does
|
||||||
|
not have anything in it. Some checks for GRUB may then pass, thinking that
|
||||||
|
GRUB has already been downloaded, when it hasn't.
|
||||||
|
|
||||||
|
Observe:
|
||||||
|
|
||||||
|
```
|
||||||
|
no u lbmk$ git clone . test
|
||||||
|
Cloning into 'test'...
|
||||||
|
cdone.
|
||||||
|
dno u lbmk$ c dtest
|
||||||
|
bash: c: command not found
|
||||||
|
no u lbmk$ l^C
|
||||||
|
no u lbmk$ cd test
|
||||||
|
no u test$ ls
|
||||||
|
build COPYING projectname script util
|
||||||
|
config include README.md update vendor
|
||||||
|
no u test$ ./update trees -f gnulib
|
||||||
|
Cloning into '/home/leah/Project/lbdev/lbmk/test/tmp/gitclone'...
|
||||||
|
remote: Counting objects: 281482, done.
|
||||||
|
remote: Compressing objects: 100% (33030/33030), done.
|
||||||
|
remote: Total 281482 (delta 248520), reused 281273 (delta 248367)
|
||||||
|
Receiving objects: 100% (281482/281482), 69.48 MiB | 7.98 MiB/s, done.
|
||||||
|
Resolving deltas: 100% (248520/248520), done.
|
||||||
|
HEAD is now at 9f48fb992a filevercmp: fix several unexpected results
|
||||||
|
no u test$ ./update trees -f grub
|
||||||
|
src/grub already exists, so skipping download
|
||||||
|
src/grub/gnulib already exists, so skipping download
|
||||||
|
```
|
||||||
|
|
||||||
|
In this case, GRUB will now *always* fail to download, until the `src/grub`
|
||||||
|
directory is deleted, which would delete gnulib.
|
||||||
|
|
||||||
|
The following could be done:
|
||||||
|
|
||||||
|
* Check whether a given location for a download is within a location used by
|
||||||
|
another project, and refuse to do anything if that's the case (exit with error)
|
||||||
|
OR:
|
||||||
|
* Automatically download that other program first
|
||||||
|
|
||||||
|
It's probably cleaner to go with the first one. Prevent a program downloaded by
|
||||||
|
lbmk from being included within another. If another such program is needed
|
||||||
|
inside another, for example as a submodule, then the program could be modified.
|
||||||
|
For example, modify GRUB to use the location of `../gnulib` as the directory
|
||||||
|
for gnulib, where you would then have `src/grub` and `src/gnulib` - this can
|
||||||
|
already be done, simply by configuring everything in `config/git/`, but lbmk
|
||||||
|
currently does not check this.
|
||||||
|
|
||||||
|
For comparison, here's what happens if you download GRUB (which defines gnulib
|
||||||
|
as a dependency):
|
||||||
|
|
||||||
|
```
|
||||||
|
no u test$ rm -Rf src/grub
|
||||||
|
no u test$ ./update trees -f grub
|
||||||
|
Cloning into '/home/leah/Project/lbdev/lbmk/test/tmp/gitclone'...
|
||||||
|
remote: Counting objects: 101717, done.
|
||||||
|
remote: Compressing objects: 100% (23307/23307), done.
|
||||||
|
remote: Total 101717 (delta 76079), reused 101552 (delta 75971)
|
||||||
|
Receiving objects: 100% (101717/101717), 71.90 MiB | 12.85 MiB/s, done.
|
||||||
|
Resolving deltas: 100% (76079/76079), done.
|
||||||
|
HEAD is now at 64e3cee72 gpt: Add compile time asserts for guid and gpt_partentry sizes
|
||||||
|
Applying: mitigate grub's missing characters for borders/arrow characters
|
||||||
|
Applying: say the name libreboot, in the grub menu
|
||||||
|
Applying: Add CC0 license
|
||||||
|
Applying: Define GRUB_UINT32_MAX
|
||||||
|
Applying: Add Argon2 algorithm
|
||||||
|
Applying: Error on missing Argon2id parameters
|
||||||
|
Applying: Compile with Argon2id support
|
||||||
|
Applying: Make grub-install work with Argon2
|
||||||
|
Applying: at_keyboard coreboot: force scancodes2+translate
|
||||||
|
Applying: keylayouts: don't print "Unknown key" message
|
||||||
|
Applying: don't print missing prefix errors on the screen
|
||||||
|
Applying: don't print error if module not found
|
||||||
|
Applying: don't print empty error messages
|
||||||
|
Cloning into '/home/leah/Project/lbdev/lbmk/test/tmp/gitclone'...
|
||||||
|
remote: Counting objects: 281482, done.
|
||||||
|
remote: Compressing objects: 100% (33030/33030), done.
|
||||||
|
remote: Total 281482 (delta 248520), reused 281273 (delta 248367)
|
||||||
|
Receiving objects: 100% (281482/281482), 69.48 MiB | 9.55 MiB/s, done.
|
||||||
|
Resolving deltas: 100% (248520/248520), done.
|
||||||
|
HEAD is now at 9f48fb992a filevercmp: fix several unexpected results
|
||||||
|
no u test$ ls src/grub
|
||||||
|
acinclude.m4 BUGS docs INSTALL po TODO
|
||||||
|
asm-tests conf geninit.sh linguas.sh README unicode
|
||||||
|
AUTHORS config.h.in gentpl.py MAINTAINERS SECURITY util
|
||||||
|
autogen.sh configure.ac gnulib Makefile.am tests
|
||||||
|
bootstrap COPYING grub-core Makefile.util.def THANKS
|
||||||
|
bootstrap.conf coreboot.cfg include NEWS themes
|
||||||
|
no u test$ ls src/grub/gnulib
|
||||||
|
build-aux COPYING gnulib-tool.py.TODO posix-modules
|
||||||
|
cfg.mk DEPENDENCIES lib pygnulib
|
||||||
|
ChangeLog doc m4 README
|
||||||
|
check-AC_LIBOBJ etc Makefile STATUS-libposix
|
||||||
|
check-copyright examples modules tests
|
||||||
|
check-module gnulib-tool MODULES.html.sh top
|
||||||
|
config gnulib-tool.py NEWS users.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
A more general audit is in order, overhauling the entire dependencies
|
||||||
|
infrastracture, within lbmk. A lot of the sanity checking is done manually, just
|
||||||
|
by configuring everything sensibly and knowing what pitfalls to avoid.
|
||||||
|
|
||||||
|
Libreboot is essentially no different to apt-get, in so far an lbmk is
|
||||||
|
concerned. The *apk* package manager in Alpine Linux is the closest to lbmk
|
||||||
|
mentality; their package manager is highly advanced, but written with a very
|
||||||
|
minimalist and efficient design. Libreboot's handling of packages and
|
||||||
|
dependencies could be re-modelled
|
||||||
|
using [apk-tools](https://git.alpinelinux.org/apk-tools/) as inspiration.
|
||||||
|
|
Loading…
Reference in New Issue