summaryrefslogtreecommitdiff
path: root/config/git/grub
AgeCommit message (Collapse)Author
7 dayslib.sh: more unified config handlingLeah Rowe
replace it with logic that simply uses "." to load files directly. for this, "vcfg" is added as a variable in coreboot target.cfg files, referring to a directory in config/vendor/ containing a file named pkg.cfg, and this file then contains the same variables as the erstwhile config/vendor/sources config/git files are now directories, also containing pkg.cfg files each with the same variables as before, such as repository link and commit hash this change results in a noticeable reduction in code complexity within the build system. unified reading of config files: new function setcfg() added to lib.sh setcfg checks if a config exists. if a 2nd argument is passed, it is used as a return value for eval, otherwise a string calling err is passed. setcfg output is passed through eval, to set strings based on config; eval must be used, so that the variables are set within the same scope, otherwise they'd be set within setcfg which could lead to some whacky results. there's still a bit more more to do, but this single change results in a substantial reduction in code complexity. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-02make GRUB multi-tree and re-add xhci patchesLeah Rowe
Re-add xHCI only on haswell and broadwell machines, where they are needed. Otherwise, keep the same GRUB code. The xHCI patches were removed because they caused issues on Sandybridge-based Dell Latitude laptops. See: https://codeberg.org/libreboot/lbmk/issues/216 The issue was not reported elsewhere, including on the Haswell/Broadwell hardware where they are needed, but the build system could only build one version of GRUB. The older machines do not need xHCI patches, because they either do not have xHCI patches, or work (in GRUB) because they're in EHCI mode when running the payload. So, the problem is that we need the xHCI patches for GRUB on Haswell/Broadwell hardware, but the patches break Sandybridge hardware, and we only had the one build of GRUB. To mitigate this problem, the build system now supports building multiple revisions of GRUB, with different patches, and each given coreboot target can say which GRUB tree to use by setting this in target.cfg: grubtree="xhci" In the above example, the "xhci" tree would be used. Some generic GRUB config has been moved to config/data/grub/ and config/grub/ now looks like config/coreboot/ - also, the grub.cfg file (named "payload" in each tree) is copied to the GRUB source tree as ".config", then added to GRUB's memdisk in the same way, as grub.cfg. Several other design changes had to be made because of this: * grub.cfg in memdisk no longer automatically jumps to one in CBFS, but now shows a menuentry for it if available * Certain commands in script/trees are disabled for GRUB, such as *config make commands. * gnulib is now defined in config/submodule/grub/, instead of config/git/grub - and this mitigates an existing bug where downloading gnulib first would make grub no longer possible to download in lbmk. The coreboot option CONFIG_FINALIZE_USB_ROUTE_XHCI has been re-enabled on: Dell OptiPlex 9020 MT, Dell OptiPlex 9020 SFF, Lenovo ThinkPad T440p and Lenovo ThinkPad W541 - now USB should work again in GRUB. The GRUB payload has been re-enabled on HP EliteBook 820 G2. This change will enable per-board GRUB optimisation in the future. For example, we hardcode what partitions and LVMs GRUB scans because * is slow on ICH7-based machines, due to GRUB's design. On other machines, * is reasonably fast, for automatically enumerating the list of devices for boot. Use of * (and other wildcards) could enable our GRUB payload to automatically boot more distros, with minimal fuss. This can be done at a later date, in subsequent revisions. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-04-26GRUB: bump to today's latest revisionLeah Rowe
GRUB has not pushed many patches to master since the recent 2.12 release, but there are a number of interesting fixes. libreboot is doing a release soon. bump to latest grub revision. Some of the new patches in GRUB are interesting: XFS fixes: "fs/xfs: Handle non-continuous data blocks in directory extents" 68dd65cfdaad08b1f8ec01b84949b0bf88bc0d8c Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2254370 Apparently, XFS could not boot in some reports, though this was likely with BIOS or UEFI GRUB; no such reports were made to libreboot "gfxmenu/view: Resolve false grub_errno disrupting boot process" 39c927df66c7ca62d97905d1385054ac9ce67209 "util/grub-fstest: Add a new command zfs-bootfs" 28c4405208cfb6e2cea737f6cbaf17e631bac6cd The gnulib revision does not need to be updated at this time. Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-12-31Bump GRUB to 2.12 releaseLeah Rowe
Actually, it's 2 commits after 2.12, because there was a patch added afterwards, fixing a build issue on Gentoo. These changes are present in GRUB 2.12, relative to the revision that we previously used on lbmk: * b835601c7 build: Include grub-core/extra_deps.lst in dist * 8961305b4 Bump version to 2.13 * 5ca9db22e Release 2.12 * 477a0dbd5 efi: Add support for reproducible builds * dcc1af5d6 efi: Generate stack protector canary at build time if urandom is available * e424e945c efi: Initialize canary to non-zero value * 7c8ae7dcb gfxmenu/gui_image: Fix double free of bitmap * 63fc253fc commands/acpi: Fix calculation of ACPI tables addresses when processing RSDT and XSDT * f20123072 libnvpair: Support prefixed nvlist symbol names as found on NetBSD * a13df3d15 bootstrap: Don't check gettext version * 6d2aa7ee0 kern/mm: Use %x and cast for displaying sizeof() * b3d49a697 configure: Add RPATH for freetype on NetBSD * 52dbf66ea configure: Add *BSD font paths * 2d6a89980 autogen: Accept python3.10 as a python alternative * 3d4cb5a43 build: Rename HAVE_LIBZFS to USE_LIBZFS * e4dbe5cfa gnulib: Tolerate always_inline attribute being ignored * 31e47cfe2 util/editenv: Don't use %m formatter * f5905f656 osdep/bsd/hostdisk: Fix NetBSD compilation * cb1824a87 osdep/generic/blocklist: Fix compilation * 2f3faf02c disk/diskfilter: Remove unused variable * 3815acc57 build: Tolerate unused-but-set in generated lexer/bison files * c129e44e7 loader/i386/bsdXX: Fix loading after unaligned module * 89fbe0cac grub-core/Makefile.am: Make path to extra_deps.lst relative to $(top_srcdir)/grub-core * 353beb80c util/grub-install: Move platdir path canonicalization after files were copied to grubdir * f18a899ab util/grub-mkstandalone: Ensure deterministic tar file creation by sorting contents * ed74bc376 util/grub-mkstandalone: Ensure stable timestamps for generated images * 069cc46c9 net/http: Fix gcc-13 errors relating to type signedness * e7a831963 templates: Reinstate unused version comparison functions with warning * 3f9eace2d util/grub-install: Delay copying files to {grubdir,platdir} after install_device was validated * e60015f57 efi: Set shim_lock_enabled even if validation is disabled * e35683317 docs: Improve bli module documentation * 57059ccb6 bli: Add explicit dependency on the part_gpt module * 154dcb1ae build: Allow explicit module dependencies * 17c68472d kern/ieee1275/init/ppc64: Display upper_mem_limit when debugging * 5f8e091b6 kern/ieee1275/init/ppc64: Fix a comment * dc569b077 kern/ieee1275/ieee1275: Display successful memory claims when debugging * 0ac3d938a loader/powerpc/ieee1275: Use new allocation function for kernel and initrd * 2a9a8518e kern/ieee1275/cmain/ppc64: Introduce flags to identify KVM and PowerVM * 679691a13 kern/ieee1275/init/ppc64: Rename regions_claim() to grub_regions_claim() * d49e86db2 kern/ieee1275/init/ppc64: Add support for alignment requirements * fe5d5e857 kern/ieee1275/init/ppc64: Return allocated address using context * ea2c93484 kern/ieee1275/init/ppc64: Decide by request whether to initialize region * 0bb59fa9a kern/ieee1275/init/ppc64: Introduce a request for regions_claim() * aa7c13226 fs/xfs: Add large extent counters incompat feature support Most notable in the above log, that are beneficial to Libreboot users, are: aa7c13226 which improves XFS support (large extents), which is default now on many setups. ed74bc376 which introduces more stable timestamp generation when using grub-mkstandalone. this is what lbmk uses to generate grub.elf, whereas grub previously only implemented this fix on mkimage which we don't use f18a899ab which ensures deterministic (reproducible) tar file creation by sorting contents (file names / directories). this is done by sorting the entries f5905f656 which improves grub build system reliability on netbsd and openbsd systems - useful for us because an ambition of lbmk is to port the build system to run on bsd systems, and we will still want grub - several other of the changes here are beneficial for BSD aswell, all or most of them by Vladimir Serbinenko Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-11-09Bump GRUB revision to 8 November 2023 revisionLeah Rowe
Now the revision is: 64e3cee72ab8f5876abfebb263b5e6cf7c4a9a4e The old revision was: e58b870ff926415e23fc386af41ff81b2f588763 With this new revision update, the following patches have been imported from the upstream GRUB project: * 64e3cee72 gpt: Add compile time asserts for guid and gpt_partentry sizes * 7de6fe963 types: Split aligned and packed guids * 5fc985bfd gpt_partition: Mark grub_gpt_partentry as having natural alignment * 7ad30299d efi: Deduplicate configuration table search function * c6cf807fc lsefi: Add missing static qualifier * a964e359b types: Fix typo * 3f79e3b15 util/grub-mount: Check file path sanity * 85e40b36e configure: Make the DJVU_FONT_SOURCE configurable with --with-dejavufont=FILE * 2d6631d2a configure: Make the Unifont FONT_SOURCE configurable with --with-unifont=FILE * 07318ee7e fs/xfs: Fix XFS directory extent parsing * ad7fb8e2e fs/xfs: Incorrect short form directory data boundary check * 4e10213de Revert "zfsinfo: Correct a check for error allocating memory" * 4266fd2bb disk/i386/pc/biosdisk: Read up to 63 sectors in LBA mode * cab04dcda kern/i386/pc/init: Flush cache only on VIA C3 and earlier * 3c7e84257 fs/btrfs: Zero file data not backed by extents * 4bcf6f747 kern/ieee1275/init: Restrict high memory in presence of fadump on ppc64 * cf58eca2a tests/util/grub-shell: Enable RNG device to better test stack smashing * c3bdf263f kern/efi/init: Disable stack smashing protection on grub_efi_init() * 95963d97f disk/cryptodisk: Add support for LUKS2 in (proc)/luks_script * 016f14257 disk/cryptodisk: Optimize luks_script_get() * f7a663c00 term/serial: Ensure proper NULL termination after grub_strncpy() * a19e47ca4 commands/efi/lsefisystab: Print the UEFI specification revision in human readable form Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-20config/git: add more backup reposLeah Rowe
the grub backup was the same gnu server i decided to host grub on codeberg, as backup (gnu links as primary is ok) Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-10-07bump grub revisionLeah Rowe
most of the changes since last revision aren't very useful to us; most of them pertain to fs/ntfs, but there is one that is interesting: 48f569c78a496d3e11a4605b0999bc34fa5bc977 kern/acpi: Skip NULL entries in RSDT and XSDT Signed-off-by: Leah Rowe <leah@libreboot.org>
2023-09-25update/repos: concatenate multiple revision filesLeah Rowe
With this change, it's still possible to have a single file at config/git/revisions, but this has been scrapped. Instead, multiple files now exist under config/git/ with the same modules declared, but the files are separated logically. List of files under config/git: * bios_extract * biosutilities * coreboot * flashrom * grub (gnulib also defined here) * me_cleaner * memtest86plus * seabios * serprog (multiple projects defined) * u-boot * uefitool The rationale behind this change is simple: in the future, we will stop relying on build systems within imported projects for the import of git submodules. Instead, we will handle them directly in lbmk. Additionally, a Linux payload is planned for Libreboot, made easier by the recent audit (script handle/make/config makes it easy to integrate Linux, and handle cross-compilers for userland utilities); a "linux" file under config/git/ could also define rules for each project besides linux, such as musl libc, busybox and other utilities. Signed-off-by: Leah Rowe <leah@libreboot.org>