So, I don’t think I stated clearly the goal of this project in my last post, so what better place to do so in the overview?

The goal of this project is to build an Archlinux-esque system that is lighter and takes from projects which are targeting the basic building blocks of modern linux to either replace them with cleaner projects, newer projects, or outright drop what we don’t need. Think of this project as a love-letter/child to/of Void Linux, Chimera Linux, Alpine, Archlinux, and BSD.

As I teased in “greenfielding linux”, the system will be based on the C standard library implimentation of musl, supplimented by the clang compiler and llvm runtimes. On top of the musl+llvm base, the standard GNU coreutils will be replaced with either uutils or some combination of ported FreeBSD utilities, likely the former since I believe uutils is generally going to be replacing coreutils in big distrobutions going forward, spearheaded by Ubuntu ironically. Tar and CPIO utilities are already easily handled by the libarchive utility, among a couple others. (I bet you didn’t even know you had bsdtar on your arch system.)

Why uutils over busybox? Busybox is small yeah, but its sketchy and I prefer a solution built right for all computers and not just for embedded systems.

On top of the uutils layer sits an init system, which will be dinit, since while systemd is lovely and certainly the way Linux is headed, which I think is a good thing, dinit is much smaller and simpler, and for a system designed to be lightweight and stay out of the way, dinit is a good choice. Why dinit over Openrc like Alpine uses? It has no dependencies, and it’s not just a bunch of shell scripts, which is important since our main shell isn’t going to be bash.

I’ve considered a number of alternative shells to be our sh instead of bash, but I think the one I’ve landed on is rc from plan9. Why rc? It’s small, way smaller than bash, and even dash when built with bestline instead of readline. It’s also from a system I like to admire from afar, and I have a couple friends who’ll like this inclusion. So which shells didn’t make the cut? First, I took a look at dash, which seemed nice, especially considering it was the shell of choice for debian. Certainly cleaner than bash, but aside from that, it didn’t attract me much at all. I then took a look at mksh, from MirBSD, since I like incorporating BSD tools into this project, but the immediate jump to mandatory semantics about how to spell the name put a bad taste in my mouth, so after a little digging, I found rc!

After shell comes the package manager, the big reason why you’d do this instead of use Alpine, Chimera Linux, Void Linux, or even Gentoo. We’re using pacman with our own custom created packages that I’ll guide you on how to create and paru/yay as our AUR helper, making this an unofficial Archlinux-esque system. Absolutely unsupported by Arch though, so you’re getting no help from their support forums. Why do this? I like the huge selection that the AUR gives, really. That’s about it. Plus a one up over the “i use arch btw” people, we’ll all get to say “i built my own arch btw” instead!

Finally, one thing I’ve been pondering for a while, which bootloader is the best? None! Unless you’re dualbooting, I don’t see enough reason to bother with a bootloader, instead we’ll use secure-boot signed UKI (unified kernel images) and boot them straight from the UEFI built into the system. This keeps the system light as a bird! No bootloader, just everything tucked into a neat little package that just boots.

And here’s the outline for our project.

  1. Chapter 1 (That’s us!): The tech stack and outline.
  2. Chapter 2: Setting up an Alpine host with mussel to start building.
    1. Chapter 2.1: Partitioning the destination drive and laying it out
  3. Chapter 3: Building and installing musl and llvm
    1. Chapter 3.1: Building pacman
    2. Chapter 3.2: Installing the rest of the build tools
  4. Chapter 4: Building and installing the LFS system
  5. Chapter 5: System configuration
  6. Chapter 6: Making it boot

That’s it! Albeit, each chapter will be lengthy and heavily reference the LFS 12.4 book, but it’s not too many steps to solve this puzzle. Enjoy!

( Angels of the Apocalypse - NEEDY GIRL OVERDOSE )