logo

bootstrap-initrd

Linux initrd to bootstrap from a small binary seed git clone https://anongit.hacktivis.me/git/bootstrap-initrd.git/
commit: a28bd78fdfac1762cb71de89bbb3edb915589a21
parent c5049d8194fb00c47c77d6cab600a902a5abf9ab
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Thu, 24 Apr 2025 20:10:50 +0200

unpack extras instead of just copying the tarballs

Diffstat:

MREADME.md2+-
Mextras/bearssl.sh6++----
Mextras/e2fsprogs.sh6++----
Mextras/git.sh6++----
Mextras/iproute2.sh6++----
Mextras/lua.sh6++----
Mextras/make.sh7++-----
Mextras/muon-stage1.sh6++----
Mextras/muon-stage2.sh6++----
Mextras/muxzcat.sh6++----
Mextras/pkgconf-lite.sh6++----
Mextras/pkgconf.sh6++----
Mextras/tiny-curl.sh6++----
Minit.sh4++--
Mmake-root.sh24++++++++++++++++--------
15 files changed, 43 insertions(+), 60 deletions(-)

diff --git a/README.md b/README.md @@ -151,7 +151,7 @@ Meanwhile: - git: For oasis - e2fsprogs: In case you need to format some extra storage -You can automatically build all of the above with `/extras-build-all.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 automatically build all of the above with `/extras-build-all.sh` but be warned that some use pre-generated autotools blobs which harms reviewability. You can also exclude those tarballs from the initrd with setting the `EXCLUDE_EXTRAS` environment variable to any value. diff --git a/extras/bearssl.sh b/extras/bearssl.sh @@ -1,8 +1,7 @@ #!/bin/sh set -ex -tar xof /distfiles/bearssl-*.tar.gz -cd bearssl-*/ +cd /extras/bearssl-*/ # Maybe consider setting the soname to libbearssl.so.${pkgver%%.*} as done in aports @@ -11,5 +10,4 @@ install build/brssl /usr/bin/ install -m 644 build/libbearssl.a build/libbearssl.so /usr/lib/ install -m 644 inc/* /usr/include/ -cd .. -rm -fr bearssl-*/ +cd - diff --git a/extras/e2fsprogs.sh b/extras/e2fsprogs.sh @@ -8,8 +8,7 @@ die() { command -v make || die "Run /extras/make.sh" -tar xof /distfiles/e2fsprogs-*.tar.gz -cd ./e2fsprogs-*/ +cd /extras/e2fsprogs-*/ LD=tcc ./configure --disable-nls --disable-backtrace @@ -36,5 +35,4 @@ make make install INSTALL=install -cd .. -rm -fr ./e2fsprogs-*/ +cd - diff --git a/extras/git.sh b/extras/git.sh @@ -9,8 +9,7 @@ die() { command -v muon || die "Run /extras/muon-stage2.sh" command -v curl || die "Run /extras/tiny-curl.sh" -tar xof /distfiles/git-*.tar.gz -cd git-*/ +cd /extras/git-*/ export LD=$CC @@ -28,5 +27,4 @@ muon setup \ muon -C build samu muon -C build install -cd .. -rm -fr git-*/ +cd - diff --git a/extras/iproute2.sh b/extras/iproute2.sh @@ -12,8 +12,7 @@ command -v make || die "Run /extras/make.sh" command -v pkg-config || die "Run /extras/pkgconf-lite.sh" -tar xof /distfiles/iproute2-*.tar.gz -cd ./iproute2-*/ +cd /extras/iproute2-*/ ./configure --prefix /usr @@ -32,5 +31,4 @@ make clean make HOSTCC=$CC make install -cd .. -rm -r ./iproute2-*/ +cd - diff --git a/extras/lua.sh b/extras/lua.sh @@ -3,11 +3,9 @@ set -ex # TODO (need ed / sed -i): https://www.lua.org/tests/lua-5.4.6-tests.tar.gz -tar xof /distfiles/lua-*.tar.gz -cd lua-*/ +cd /extras/lua-*/ pdpmake -C src all CC="$CC -std=gnu99" SYSCFLAGS="-DLUA_USE_LINUX" RANLIB=true pdpmake install -cd .. -rm -fr lua-*/ +cd - diff --git a/extras/make.sh b/extras/make.sh @@ -1,9 +1,7 @@ #!/bin/sh set -ex -P="make-4.4.1" -tar xof /distfiles/${P}.tar.gz -cd ./$P +cd /extras/make-*/ export LD="tcc" ./configure --prefix=/usr --disable-nls --disable-dependency-tracking @@ -12,5 +10,4 @@ pdpmake clean pdpmake ARFLAGS='-r' pdpmake install INSTALL=install -cd .. -rm -r ./$P +cd - diff --git a/extras/muon-stage1.sh b/extras/muon-stage1.sh @@ -1,8 +1,7 @@ #!/bin/sh set -ex -tar xof /distfiles/muon-*.tar.gz -cd muon-*/ +cd /extras/muon-*/ ./bootstrap.sh bootstrap @@ -12,5 +11,4 @@ export LD=$CC ./bootstrap/muon-bootstrap -C build samu ./bootstrap/muon-bootstrap -C build install -cd .. -rm -r ./muon-*/ +cd - diff --git a/extras/muon-stage2.sh b/extras/muon-stage2.sh @@ -9,8 +9,7 @@ die() { command -v muon || die "Run /extras/muon-stage1.sh" pkg-config --exists libpkgconf || die "Run /extras/pkgconf.sh" -tar xof /distfiles/muon-*.tar.gz -cd muon-*/ +cd /extras/muon-*/ # needs to re-bootstrap to get a muon which uses libpkgconf ./bootstrap.sh bootstrap @@ -27,5 +26,4 @@ export LD=$CC ./bootstrap/muon-bootstrap -C build samu ./bootstrap/muon-bootstrap -C build install -cd .. -rm -r ./muon-*/ +cd - diff --git a/extras/muxzcat.sh b/extras/muxzcat.sh @@ -1,12 +1,10 @@ #!/bin/sh set -ex -tar xof /distfiles/muxzcat-*.tar.gz -cd muxzcat-*/ +cd /extras/muxzcat-*/ $CC -std=c90 $CFLAGS -o /usr/bin/muxzcat muxzcat.c ln -s muxzcat /usr/bin/xzcat ln -s muxzcat /usr/bin/xzdec -cd .. -rm -fr muxzcat-*/ +cd - diff --git a/extras/pkgconf-lite.sh b/extras/pkgconf-lite.sh @@ -6,8 +6,7 @@ die() { exit 1 } -tar xof /distfiles/pkgconf-*.tar.gz -cd ./pkgconf-*/ +cd /extras/pkgconf-*/ export LD="tcc" export MAKE="pdpmake" @@ -32,5 +31,4 @@ $MAKE STRIP=true install -m755 pkgconf-lite /usr/bin/pkg-config -cd .. -rm -r ./pkgconf-*/ +cd - diff --git a/extras/pkgconf.sh b/extras/pkgconf.sh @@ -8,8 +8,7 @@ die() { command -v muon || die "Run /extras/muon.sh" -tar xof /distfiles/pkgconf-*.tar.gz -cd ./pkgconf-*/ +cd /extras/pkgconf-*/ ed meson.build <<EOF /subdir('tests') @@ -27,5 +26,4 @@ muon -C build install ln -sf pkgconf /usr/bin/pkg-config -cd .. -rm -r ./pkgconf-*/ +cd - diff --git a/extras/tiny-curl.sh b/extras/tiny-curl.sh @@ -8,8 +8,7 @@ die() { command -v brssl || die "Run /extras/bearssl.sh" -tar xof /distfiles/tiny-curl-*.tar.gz -cd tiny-curl-*/ +cd /extras/tiny-curl-*/ export LD=$CC export MAKE=pdpmake @@ -18,5 +17,4 @@ export MAKE=pdpmake "$MAKE" RANLIB=true "$MAKE" install INSTALL=install -cd .. -rm -fr tiny-curl-*/ +cd - diff --git a/init.sh b/init.sh @@ -203,9 +203,9 @@ build_bzip2 || die build_zlib_libs </dev/null || die build_pigz || die -test -f /cacert-*.pem && { +test -f /distfiles/cacert-*.pem && { mkdir -p /usr/share/cacert/ || die - mv /cacert-*.pem /usr/share/cacert/cert.pem || die + mv /distfiles/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 } diff --git a/make-root.sh b/make-root.sh @@ -25,20 +25,22 @@ local_files=" src/mount-stub.c src/reboot-stub.c " -distfiles=" +extra_tarballs=" make-4.4.1.tar.gz lua-5.4.6.tar.gz pkgconf-pkgconf-2.4.3.tar.gz iproute2-6.13.0.tar.gz bearssl-0.6.tar.gz tiny-curl-8.4.0.tar.gz - cacert-2024-11-26.pem git-2.48.1.tar.gz e2fsprogs-1.47.2.tar.gz muon-v0.4.0.tar.gz muxzcat-v2b.tar.gz " -local_distfiles=" +extra_distfiles=" + cacert-2024-11-26.pem +" +extra_local_files=" extras-build-all.sh extras/bearssl.sh extras/e2fsprogs.sh @@ -106,19 +108,25 @@ for i in $local_files; do done if ! test "${EXCLUDE_EXTRAS:+y}" = "y"; then - mkdir -p ./extras - for i in $local_distfiles; do - cp "${WORKDIR}/$i" ./"$i" || die "Failed copying $i" + mkdir -p ./extras || die + for i in $extra_tarballs; do + tar xof "${WORKDIR}/distfiles/$i" -C ./extras/ || die "Failed extracting $i" done + rm ./extras/bearssl-*/T0Comp.exe || die + mkdir -p ./distfiles - for i in $distfiles + for i in $extra_distfiles do cp "${WORKDIR}/distfiles/$i" ./distfiles/ || die "Failed copying $i" done + + for i in $extra_local_files; do + cp "${WORKDIR}/$i" ./"$i" || die "Failed copying $i" + done fi -deblob +deblob -c || die mkdir -p dev proc sys etc usr/bin var/empty || die "Failed creating base directories" ln -s /proc/mounts etc/mtab || die "Failed symlink for /etc/mtab"