logo

bootstrap-initrd

Linux initrd generator to bootstrap a POSIX-ish system from a reasonably small binary seed git clone https://hacktivis.me/git/make-initrd.git
commit: 2dc9672700aba34c3c6bb3b4f97c89ccc5071e80
parent e58b59fd0397b4bf420ff7cd2d0c6fa7711126e4
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Sun, 28 Apr 2024 01:52:08 +0200

README.md: Add notes about comparisons with others

Diffstat:

MREADME.md23++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md @@ -9,6 +9,8 @@ A initrd generator for Linux to bootstrap a POSIX-ish system from a reasonably s Status: Very early experiments, doesn't yet builds everything, generator very likely doesn't runs on your machine. ## Rationales +Each of those roughly by their build order. + ### TCC (binary) Need to start somewhere and TCC allows to interpret C, allowing to avoid seeding another interpreter. The reason to not pick Guile+MesCC instead is because I find Guile Scheme to be less well-known than amd64 itself. @@ -20,23 +22,34 @@ Need a libc to start somewhere, tryhards could maybe compile it from source with Temporary workaround to mrsh lack of working interactivity in the console (Due to some missing TTY initialization?). ### mrsh -emersion POSIX shell, somewhat incomplete but buildable with only a C Compiler. +emersion POSIX shell, somewhat incomplete but buildable with only a C Compiler. +Meanwhile: +- heirloom-sh: Also buildable with only a C Compiler but fails to allocate memory at launch +- bash, yash: autoconf, so needs an existing shell +- dash: autoconf and generator scripts, so needs an existing shell +- mksh: ./Build.sh, so needs an existing shell +- AT&T ksh: Way too big to even try, might as well try Perl ### yacc The reference implementation of yacc, only needs a C Compiler to build. (Unlike byacc and bison) ### utils-std -My own software, which explicitly allows to bootstrap with an incomplete POSIX environment. +My own software, which explicitly allows to bootstrap with an incomplete POSIX environment such as this one. +Meanwhile: +- GNU coreutils: Autoconf, therefore needs the utilities it's building plus some extras to already be available +- Busybox and Toybox: Heavy dependency on make, which can only come much later on in the bootstrapping process ### minised Incomplete implementation of `sed(1)` (notably missing `-i`), but has minimal dependencies. -Likely to be replaced with a `sed(1)` from a \*BSD. +Likely to be replaced with a `sed(1)` from a \*BSD. +Meanwhile: +- GNU sed: autoconf, which requires `sed` among other thingsā€¦ ### (One True) awk -Reference implementation and AFAIK the one used in BSDs. +Reference implementation and AFAIK the one used in BSDs, can be built with only a Yacc implementation and a C Compiler. ### bmake -NetBSD make made portable, uses an autotools configure script but much simpler than the GNU Make one. +NetBSD make(1) made portable, uses an autotools configure script but much simpler than the GNU Make one. ## Launching in QEMU ```