|6 hours ago|
|.reuse||2 months ago|
|LICENSES||2 months ago|
|dev-utils||2 months ago|
|lib||2 weeks ago|
|sysa||1 day ago|
|.cirrus.expect||2 weeks ago|
|.cirrus.yml||2 weeks ago|
|.gitignore||2 weeks ago|
|.gitmodules||1 month ago|
|DEVEL.md||2 weeks ago|
|README.rst||2 weeks ago|
|SHA256SUMS.sources||3 days ago|
|parts.rst||3 days ago|
|rootfs.py||18 hours ago|
|sysa.py||3 days ago|
An attempt to provide a reproducible, automatic, complete end-to-end bootstrap from a minimal number of binary seeds to a supported fully functioning operating system.
This project is a part of the bootstrappable project, a project that aims to be able to build complete computing platforms through the use of source code. When you build a compiler like GCC, you need another C compiler to compile the compiler - turtles all the way down. Even the first GCC compiler was written in C. There has to be a way to break the chain…
There has been significant work on this over the last 5 years, from Jeremiah Orians’ stage0, hex2 and M2-Planet to janneke’s Mes. We have a currently, fully-functioning chain of bootstrapping from the 357-byte hex0 seed to a complete GCC compiler and hence a full Linux operating system. From there, it is trivial to move to other UNIXes. However, there is only currently one vector through which this can be automatically done, GNU Guix.
While the primary author of this project does not believe Guix is a bad project, the great reliance on Guile, the complexity of many of the scripts and the rather steep learning curve to install and run Guix make it a very non plug-and-play solution. Furthermore, there is currently (Jan 2021) no possible way to run the bootstrap from outside of a pre-existing Linux environment. Additionally, Guix uses many scripts and distributed files that cannot be considered source code.
(NOTE: Guix is working on a Full Source Bootstrap, but I’m not completely sure what that entails).
Furthermore, having an alternative bootstrap automation tool allows people to have greater trust in the bootstrap procedure.
|Total size of seeds ||~30MB (Reduced Source Bootstrap) ||~1KB|
|Use of kernel||Linux-Libre Kernel||Any Linux Kernel (2.6+) |
|Implementation complete||Yes||No (in development)|
|Automation||Almost fully automatic||Optional user customization|
: Both projects only use software licensed under a FSF-approved free software license. : Reiterating that Guix is working on a full source bootstrap, although that still uses guile (~12 MB). : Work is ongoing to use other, smaller POSIX kernels.
That is outside of the scope of this README. Here’s a few things you can look at:
GNU Guix is currently the furthest along project to automate bootstrapping. However, there are a number of non-auditable files used in many of their packages. Here is a list of file types that we deem unsuitable for bootstrapping.
For a more in-depth discussion, see parts.rst.
sysa is the first ‘system’ used in live-bootstrap. We move to a new system after a reboot, which often occurs after the movement to a new kernel. It is run by the seed Linux kernel provided by the user. It currently compiles everything.