aboutsummaryrefslogtreecommitdiff

MINimum system

A small set of scripts to build an absolutely minimalist system using the musl libc, mksh, the "one true awk", and other tools.

~~I'm purposely trying to avoid large or complex projects such as Busybox. Not that they don't have their place, or that there's anything wrong with them, but IMO they take the fun out of it because they have absolutely everything you need. The Linux Kernel will be the glaring exception here.~~

# passwd
Enter new password:
Segmentation fault

The above was wishful thinking. I may debug the suckless tools in the future but they're nowhere near complete enough to build a distro around. Although the ed implementation works rather well.

Currently it's just building a minimal set of tools into pfx/ eventually the scripts will encompass building a virtual machine image with a boot loader and all the bells and whistles. ( if I get around to it ha ha )

Will your system include a compiler?

Probably not, but I've thought about this one, it'd be cool to make it "self-hosting" in a sense.

What Linux distribution are you building this on?

Gentoo at the moment, it should work on any Linux distribution.

Why?

I want to learn more about how operating systems are built and doing something that someone else has already laid out for you ( such as the LFS project ) is just too tedious and boring for me, I'd rather do something different.

The process so far:

Acquire a toolchain and set it in ./inc I used musl-cross-make and placed the output folder into ./x86_64-linux-musl where x86_64 is the arch you're compiling for, in theory this should work for ARM and the like but I haven't gotten around to testing.

If you wish to set this up automatically run sh scripts/musl-cross-make.sh after sh scripts/get_sources.sh

Run scripts/get_sources.sh and then scripts/build.sh It's rather important to run them from the min directory so the paths and imports will be correct.

Note:

Because I've not yet been able to make some programs statically linked you might need a symlink for programs to find musl libc, or just switch the $PATH order in ./inc

sudo ln -sv ${base_dir}/pfx/usr/lib/libc.so /lib/ld-musl-x86_64.so.1