* ``pre-network-sources`` is no more
* builder-hex0 stage1 is no longer precompiled, but instead needs to be generated from hex0 code (using POSIX tools or by hand)
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.
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.
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.
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.
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.
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.
Previously, there was no way to access the additional consoles in
qemu mode, due to qemu running in -nographic mode with a serial
console. This is perfectly fine in non-interactive mode, but we can
make interactive mode more usable by using a graphical console like
on bare metal.
Also drop -no-reboot from interactive mode, since rebooting (e.g.
to load a newly compiled kernel) makes sense in this case.
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.
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.
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.
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.
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.