logo

bootstrap-initrd

Linux initrd to bootstrap from a small binary seed git clone https://hacktivis.me/git/bootstrap-initrd.git
commit: 16d41fd6998e5ab8c9c2a4c050a9311c26ac3b6b
parent e7515905efa6cc0aed8b67ac815c9603384ba872
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Tue, 25 Jun 2024 11:59:55 +0200

Allow to disable extras with EXCLUDE_EXTRAS envvar

Diffstat:

MREADME.md2++
Minit.sh10++++++----
Mmake-root.sh31++++++++++++++++++++-----------
3 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/README.md b/README.md @@ -149,6 +149,8 @@ Meanwhile: You can automatically build all of the above with `/build-extras.sh` but be warned that those aren't as curated and due to lack of deblob, they might contain binaries and some use autotools which harms reviewability. +You can also exclude those tarballs from the initrd with setting the `EXCLUDE_EXTRAS` environment variable to any value. + ## Launching in QEMU * You need a Linux kernel, so far no known version limitations * Combination of `panic=1` and `-no-reboot` allows to exit+relaunch diff --git a/init.sh b/init.sh @@ -185,10 +185,12 @@ build_bzip2 || die build_zlib_libs || die build_pigz || die -mkdir -p /usr/share/cacert/ || die -mv /cacert-*.pem /usr/share/cacert/cert.pem || die -mkdir -p /etc/ssl || die -ln -s /usr/share/cacert/cert.pem /etc/ssl/cert.pem || die +test -f /cacert-*.pem && { + mkdir -p /usr/share/cacert/ || die + mv /cacert-*.pem /usr/share/cacert/cert.pem || die + mkdir -p /etc/ssl || die + ln -s /usr/share/cacert/cert.pem /etc/ssl/cert.pem || die +} mkdir -p $HOME cd diff --git a/make-root.sh b/make-root.sh @@ -17,6 +17,14 @@ tarballs=" heirloom-devtools-070527.tar.bz2 sbase-b30fb568.tar.gz " +local_files=" + init.sh + ls-stub.c + grep-stub.c + cp-stub.c + getty-stub.c + mount-stub.c +" distfiles=" make-4.4.1.tar.gz xz-5.6.2.tar.gz @@ -32,13 +40,7 @@ distfiles=" git-2.45.1.tar.gz e2fsprogs-1.47.0.tar.gz " -local_files=" - init.sh - ls-stub.c - grep-stub.c - cp-stub.c - getty-stub.c - mount-stub.c +local_distfiles=" bootstrap-make.sh bootstrap-xz.sh bootstrap-lua.sh @@ -89,14 +91,21 @@ for i in $tarballs; do tar xof "${WORKDIR}/distfiles/$i" || die "Failed extracting $i" done -for i in $distfiles; do - cp "${WORKDIR}/distfiles/$i" ./ || die "Failed copying $i" -done - for i in $local_files; do cp "${WORKDIR}/$i" ./ || die "Failed copying $i" done +if ! test "${EXCLUDE_EXTRAS:+y}" = "y"; then + for i in $local_distfiles; do + cp "${WORKDIR}/$i" ./ || die "Failed copying $i" + done + + for i in $distfiles + do + cp "${WORKDIR}/distfiles/$i" ./ || die "Failed copying $i" + done +fi + deblob mkdir -p dev proc sys etc usr/bin || die "Failed creating base directories"