summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
9 daysadd uuid-devel to fedora41 dependenciesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
9 dayssupport ./mk dependencies fedora reinstallLeah Rowe
dnf reinstall package or dnf install package for reinstall, do this: ./mk dependencies fedora41 re this is an example command the 4th argument prefixes "install" in dnf install a bit hacky but it should work Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysfix missing semicolon in grub nvme patchLeah Rowe
i forgot this when rebasing on the recent uprev Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysbump seabios to rev 1602647f1 (7 November 2024)Leah Rowe
This brings in a *single* change from SeaBIOS, because there has only been one change in the main branch, and it's a bug fix. The change from upstream is as follows: commit 1602647f1be24fe63d11138d802e735c8e674e63 Author: Daniel Khodabakhsh <d.khodabakhsh@gmail.com> Date: Thu Nov 7 18:46:16 2024 -0800 boot: Force display of the boot menu when boot-menu-wait is a negative number Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysBump GRUB revision to 6811f6f09 (26 November 2024)Leah Rowe
Although this is for a stable release revision, namely Libreboot 20241206 revision 8, I've carefully audited the upstream changes and they all seem fine. Several important bug fixes have been imported with this change. Most interestly, GRUB has also added support for TPM2 Key Protectors; we don't use this feature yet, and probably won't for the time being, since TPM is largely security threatre for our purposes anyway. There's no harm including all upstream revisions, up to those ones, since those modules are not yet added in lbmk. Most notably, there are several file system fixes, and minor fixes to the graphics terminal of GRUB. Minor fixes only, in terms of what Libreboot actually uses at present. The full list of imported changes are as follows, relative to the previous GRUB revision, which was b53ec06a1 from 17 June 2024: * 6811f6f09 tpm2_key_protector: Enable build for powerpc_ieee1275 * ff14b89bd ieee1275/tcg2: Add TCG2 driver for ieee1275 PowerPC firmware * 72092a864 ieee1275/tcg2: Refactor grub_ieee1275_tpm_init() * 8c0b5f200 ieee1275/ibmvpm: Move TPM initialization functions to own file * 7344b3c7c ieee1275: Consolidate repeated definitions of IEEE1275_IHANDLE_INVALID * 29d1bd2a9 term/ieee1275/serial: Cast 0 to proper type * 99ee68a01 tss2: Adjust bit fields for big endian targets * 3770a6905 docs: Document TPM2 key protector * f898440cc tests: Add tpm2_key_protector_test * 76a2bcb99 tpm2_key_protector: Add grub-emu support * 135e0bc88 diskfilter: Look up cryptodisk devices first * b35480b48 cryptodisk: Wipe out the cached keys from protectors * 6abf8af3c cryptodisk: Fallback to passphrase * fba3a474e tpm2_key_protector: Implement NV index * 550ada7d6 tpm2_key_protector: Support authorized policy * 5f6a2fd51 util/grub-protect: Add new tool * ad0c52784 cryptodisk: Support key protectors * 48e230c31 key_protector: Add TPM2 Key Protector * 35c9904df tss2: Add TPM2 Software Stack (TSS2) support * 63a78f4b4 tss2: Add TPM2 types and Marshal/Unmarshal functions * 2ad159d9b tss2: Add TPM2 buffer handling functions * 5d260302d key_protector: Add key protectors framework * 3d60732f9 libtasn1: Add the documentation * 99cda6788 asn1_test: Test module for libtasn1 * 504058e82 libtasn1: Compile into asn1 module * 8a0fedef2 asn1_test: Enable the testcase only when GRUB_LONG_MAX is larger than GRUB_INT_MAX * 66cf4cb14 asn1_test: Use the grub-specific functions and types * 0d0913fc6 asn1_test: Print the error messages with grub_printf() * 2e93a8e4b asn1_test: Remove "verbose" and the unnecessary printf() * b7568e335 asn1_test: Return either 0 or 1 to reflect the results * d60a04bae asn1_test: Rename the main functions to the test names * 54e0e19a2 asn1_test: Include asn1_test.h only * 0ad1d4ba8 libtasn1: Fix the potential buffer overrun * 4160ca983 libtasn1: Use grub_divmod64() for division * 8f56e5e5c libtasn1: Adjust the header paths in libtasn1.h * d86df91cb libtasn1: Replace strcat() with _asn1_str_cat() * 32fdfe600 libtasn1: Replace strcat() with strcpy() in _asn1_str_cat() * fa498af7b libtasn1: Disable code not needed in GRUB * 9a26abbc3 libtasn1: Import libtasn1-4.19.0 * c85c2b9f5 posix_wrap: Tweaks in preparation for libtasn1 * 4f6c46091 kern/fs: Honour file->read_hook() in grub_fs_blocklist_read() * 792132c72 docs: Fix incorrect and potentially confusing language and minor formatting * 1763d83f5 docs: Correct GRUB config file name for network boot * 097fd9d9a docs: Correct chainloader UEFI secure boot info * f48e6af11 docs: Correct PXE environment variables descriptions * dd743ba42 loader/multiboot: Do not add modules before successful download * 9a9082b50 grub-mkimage: Add SBAT metadata into ELF note for PowerPC targets * f97d4618a grub-mkimage: Create new ELF note for SBAT * f26b39860 commands/legacycfg: Avoid closing file twice * 337cb2486 nx: Rename GRUB_DL_ALIGN to DL_ALIGN * 31de991de kern/acpi: Fix out of bounds access in grub_acpi_xsdt_find_table() * f5bb766e6 nx: Set the NX compatible flag for the GRUB EFI images * 94649c026 nx: Set page permissions for loaded modules * 09ca66673 nx: Add memory attribute get/set API * 9fb80dd57 modules: Load module sections at page-aligned addresses * 6e2fe134e modules: Don't allocate space for non-allocable sections * 2b79d550f modules: Strip .llvm_addrsig sections and similar * 246c82cda modules: Make .module_license read-only * 616adeb80 i386/memory: Rename PAGE_SIZE to GRUB_PAGE_SIZE and make it global * 95a7bfef5 i386/memory: Rename PAGE_SHIFT to GRUB_PAGE_SHIFT * 1b1061409 i386/msr: Extract and improve MSR support detection code * 929fafdf5 i386/msr: Rename grub_msr_read() and grub_msr_write() * d96cfd7bf i386/msr: Merge rdmsr.h and wrmsr.h into msr.h * 86ec48882 commands/tpm: Skip loopback image measurement * 3808b1a9b net/drivers/efi/efinet: Skip virtual VLAN devices during card enumeration * e5f047be0 efi/console: Properly clear leftover artifacts from the screen * c5ae124e1 kern/riscv/efi/init: Use time register in grub_efi_get_time_ms() * 9c34d56c2 loader/efi/linux: Reset freed pointer * 92bed41bf loader/efi/linux: Reuse len variable * 33cb8aecd lib/x86_64/relocator_asm: Use .quad instead of .long * 77cd623de lib/x86_64/relocator_asm: Fix comment in code * 95145eea5 loader/efi/linux: Update comment * d333e8bb3 util/grub-mkimagexx: Explicitly move modules to __bss_start for MIPS targets * 34b7f3721 include/grub/offsets.h: Set mod_align to 4 on MIPS * ed0651673 gentpl: Put boot/mips/startup_raw.S into beginning of the image * 648f2d16c configure: Add -mno-gpopt option for mips and mipsel targets * f0710d2d8 lib/xzembed/xz_dec_bcj: Silence warning when no BCJ is available * e61157bbd fs/erofs: Replace 64-bit modulo with bitwise operations * 5313fa839 configure: Look for .otf fonts * 33b94f2a9 loader/efi/chainloader: Do not print device path of chainloaded file * ab1e6fc04 docs: Document all GRUB modules * 9537f4403 commands/bli: Fix crash in get_part_uuid() Signed-off-by: Leah Rowe <leah@libreboot.org>
9 dayst480/3050micro: force power off post power failureLeah Rowe
The T480 has no option table, because it lacks nvram, so the default option applies, which seems to be power on after power failure. This is undesirable on a laptop. It's triggered simply when your laptop battery runs out, and once triggered, it couldn't be configured at all. Hard-code this. The documentation will be updated later on after this patch is pushed, telling those users who want to change this behaviour how to modify/remove the patch, if they wish to to do so, because some people may actually want to run a server on the OptiPlex 3050 Micro (or if they're crazy like I am, they will host libreboot.org on a ThinkPad). Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysflashprog: Disable -WerrorLeah Rowe
We haven't seen any build errors, but it seems flashprog sets -Werror on CFLAGS. If you provide WARNERROR=no as a make argument, it avoids -Werror entirely. This is a preventative fix, for over-zealous compilers. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysbump flashprog to revision eb2c041 (14 Nov 2024)Leah Rowe
This brings in several important bug fixes from upstream. With this, the following upstream changes have been imported: * eb2c041 cli_wp: Fix bail-out when multiple chips are detected * e05e334 cli_common: Rename local `optarg' variable * efad610 manibuilder: Include NetBSD (anita tags) in `native' target * 09289fb manibuilder: Replace unmaintained DEFAULT_TAGS list * 1457cc6 manibuilder: Stop build testing oldest, EOL targets * 1faffa5 manibuilder: Fix Ubuntu Noble Numbat (24.04) for amd64 * 61dbe36 udev rules: Use `uaccess' tag instead of `plugdev' group * 63d30a2 install: Install binary into bin/, not sbin/ * 6ce26a7 flashchips: add Winbond W25R512NW / W74M51NW * 612519b ichspi: Add Intel Arrow Lake support * d5a61ef ichspi: Add Intel Lunar Lake support * 5e0d9b0 ichspi: Add Intel Meteor Lake SoC * 0ef2eb8 ichspi: Add Intel Snow Ridge SoC * 42daab1 ichspi: Properly add Emmitsburg PCH * af26008 ich_descriptors_tool: Add missing options for EHL & C620 * 82fe123 ich_descriptors: Hard code number of masters for newer gens * 157b818 ich_descriptors: Guard MCH strap handling by chipset version * db878fb ich_descriptors: Drop chipset detection based on `freq_read` * b3cc2c6 ich_descriptors: Unify pretty printing of PCH100+ masters * 8e4151d chipset_enable: Remove hidden-spidev workaround for Elkhart Lake * 6d72efa chipset_enable: Remove hidden-spidev workaround for all 14nm PCHs * 092a699 chipset_enable: Remove hidden-spidev workaround for TGP+ * 5bbd324 chipset_enable: Add missing PCI ID for Intel PCH H410 * a088475 chipset_enable: Factor PCH100 hidden-spidev workaround out * 5eb7a58 Drop 1s delay before automatic verification * 7427569 libflashprog: Run programmer_shutdown() on failed setup * 5a9d6ea chipset_enable: Fix memory leaks introduced with AMD SPI100 * e149fbe Only try to check erase opcodes for SPI25 chips * 07ebc68 Avoid NULL deref in check_block_eraser() * 2405310 chipset_enable: Mark Intel QM87 as DEP * 9897063 flashchips: Allow volatile register writes for W25Q128.V * c972aed flashchips: Configure WP for MX25L25635F/45G * 8f7122c cli: Add new write-protect CLI * eed122d layout: Implement flashprog_layout_get_region_range() * 1f693db cli: Add new `config' CLI for status/config registers * 85c2cf8 cli: Implement "command" option parser * 24c0977 cli: Add print function for generic CLI options * b82aadc cli: Move some declarations into `cli.h` * a705043 cli: Add a new CLI wrapper * d39c7d6 cli: Extract basic CLI init into cli_common * df6ce9f cli: Extract log argument parsing into cli_common * 0da839b cli: Extract layout argument processing * d91822a cli: Extract layout argument parsing into cli_common * e7899a9 cli: Move all long-option keys into cli.h * 34e783a cli: Extract flash argument parsing into cli_common * e68b08b cli_classic: Rewrite programmer argument parsing * 6898f5b spi25_statusreg: Prefer volatile status register writes * 55e7884 Introduce FLASHPROG_FLAG_NON_VOLATILE_WRSR * fbba454 Install udev rules * 768cfc4 flashchips: Add GigaDevice GD25LR512ME Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysreplace liblz4-tool with lz4 and liblz4-devLeah Rowe
In Debian dependencies files. These are available in Debian Stable, but liblz4-tool is a transitional package referring to lz4; liblz4-tool transition package is unavailable in Debian sid, so remove it from the dependencies files. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 dayslib.sh dependencies: support --reinstall argumentLeah Rowe
./mk dependencies debian --reinstall Add --reinstall and it'll do: apt-get install --reinstall This can be useful when updating from a stable release to a testing release. The variable, "reinstall" can be configured for other distros, but it's currently only configured for Debian-based distros. Also, it can be anything. For example, you could add -y; however, a 4th argument will not be accepted. For example, you cannot do: ./mk dependencies debian --reinstall -y If you do this, it'll only see --reinstall; similarly, if you did this command: ./mk dependencies debian -y --reinstall then -y would be passed, but not --reinstall. This is an intentional design decision, in case you accidentally pasted or subshelled something that outputted something undesirable, to prevent possible abuse. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysmove xbmkpath to XBMK_CACHE/Leah Rowe
When doing ./mk release, the build system would create symlinks inside xbmkpath/ relative to the current work tree, which will differ from what's in PATH. Since XBMK_CACHE is already set globally, from the main work tree and the release-build work tree, that means we can know reliably that PATH is always correct if we put xbmkpath/ inside XBMK_CACHE. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysRevert "Remove legacy update/vendor commands"Leah Rowe
This reverts commit 781320514623653077cda2d910b9baf150949bd1. I'm doing changes for 20241206 rev8. It was a mistake to remove these; they will be removed again, after rev8. The documentation standardised on ./mk a while ago now, and it's almost time to remove these commands. However, anyone using the old commands ought to be able to, up to and including any revision of the Libreboot 20241206 release. It is my intention that these legacy commands finally be removed for the next testing release, as part of a much wider build system audit that I'm doing between now and then. (Libreboot Build System Audit 7 is underway, and several of these early audit7 changes are going on 20241206 rev8; after that, I will create a branch named 20241206_branch off of rev8, and anything in master from then on will contain much wilder changes, with more conservative changes in 20241206_branch) Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysFix U-Boot build issue with Swig 4.3.0Leah Rowe
Tested on Debian Sid, as of 30 December 2024, which uses Swig 4.3.0. Context here: commit a63456b9191fae2fe49f4b121e025792022e3950 Author: Markus Volk <f_l_k@t-online.de> Date: Wed Oct 30 06:07:16 2024 +0100 scripts/dtc/pylibfdt/libfdt.i_shipped: Use SWIG_AppendOutput This patch from U-Boot upstream has been backported to the release revision used by Libreboot. Swig has, since 4.3.0, changed the language-specific AppendOutput functions, but the helper macro SWIG_AppendOutput is identical; therefore, upstream switched to this function. The benefit of this fix is that since the newly used macro is also the same on older Swig versions, and behaves the same, this shouldn't fix building on older Swig versions. For reference, the initial Libreboot 20241206 release, and revisions of it before revision 8, was built on Debian 12 which uses Swig 4.1.0. The rev8 release will still be compiled on Debian 12, but with this change, it should also compile on Debian Sid, and bleeding edge distros like Arch Linux. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daysuse command -v instead of whichLeah Rowe
which is a non-standard command, whereas command is part of posix Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daystrees: remove unnecessary subshellLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daystrees: only symlink host gcc/gnat to build xgccLeah Rowe
In general, we don't want to mess with the hostcc, unless we have to. To avoid other breakage, clear what we did after crossgcc has compiled. This is a follow-up to the previous patches, matching gcc to gnat versions and vice versa, when compiling crossgcc. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daystrees: correction on check_gnu_pathLeah Rowe
i intend for this function to work generically, matching gnat to gcc or gcc to gnat, but there was a hangover from the previous code where it specifically assumed we were matching gnat this bug manifested when i tested with gnat being v13 and gcc being v14 in path, where gcc-13 was also available in path. Signed-off-by: Leah Rowe <leah@libreboot.org>
9 daystrees: match gcc/gnat versions both waysLeah Rowe
on debian trixie/sid after updating from stable, sometimes gcc 13 and gnat 13 are both available, but gcc resolves to gcc-14 and gnat-14 isn't available. even when gnat-14 and gcc-14 are available, gnat will still either resolve to gnat-13, or nothing at all. in cases where gnat-14 is unavailable, but gcc and gnat 13 are both available, we should match gcc to gnat. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 daysMerge path.sh into script/treesLeah Rowe
The code is simple enough now that I'm happy for it to just be part of the main script. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 dayspath.sh: Further cleanupLeah Rowe
Remove all symlinks each time, to ensure that no stragglers are left behind, since they are being re-generated each time anyway. The code for determining version numbers has now been unified under gnu_setver() Signed-off-by: Leah Rowe <leah@libreboot.org>
10 dayspath.sh: More thorough gcc/gnat version checkLeah Rowe
We were checking the shorthand version number, but the precise version numbers need to match. Also: when we searched $PATH/gnat-$gccver, we assumed that the full version would then match, without checking it, so now it is checked precisely. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 dayspath.sh: minor cleanupLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
10 dayspath.sh: remove unnecessary shebangLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
10 daysFix globbing issue in lbmkLeah Rowe
When doing e.g. $@ we should use double quotes to prevent globbing. Thanks go to XRevan86 for pointing this out. Signed-off-by: Leah Rowe <leah@libreboot.org>
10 daysremove auto-confirm on distro dependenciesLeah Rowe
because if it says yes to everything, and the package manager would otherwise ask whether you want to give it your first born son, you are therefore agreeing to it. so remove -y for safety Signed-off-by: Leah Rowe <leah@libreboot.org>
10 daysMitigate Debian Trixie/Sid GCC/GNAT version mismatchLeah Rowe
When I tested Debian Trixie, and Debian Sid, I saw that GCC in PATH pointed to gcc-14, but gnat in path pointed to GNAT-13, even if you manually install gnat-14. GNAT 14 was marked experimental, but GCC 14 was marked for use, in the apt repositories. So this patch doesn't address the mismatch when doing e.g. apt-get install gcc gnat I will address the actual package dependency in a follow-up patch, on the Debian dependencies config. Signed-off-by: Leah Rowe <leah@libreboot.org>
11 dayst480/3050micro: disable hyperthreadingLeah Rowe
Hyperthreading is a risk factor for spectre/meltdown and other attacks. Disabling it is a best practise. Those who need it can always turn this option back on. Otherwise, disabling it by default is a simply courtesy to the average user, in the interest of security. Signed-off-by: Leah Rowe <leah@libreboot.org>
11 dayst480/t480s: Disable TPM2 to mitigate SeaBIOS lagLeah Rowe
SeaBIOS was lagging a lot, on startup and when executing almost any payload, especially when doing anything in the ESC menu. I set the debug level to *21*, and thoroughly analysed the logs. I found entries such as this: Checking for bootsplash WARNING - Timeout at wait_reg8:81! TCGBIOS: Return value from sending TPM2_CC_StirRandom = 0x00000000 WARNING - Timeout at wait_reg8:81! TCGBIOS: Return value from sending TPM2_CC_GetRandom = 0x00000000 WARNING - Timeout at wait_reg8:81! TCGBIOS: Return value from sending TPM2_CC_HierarchyChangeAuth = 0x00000000 WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc16e WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc1c5 WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc211 WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc25d WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc2a9 WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc2f5 WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc341 WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc38d WARNING - Timeout at wait_reg8:81! TCGBIOS: LASA = 0x7a9fc000, next entry = 0x7a9fc3d9 Searching bootorder for: HALT Mapping hd drive 0x000f49e0 to 0 I'm not quite certain what the problem is, but disabling TPM2 made the problem go away; SeaBIOS is snappy again. TPM is security threatre anyway. Signed-off-by: Leah Rowe <leah@libreboot.org>
11 daysrom.sh: Name pico directory serprog_picoLeah Rowe
Previously serprog_rp2040, but we now also support the RP2530 boards. Therefore, serprog_pico is a nice generic name. The directory on release archives will now be serprog_pico instead of serprog_rp2040; it will contain serprog images for both RP2040 and RP2530 devices. Signed-off-by: Leah Rowe <leah@libreboot.org>
12 daysadd 2024 to Riku's copyright header on rom.shLeah Rowe
he forgot to do this in the recently merged pico2 support. i'm doing it for him as a matter of courtesy. Signed-off-by: Leah Rowe <leah@libreboot.org>
12 daysMerge pull request 'rp2530' (#258) from Riku_V/lbmk:rp2530 into masterLeah Rowe
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/258
12 dayspico-sdk: update to 2.1.0Riku Viitanen
this brings support for a new microcontroller platform rp2530. total number of pico boards supported now: 97 TEST: built them all Tested-by: Riku Viitanen <riku.viitanen@protonmail.com> Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
12 dayspico-serprog: enable building for multiple pico chipsRiku Viitanen
rp2040 and rp2530 platforms can't share a cmake build directory. we could just delete the build directory after every compilation, but that would be really wasteful (every tool would need to be recomiled every time. instead create new build directories as new plaforms are found and symlink them to the point where the build directory used to be. to find out which platform we're compiling for, we crudely parse the board headers file. there surely would be better ways to do this, but this hack works with all the boards in pico-sdk 2.1.0. Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
13 daysadd spdx headers to dependencies configsLeah Rowe
these used to be separate scripts under gpl 3+, so it makes sense to clarify the licensing situation Signed-off-by: Leah Rowe <leah@libreboot.org>
13 daysdependencies/debian: fix debian sidLeah Rowe
change python3-distutils to python3-distutils-extra the latter is still available in debian sid, but not the former. however, installing this should still provide the additional files required. with this, the debian script is now compatible with both debian sid and debian stable(bookworm, presently). Signed-off-by: Leah Rowe <leah@libreboot.org>
13 daysadd spdx headers to various config filesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
13 daysgit.sh: don't initialise livepull globallyLeah Rowe
set this variable in the tmpclone function. otherwise, certain submodules might always download every time, when handling multiple projects. Signed-off-by: Leah Rowe <leah@libreboot.org>
13 daysvendor.sh: Print useful message on ./mk injectLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
13 daysvendor.sh: Handle FSP insertion post-releaseLeah Rowe
The Libreboot 20241206 release provided FSP pre-assembled and inserted into the ROM images; the only file inserted by vendor.sh was the Intel ME. Direct distribution of an unmodified FSP image is permitted by Intel, provided that the license notice is given among other requirements. Due to how coreboot works, it must split up the FSP into subcomponents, and adjust certain pointers within the -M component (for raminit). Such build-time modifications are perfectly fine in a coreboot context, where it is expected that you are building from source. The end result is simply what you use. In a distribution such as Libreboot, where we provide pre-built images, this becomes problematic. It's a technicality of the license, and it seems that Intel themselves probably intended for Libreboot to use the FSP this way anyway, since it is they who seem to be the author of SplitFspBin.py, which is the utility that coreboot uses for splitting up the FSP image. Due to the technicality of the licensing, the FSP shall now be scrubbed from releases, and re-inserted. Coreboot was inserting the -S component with LZ4 compression, which is bad news for ./mk inject beacuse the act of compression is currently not reproducible. Therefore, coreboot has been modified not to compress this section, and the inject command doesn't compress it either. This means that the S file is using about 180KB in flash, instead of about 140KB. This is totally OK. The _fsp targets are retained, but set to release=n, because these targets *still* don't scrub fsp.bin; if released, they would include fsp files, so they've been set to release=n. These can be used on older Libreboot release archives, for compatibility. The new ROM images released for the affected machines are: t480_vfsp_16mb t480s_vfsp_16mb dell3050micro_vfsp_16mb Note the use of _vfsp instead of _fsp. These images are released, unlike _fsp, and they lack fspm/fsps in the image. FSP S/M must be inserted using ./mk inject. This has been tested and confirmed to boot just fine. The 20241206 images will be re-compiled and re-uploaded with this and other recent changes, to make Libreboot 20241206 rev8. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-25Remove legacy update/vendor commandsLeah Rowe
We only use ./mk now. ./build still exists for now. This will be removed in a future revision, when the trees script is removed and merged with the main script. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-24lbmk: remove use of deprecated ./vendor commandLeah Rowe
use ./mk instead, because in a future change to lbmk, only ./mk will be used and the other commands will be removed. with this change, the ./vendor, ./build and ./update commands are no longer used. these commands still work, for backwards compatibility, but they are deprecated. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-24vendor.sh: Safer exit when vendorfiles not neededLeah Rowe
When vendor files were not needed on a given board, the script would directly exit. This is bad, because the inject functions are called directly from the main script, which means the parent instance of lbmk. This means that the lock file and temporary files were not being removed on exit. On a subsequent run, this would cause the error stating that a lock file is present, which would cause further error, making the user believe something is broken in lbmk. Modify the behaviour accordingly; exits are now returns, and these are handled in the calling functions, in such a way that a proper exit occurs, whereby temporary files and the lock file are deleted. For context, please read the main "build" script where it calls vendor_inject and vendor_download. At the end of that script, it calls tmp_cleanup, which removes the TMPDIR that was created, and the lock file. In lbmk, the TMPDIR is not /tmp, but rather a subdirectory under /tmp, so that further calls to mktemp create everything under one single temporary directory, which lbmk automatically removes on exit. Therefore, this patch also avoids leaving temporary files laying around on the disk. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-24data/deguard: Remove unused patchLeah Rowe
The appdir.patch file was used on the older deguard version, prior to Mate Kukri's rewrite. This patch is no longer required, and no longer used, so it can be removed safely from lbmk. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-24lib.sh: Safer exit from ./mk dependenciesLeah Rowe
The exit was dependent upon install_packages returning zero status, which it always would in practise, due to its design, but this exit must always be observed, so the code has been modified to honour this design. A direct exit violates lbmk's design in most instances, where a temporary directory and lock file has already been created; at this stage, no such act was performed, so a direct exit is perfectly acceptable. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-22remove geteltorito and mtools from lbmkLeah Rowe
we needed these for extracting intel vga roms from lenovoo updates, for t480, very briefly. about an hour after i pushed that patch, mate kukri fixed libgfxinit and then i removed the vgarom integration because it wasn't needed anymore. however, i forgot to remove geteltorito/mtools from dependencies. some distros like fedora were problematic about it. the best thing about bugs is when you don't have to fix them. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-18rom.sh: support grub-first setupsLeah Rowe
in this setup, seabios is never the default payload, grub is, but only if grub is enabled. set this in target.cfg: payload_grubsea="y" if payload_grub isn't enabled, this is auto-set to n ditto if initmode=normal NOTE: if flashing libgfx setups, you should make sure that you're not booting with a graphics card, only intel graphics. this setting will intentionally not be documented, because it's not recommended, but is being implemented for testing purposes (and i implemented it for some guy who i think is cool). i'll probably also use this myself, since i already do grub-only setups on all my own machines. seagrub is the default on x86 because of past instabilities with grub. to mitigate in case of future issues, since seabios is always stable, we reduce the chance of bricks. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-18vendor.sh: delete old tb.bin first, just in case20241206rev7Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-18vendor.sh: make TBFW pad size configurableLeah Rowe
we encountered 1MB flash so far, but we may encounter other sizes on other machines when added to libreboot later on Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-18T480/T480S: Support fetching ThunderBolt firmwareLeah Rowe
Though not used in coreboot builds, and not injected into the builds in any way, these files are now created seperately when handling T480/T480s vendor files: vendorfiles/t480/tb.bin vendorfiles/t480s/tb.bin These are created by extracting Lenovo's ThunderBolt firmware from update files. The updated firmware fixes a bug; older firmware enabled debug commands that wrote logs to the TB controller's own flash IC, and it'd get full up with logs, bricking the controller. If you've already been screwed by this, you must flash externally, using a padded firmware from Lenovo's updates. Lenovo's own updater requires creating a boot CD or booting Windows. This patch in lbmk auto-downloads just the firmware, and you can flash it externally. You could simply do this as a matter of course, when installing Libreboot. You are recommended to update the Lenovo UEFI/EC firmwares first, before installing Libreboot; please look at the Libreboot documentation to know exactly which versions. Then dump the ThunderBolt firmware first, to be sure, and then you can flash these files. Flashing these updates will prevent the bug described here: https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t480-type-20l5-20l6/20l5/solutions/ht508988 You can download Lenovo's installers for various ThinkPad models there, including T480s/T480s. It is these downloads that this lbmk patch uses, to extract those files directly. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-17also de-rainbow the u-boot menu20241206rev6Leah Rowe
boring is good Signed-off-by: Leah Rowe <leah@libreboot.org>