Commit graph

149 commits

Author SHA1 Message Date
Andrius Štikonas
e6ed60cec4 Update to mes-0.26.1. 2024-06-25 08:58:12 +01:00
Googulator
3116214cc6
Band-aid fix for #472 - get openssl from archive.org
While this works for now, it's not a sustainable solution.
Supporting a simpler SSL library (small enough to bundle into srcfs) such as BearSSL or WolfSSL in the first build of curl would be preferable.
2024-06-25 03:18:39 +02:00
fosslinux
8291a9153d Clarify some descriptions 2024-05-28 21:57:36 +10:00
fosslinux
67d92a50f3 Allow the use of configurator under builder-hex0 2024-05-28 21:57:36 +10:00
fosslinux
e1077cbed3 Add interactive "configurator"
This is a more UX-friendly glorified bootstrap.cfg editor.
Somewhat inspired by kconfig.
2024-05-28 21:57:36 +10:00
fosslinux
e2d4782cc2 Reclaim 5MB to the Fiwix rootfs from kexec
We need just a couple more MB for configurator to be added!
The tolerances are *very* tight now...
2024-05-28 21:57:36 +10:00
fosslinux
7937797ea5 Bzip2 compression in Linux initramfs/kernel
There isn't really any reason to use gzip instead of bzip2 for the Linux
initramfs/kernel, since we have it!

Saves a few MB (~13MB as far as I can tell)
2024-05-28 21:57:36 +10:00
fosslinux
c30ace4d4c Update stage0-posix modules 2024-05-26 21:06:41 +10:00
Googulator
c37486d428
Fix spurious error message for missing prebuilts in --repo mode 2024-05-22 01:12:37 +02:00
Googulator
b02c35443f
Stop src_get overrides from propagating between builds
Because src_get was never unset at the end of a build, it would propagate to subsequent builds until it would be either overridden again, or cleared by a new bash process starting (either due to a jump step or a new version of bash being built).

Thus, kexec-linux's override of src_get to a no-op would stay in effect in chroot mode until musl-1.2.4 phase2's override restored src_get's functionality. This override is actually obsolete, since musl-1.2.4's source code is now preserved across the Linux kexec via a different mechanism - but removing it mysteriously broke downloading bash-5.2.15 due to kexec-linux's override still being in effect.
2024-05-22 00:21:40 +02:00
fosslinux
6302bb6d20 Fix early-preseed (and environment variables generally) 2024-05-10 12:18:24 +10:00
Andrius Štikonas
f5eb51c2cc
Merge pull request #466 from stikonas/fixes
Fix patch makefile and unfuzzy some early patches.
2024-05-05 22:54:48 +01:00
Andrius Štikonas
6ade9e0e8a Fix patch makefile and unfuzzy some early patches. 2024-05-05 10:09:59 +01:00
Andrius Štikonas
2d5a85e770 Update to nss 3.99. 2024-04-28 13:29:00 +01:00
Andrius Štikonas
c22e3dac66 Fix a typo in CFLAGS variable name. 2024-04-28 00:38:38 +01:00
Andrius Štikonas
0e6133eed2
Merge pull request #464 from Googulator/grub-reproducibility
Drop non-reproducible manpage from Grub package
2024-04-20 15:19:09 +01:00
Gábor Stefanik
8c67b9ee9c Drop non-reproducible manpage from Grub package
This embeds the type of the building system's firmware at build time,
causing different checksums on UEFI vs BIOS machines.

Fixes #463
2024-04-19 00:19:29 +02:00
Andrius Štikonas
71253f7f8c Remove patch that is no longer needed.
This fixed some issues with weak symbols but now tcc is properly patched.
2024-04-18 21:28:39 +01:00
Gábor Stefanik
c73d8c9dc1 Add extension mechanism to execute .sh files dropped in /steps/after
These are executed at the end of the bootstrap, if /steps/after exists.
In interactive mode, they run before the interactive prompt is displayed.
2024-04-16 20:53:52 +02:00
Gábor Stefanik
7f08661b6c Fix a missed amd64 checksum 2024-04-16 10:16:51 +02:00
Gábor Stefanik
aa3d36b934 Update checksums for x86, amd64 & riscv64
Also, add missing non-x86 checksums for simple-patch.
2024-04-16 00:24:44 +02:00
Gábor Stefanik
e08f655cd6 Rebuild pregenerated files in nyacc 2024-04-15 22:11:44 +02:00
Gábor Stefanik
c0494d9af8 Fix build of bash with mes-0.26
Since rename.c is now included in meslibc, we need -DHAVE_RENAME.
2024-04-15 22:11:44 +02:00
Gábor Stefanik
70fdbebd9c Upgrade mes to 0.26
This can successfully build a working tcc-mes, but then fails
creating unified-libc.c for subsequent tcc bootstrapping.
2024-04-15 22:11:39 +02:00
Andrius Štikonas
281f6e44d9
Merge pull request #455 from Googulator/linux-openela
Upgrade kernel to 4.14.341-openela
2024-04-15 19:41:59 +01:00
Googulator
a5a689c954
Merge pull request #457 from fosslinux/byacc
Move heirloom lex and flex after musl, replace heirloom yacc with byacc
2024-04-15 10:17:13 +02:00
Gábor Stefanik
0c718aeece Update checksums for heirloom yacc -> byacc change 2024-04-15 02:17:59 +02:00
Gábor Stefanik
25443468ee Add files.bootstrapping.world mirrors for all Savannah snapshots 2024-04-15 02:11:05 +02:00
Gábor Stefanik
e2a1df94a5 Add licensing information to byacc's makefile
This makefile was included in the byacc distribution as Makefile.old
It was slightly updated to fit our needs.

Berkeley yacc itself is in the public domain, but SPDX/REUSE provides
no good way to represent this. In keeping with that spirit, I chose
CC0 as the license for my modifications, which SPDX can represent.
2024-04-15 01:43:20 +02:00
Gábor Stefanik
02fb689ce1 Move heirloom lex and flex after musl, replace heirloom yacc with byacc
This way, heirloom-devtools is only linked to a libc with a CDDL-compatible
license, making it fully redistributable. Heirloom yacc doesn't work properly
with musl libc, but luckily byacc can do its job just fine, so we only need
heirloom lex now.

Thanks to the more complete libc, and bash being available, heirloom's
bootstrap is significantly simplified.
2024-04-15 01:22:50 +02:00
Gábor Stefanik
6567973a04 Make byacc actually work when compiled against meslibc
This replaces the previous sed hackery with a proper patch, and removes
a few more libc functions that meslibc is missing.
The binary name is changed to "byacc" so it doesn't get overwritten by
heirloom yacc.

The bsearch() replacement code comes from an earlier version of byacc.
2024-04-14 21:14:04 +02:00
Googulator
5ae504cb67
Merge pull request #453 from Googulator/openssl-upgrade
Upgrade OpenSSL to 3.0.13
2024-04-14 06:46:37 +02:00
Gábor Stefanik
3970ee7d1a Add byacc parser generator
This is meant to replace heirloom yacc for compiling pre-musl parsers.
Unlike heirloom yacc, it's in the public domain, and can be linked with
meslibc without licensing concerns.
2024-04-14 05:51:30 +02:00
Gábor Stefanik
c75d609cf7 Upgrade kernel to 4.14.341-openela
This is a continuation of the 4.14 series by the Open Enterprise Linux
Alliance, ostensibly to the same maintenance standards as the now
discontinued kernel.org LTS.

This code is primarily offered as a Git repository, with gz tarballs
also available, but no xz versions. Switching back to a gzipped version
of the kernel source code would introduce too much srcfs growth, so we
use the last kernel.org tar.xz release (4.14.336), and apply OpenELA's
changes using a patch generated from the Git repository.
2024-04-14 05:04:24 +02:00
Gábor Stefanik
89a4d18ff0 Support multiple mirrors for each source file
If multiple URLs are entered in a sources listing for the same file,
each will be tried in turn, until either one succeeds, or we fail
having run out of mirrors.
2024-04-14 00:17:41 +02:00
Gábor Stefanik
6017ae7a9f Add extra source URL for OpenSSL 3.0.13, to account for it being moved in the future
This will only be useful after #454 is merged.
2024-04-14 00:13:20 +02:00
Gábor Stefanik
637fa823f0 Upgrade OpenSSL to 3.0.13
Fixes #451
2024-04-13 23:43:41 +02:00
fosslinux
2261098f98
Merge pull request #445 from fosslinux/check-substitutes
Check "substitutes"
2024-02-24 09:37:32 +00:00
fosslinux
021574d2a9 Change diffutils-2.7 back to upstream gz tarball
The bz2 tarball we were using is a complete repack of the tarball,
including date & permission modifications. It adds an extra file
RPI-Configure too. This is not optimal as it impedes verification
ability.
2024-02-20 09:53:22 +11:00
Gábor Stefanik
60ec9ea80c Update Linux kernel configuration & patches
This updates the Linux kernel configuration, removing irrelevant
networking-related components, and switching framebuffer drivers to
the DRM-based ones. With this, we can finally bootstrap on systems
with newer NVIDIA cards, which would green screen with the nvidiafb
driver.

KVM is still disabled, see #443 - VIRTUALIZATION is also disabled,
as it's useless without KVM or any other suboption being enabled.

Additionally, we can now drop the bad-asm patch, since our newer
binutils has no problem supporting that syntax, and it doesn't look
quite innocuous to me, removing an offset from a memory access.

The kernel is now built in 2 stages: first, we build vmlinux only,
then, after cleaning up any intermediate .o files (except the ones
needed to build efistub), we convert it to a bzImage. This required
some creative use of the -o option to convince Make not to rebuild
all of the .o files we've just deleted as dependencies.
2024-02-18 17:54:25 +01:00
Gábor Stefanik
ee3ab501da Add rootwait to grub command line to fix USB boot failures
Without this, one of my boards fails to reboot from USB drive due to
slow USB enumeration. Rootwait is not needed during the Fiwix -> Linux
jump, because we use an initramfs there, and the init scripts already
wait for USB drives to show up. Linux->Linux kexec, used with a custom
early kernel, might need it, so add it there as well to be safe.
2024-02-18 17:52:33 +01:00
Gábor Stefanik
11d3605b08 Upgrade Linux kernel to 4.14.336
This is the last LTS version buildable using GCC 4.0.x. The next one,
version 4.19, requires at least GCC 4.6.

Fortunately, this is also the first version of the Linux kernel
without firmware blobs being included in /firmware, so the FSFLA
deblob scripts aren't needed anymore to ensure a fully auditable
kernel - the 3 remaining drivers that do include blobs masquerading
as source code are removed via a patch, avoiding all the other side
effects of the deblob scripts.
This doesn't compromise the trustworthiness of the bootstrapped
environment, since all the other drivers deblob would remove use
the firmware loader mechanism, which does nothing when the actual
firmware blobs aren't installed on the system separately. Features
dependent on firmware still won't work, but many drivers that load
firmware do so only optionally. This includes r8169, the driver for
the Realtek gigabit NICs found on many x86 motherboards.

This kernel is considerably larger than 4.9.10, and we build more
of it (including drivers that would previously get stripped away by
the deblob script, such as r8169), so to accommodate that, Fiwix
initrd size is increased by 64MiB, while lowering kexec space by
the same amount to ensure enough userspace memory available in Fiwix.
Fiwix's maximum open file count is also bumped from 1.5K to 2.5K.

The Documentation folder is deleted before build, to further save
space in the ramdisk.
2024-02-17 15:37:33 +01:00
Gábor Stefanik
32138d13b9 Clean pre-Bash build artifacts before building the Linux kernel
All of these are archived, in a compressed form, in base.tar.bz2.
2024-02-17 15:32:02 +01:00
Gábor Stefanik
4e0a0f03dd Capture everything built before the repo system in a base tarball
Parts built before bash and the repo system are available aren't
stored in a clean repository tarball, so if any early file is
overwritten, it's lost. Fix this by creating a base.tar.bz2 right
after the repo is set up, to hold reference copies of early files.
This tarball isn't checksummed, since it varies considerably with
bootstrap options, but the binaries inside are protected by their
own checksums.
2024-02-17 15:32:02 +01:00
Gábor Stefanik
7dc9ebc71d Improve hygiene of kaem build scripts 2024-02-17 15:32:02 +01:00
fosslinux
9c1ae45bb8
Merge pull request #436 from Googulator/xz
Support early xz/lzma decompression, and use it wherever possible
2024-02-15 07:51:13 +00:00
Gábor Stefanik
4bc54d83cb Allow grub to autodetect screen resolution
With this, systems without a supported non-vesa FB driver in Linux
(such as Intel integrated graphics) get full resolution after reboot.
2024-02-14 16:02:28 +01:00
Gábor Stefanik
65953732a0 Support early xz/lzma decompression, and use it wherever possible 2024-02-14 14:34:16 +01:00
Gábor Stefanik
f2aee4758e Use e820 memory map from BIOS, if available 2024-02-12 13:34:30 +01:00
Gábor Stefanik
9e4c17b68d Pass parameters to make_fiwix_initrd and kexec-fiwix
This extends make_fiwix_initrd and kexec-fiwix to support command
line parameters, instead of hardcoding relevant values within the
C sources. This way, it becomes possible to alter e.g. ramdisk size
without affecting checksums.

While we're at it, also support loading a memory map from file.
2024-02-12 13:34:00 +01:00