[Aboriginal] Uploaded some of the mkroot.sh stuff.

Rob Landley rob at landley.net
Thu Nov 17 07:29:37 PST 2016

In my copious free time I've been doing a new simple-as-possible root
filesystem builder, at http://github.com/landley/mkroot which is
probably going to replace this project (for me at least). Not
necessarily entirely useful yet ("make airlock" is only in toybox git,
last release called it "make install_airlock" and I think it had some
rough edges, also native building against glibc breaks in the shared
library copying near the end). But it should give you an idea.

Backstory: 2/3 of the complexity of aboriginal linux is building
toolchains, I will never ship a GPLv3 binary in a hobbyist context so I
stopped updating my package versions at the last gplv2 releases, and
earlier this year 4 different kernel architectures stopped building with
my old last gplv2 toolchain in the space of 2 releases (4.3 and 4.4 I
think). I've been too busy behind the scenes with the http://j-core.org
stuff to try heroic efforts to keep the old toolchain on life support,
which meant I couldn't upgrade the kernel anymore. Which is a problem.
And thus the project got mothballed for a while.

Meanwhile http://github.com/richfelker/musl-cross-make from the
musl-libc.org maintainer is now capable of building _native_ compilers,
not just cross compilers. (And he's said he's willing to host cross and
native toolchain binaries once we reach a good stopping point, which is
good considering they're using current GPLv3 gcc/binutils versions so I
won't do it. Attached are the scripts I used to build the last round of
toolchains, basically extract one layer above musl-cross-make and
../i686.sh then TYPE=static ../sh2.sh then TYPE=native ../sh2.sh. Yeah,
they could use serious cleanup, but they show the basic build theory I'm

Hence the reboot of a new very simple root filesystem builder. I moved
"make airlock" into toybox's makefile, and this is still building
busybox for the ~dozen things (most prominently the shell) that I need
busybox for, until I can replace those. It leaves libc to the toolchain
(so no uclibc option unless you use a toolchain out of buildroot or
something), and the basic build is self-contained in a single file
(mkroot.sh can work standalone in its own directory).

There are a number of things aboriginal did that the new one doesn't yet
(environment variable sanitization, download mirrors, applying patches
to extracted tarballs, multiple output filesystem formats, multiple
simultaneous parallel target builds, and so on). But there may be
simpler/better ways to do all those things it's doing. (For example:
environment variable sanitization is basically env -i PATH="$PATH"
CROSS_COMPILE="$CROSS_COMPILE". Yeah that disables distcc but we're not
building huge amounts of stuff, and you can always _not_ do it...)

So, just a heads up with what I've been working on. It would be nice to
have more time/energy to throw at it, but this is at best third on my
process scheduler right now, not counting crisis du jour.

My current vague plan is that next toybox release I should have a
synchronized mkroot.sh release too, and then maybe it should have a
website or something. (Inherit this mailing list or start a new one?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: mcm-sh.tar.gz
Type: application/gzip
Size: 1225 bytes
Desc: not available
URL: <http://lists.landley.net/pipermail/aboriginal-landley.net/attachments/20161117/ea1780f7/attachment.bin>

More information about the Aboriginal mailing list