FYI: This is based on a reddit post I made on April 3, 2021.
In early 2021 I got really obsessed with Linux, hardly a rarity for me. But this time I was particularly interested in the ideals of the Free Software Foundation and Open Source Software in general (apologies to RMS for mentioning these two in the same sentence). I had plenty of experience digging through source code of open source software in the past to figure out how things worked (Audacity comes to mind). But when it came down to it, I was rather agnostic on whether the software I was running was really all that open source. Don’t get me wrong, I tried to avoid proprietary software when possible, but sometimes needs must. Why harp on about proprietary and open source software when all I ever seem to do is run precompiled binaries anyway? The knowledge that the source code for an entire operating system is freely available for me to play around with was becoming increasingly tantalizing. It’s time to take advantage! This is where Linux From Scratch comes in. Unlike other minimalist distros like Arch or Gentoo, this project is as DIY as it gets, because it’s more of a book than a distro. Starting from another Linux system of your choice you compile package after package, slowly switching over and recompiling until you end up with a fully self-sufficient, self-compiled system, able to compile whatever OSS you need to run.
I started with virtual machines, which turned out to be rather straight forward. After about two days I had a fully functional X11 desktop with Firefox etc., but it was becoming increasingly clear to me that I need to do this on bare metal hardware if I want to get the true experience. Unfortunately the only unused machine at my disposal at the time was a netbook I got in 2011, an ASUS Eee PC 1015PN. With a mechanical hard drive, an Intel Atom N570 dual core running at a blistering 1.66Ghz, and a (somewhat dodgy) Nvidia ION 2 GPU, I was sure to be in for a struggle. At least I upgraded the RAM to 2GB at one point.
It was running Debian at the time, so this was already taken care of. I set up ssh and moved the netbook as far away from me as possible (that little fan sure can get loud). Time to give this a try. Using Linux From Scratch (and later Beyond Linux From Scratch) 10.1 with systemd, things started off very smoothly. I did forgo testing, given that this is just an experimental home system and some of these tests can take forever even on powerful systems. Everything compiled in a decent time without major issues. This was quite a boost in confidence. While I initially doubted that I could even get basic utilities to compile, I had a full toolchain set up surprisingly quickly.
The next hangup came with the Linux kernel. Configuring a kernel for a decade old (rather obscure) netbook was a bit of a challenge. Thankfully the Gentoo Wiki has articles on similar netbook models, which did help to cover some bases. The knowledge of running a kernel optimized for your device was well worth this challenge in my opinion.
My first foray into the world of BLFS (Beyond Linux From Scratch) came because I had one desire/compromise. This is a netbook, it needs WiFi capabilities! The compromise is obvious then, any FOSS advocate will know that this means it’s time to deal with firmware blobs. A speck of closed source dust in my otherwise clean, open source paradise. Moreover, I don’t want dealing with WiFi to be a complete nightmare, so I want some proper software for it. NetworkManager with the countless dependencies was my choice in the end. At least I could rest easy knowing that every dependency I install might lead to one less dependency I have to install later on.
Finally I had a bootable system with not much else. Let’s get out of the TTY! Graphics capabilities rely on Mesa and by extension LLVM. Building LLVM was where the 2GB of RAM were really starting to become a hinderance. Things went smoothly for a while, but eventually the system would rely on swap space (on a struggling old mechanical hard drive) so much that the system would lock up completely. I eventually had to rely on compiling on a single core to avoid ending up in swap so much. Unfortunately, this only further extended compile times. On the other hand, getting X11 installed was a cakewalk by comparison. Considering that we’re talking about software that predates me by quite a bit, perhaps I should not be surprised that even this netbook was able to compile it with little difficulty.
So I ran X11 with TWM for a while, building basic graphical applications. I even learned how to configure TWM, but sooner or later it was time to move back into the 21st century. Let’s get a proper desktop environment next. XFCE was an obvious choice for me. It’s light on my netbook, but not quite as “extreme” about it as LXDE/LXQt. And sure enough, compiling it was painless and I had XFCE running in no time.
Time for the final challenge: Can I compile Firefox on it? Firefox means Rust, which I bootstrapped in about 15 hours (to give you an idea on the time frames I’m dealing with at this point). Remember LLVM? Well, my experience with Firefox was similar. This time I was more wary about swap space, so I could avoid another system lockup, but compiling Firefox on one Intel Atom core @ 1.66GHz and a mechanical hard drive was an ordeal that took multiple days. But it was ultimately a success (see image above)! This is where I started to reach my limit. I still used this system like this for a while, compiled smaller applications, installed security patches etc., but this is pretty much where I left things.
So, almost two years later. What happened? Well, my netbook is still alive and well, albeit relatively unused. It is running Debian again, because I believe this poor netbook and I have struggled enough. But this was a very valuable experience for me. I learned a lot and feel a lot more comfortable with Linux and its components and intricacies. It also really made me appreciate package managers and automated dependency resolution. Keeping tabs on these manually can get really difficult after a while!
I wanna end this with a shout out to the wonderful people working on Linux From Scratch. There’s no way I could have accomplished any of this without the guidance of your project. I highly recommend anyone to at least give it a read. But maybe try your hand at it too!