Commit Graph

38 Commits

Author SHA1 Message Date
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 637fa823f0 Upgrade OpenSSL to 3.0.13
Fixes #451
2024-04-13 23:43:41 +02: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 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
fosslinux 54068851d8
Merge pull request #434 from fosslinux/m4
M4 alternative update
2024-02-07 22:11:58 +00:00
fosslinux 6b4ec19e19 Add m4 1.4.19 2024-02-07 20:35:22 +11:00
fosslinux 068f7d8f40 Fix diffutils manpage reproducibility 2024-02-07 20:22:10 +11:00
fosslinux ba9d182471 Revert "Update m4 to 1.4.10"
This reverts commit 6d8cf14998.
2024-02-06 18:06:46 +11:00
fosslinux ffbdd8bc18 Add gawk 5.3.0 2024-02-05 18:51:49 +11:00
Gábor Stefanik 6d26855dc6 Support reboot in non-chroot modes using grub and an init script
We use grub-2.06 as 2.12 has some packaging issues, and can't be
built in live-bootstrap for now.
2024-02-04 16:54:13 +01:00
fosslinux 9c6e5d6406 Add diffutils 3.10 2024-02-04 14:57:46 +11:00
fosslinux cb4404029d Add gzip 1.13
Closes #369
2024-02-04 14:55:55 +11:00
fosslinux 6e05585ff9
Merge pull request #426 from fosslinux/opendoas
Opendoas (ie, sudo)
2024-02-04 03:52:25 +00:00
fosslinux bd303ada4a
Merge pull request #425 from fosslinux/m4-update
Update m4 to 1.4.10
2024-02-04 03:50:55 +00:00
fosslinux 2188e8182a Add opendoas 2024-02-03 10:07:41 +11:00
fosslinux 75772adb91 Allow the use of setuid binaries
This also changes checksum of util-linux.
2024-02-03 10:07:41 +11:00
fosslinux 6d8cf14998 Update m4 to 1.4.10 2024-02-02 18:05:02 +11:00
fosslinux bfd951ae51 Add shadow 2024-02-01 21:24:56 +11:00
fosslinux 0696018410 Add libbsd 2024-02-01 21:24:56 +11:00
fosslinux bbfab004c8 Add libmd 2024-02-01 21:24:56 +11:00
fosslinux 6c377de2f0 Add basic users and groups 2024-02-01 21:23:16 +11:00
fosslinux 438e01800c Update checksums 2024-01-26 10:29:57 +11:00
fosslinux 9632f6af01 Update coreutils to 9.4 2024-01-26 10:29:18 +11:00
Gábor Stefanik 9ed4416940 Upgrade autogen bootstrap tarball to v1.0.1 to fix return code issue 2024-01-12 16:11:14 +01:00
fosslinux 5b7175de3e
Merge pull request #401 from stikonas/weak_symbols
Fix weak symbols to work in tcc.
2024-01-10 07:20:54 +00:00
fosslinux f51fb080b1
Merge pull request #391 from Googulator/bare-metal-linux
Make the Linux kernel & Fiwix->Linux kexec more bare-metal-friendly
2024-01-10 07:16:20 +00:00
Andrius Štikonas be15f9caca Fix weak symbols to work in tcc.
Fixes #322.
2024-01-09 22:52:43 +00:00
rick-masters 1bffe44154
Upgrade Fiwix to 1.5.0-lb1, pulling from upstream Mikaku repo. (#397) 2024-01-08 01:37:15 +00:00
Gábor Stefanik 82c570694a Make the Linux kernel & Fiwix->Linux kexec more bare-metal-friendly
* Enable additional hardware drivers in Linux for better bare metal
  display, network & input device compatibility
* Disable ATA-over-Ethernet support, because it spams the network
  with unnecessary packets, is basically useless for bootstrapping,
  and may even be a security risk
* Increase Fiwix initrd size to 1280MB to fit a larger Linux build
* Make the Fiwix kexec size configurable the same way as initrd
  (and reduce from 280MB to 256MB which is sufficient in my testing)
* Use a more conservative memory map for Fiwix & Linux
* Boot Linux with consoleblank=0 on bare metal, so the build won't
  go blind after 5 minutes
* Support kexec-fiwix with interrupts disabled (will be useful later
  when builder-hex0 is updated)
2024-01-02 01:33:09 +01:00
Eduardo Sánchez Muñoz 5610998a4d Update curl to 8.5.0 2024-01-01 22:39:24 +01:00
fosslinux fbb3e97149 Update ca-certificates to 3.95 2023-12-29 12:14:27 +11:00
Gábor Stefanik c8837203c8 Fix intermittent failure to build automake-1.15.1 in bwrap (#365) 2023-12-27 08:06:51 +01:00
fosslinux 3fd101e70a
Merge pull request #359 from fosslinux/binutils-2.41
Update binutils to 2.41
2023-12-26 01:53:39 +00:00
Gábor Stefanik 47711cfea9 Fix non-reproducible Linux kernel build due to timestamps
Linux's KBUILD doesn't follow SOURCE_DATE_EPOCH, but rather it
uses its own variable, KBUILD_BUILD_TIMESTAMP.

While we are at it, also update kexec-linux's checksum, which
didn't match either. (This one was reproducible, it was just
out of date.)
2023-12-25 10:16:17 +01:00
fosslinux 191c013e23 Update binutils to 2.41 2023-12-21 11:03:15 +11:00
fosslinux ff4f97ab8f Update all checksums 2023-12-15 21:44:27 +11:00
fosslinux 6ed2e09f3a Remove the notion of "sys*"
- This idea originates from very early in the project and was, at the
  time, a very easy way to categorise things.
- Now, it doesn't really make much sense - it is fairly arbitary, often
  occuring when there is a change in kernel, but not from builder-hex0
  to fiwix, and sysb is in reality completely unnecessary.
- In short, the sys* stuff is a bit of a mess that makes the project
  more difficult to understand.
- This puts everything down into one folder and has a manifest file that
  is used to generate the build scripts on the fly rather than using
  coded scripts.
- This is created in the "seed" stage.

stage0-posix -- (calls) --> seed -- (generates) --> main steps

Alongside this change there are a variety of other smaller fixups to the
general structure of the live-bootstrap rootfs.

- Creating a rootfs has become much simpler and is defined as code in
  go.sh. The new structure, for an about-to-be booted system, is

/
-- /steps (direct copy of steps/)
-- /distfiles (direct copy of distfiles/)
-- all files from seed/*
-- all files from seed/stage0-posix/*

- There is no longer such a thing as /usr/include/musl, this didn't
  really make any sense, as musl is the final libc used. Rather, to
  separate musl and mes, we have /usr/include/mes, which is much easier
  to work with.
- This also makes mes easier to blow away later.
- A few things that weren't properly in packages have been changed;
  checksum-transcriber, simple-patch, kexec-fiwix have all been given
  fully qualified package names.
- Highly breaking change, scripts now exist in their package directory
  but NOT WITH THE packagename.sh. Rather, they use pass1.sh, pass2.sh,
  etc. This avoids manual definition of passes.
  - Ditto with patches; default directory is patches, but then any patch
    series specific to a pass are named patches-passX.
2023-12-15 21:43:19 +11:00