So I work a lot with computers, and have for quite a while. I've managed virtual machines, spun up dedicated servers, pieced together new computers, diagnosed and repaired broken ones, messed with operating systems and configuration settings galore, and, of course, I've used Linux a good amount. Although, for the longest time, I stuck to the more user-friendly side of Linux: Ubuntu, CentOS, and Fedora were operating systems I'd often find myself using, for both my desktop and for my server. (I still use Ubuntu on my servers, as a matter of fact.) It was only more recently that I started to delvge into the more challenging side of Linux OSes - the kind where you don't get an installer.

"By the way, I use Arch Linux."

Arch Linux was my first foray into this field. I like to blame its popularity for this, as well as the fact it is probably the easiest out of the three OSes I'm going to talk about here, as the only real thing that's missing is the installer. ...Oh, and you might also have to take extra steps if you actually want a graphical display as well and not just a console screen. Everything's still pre-compiled binaries, though, which can be installed through the "pacman" package manager.

That all being said, it's quite easy to ruin your installation if you're not careful. It's easy to inadvertedly put yourself into a "partial upgrade" scenario, where some packages are updated and others aren't, leading to a broken system. It's also quite simple to delete the package manager itself, leaving you with no package manager (although this is something you'd have to do a bit more consciously ;P).

That all being said, I kinda wanted more of a challenge. So, naturally, I jumped past the more sensible challenge of Gentoo (I'll talk about that later) and went straight for the gauntlet; the absolute challenge that is Linux From Scratch.

Linux From Scratch: It Isn't an Exaggeration

Linux from Scratch is the kind of project you look at, go "huh, that's interesting that it exists", and never really actually plan to install. It's an extremely valuable resource for understanding every little program that goes into a Linux operating system, and it's an absolute blessing that it exists. Open source isn't exactly "open" if it's impossible to build yourself, and Linux From Scratch outlines this task so it isn't impossible. That all being said, I would still rate the task of installing a Linux From Scratch system at "daunting" and "are you really sure you want to do this?"

You are not given an installer. You're not even given any pre-compiled binaries. As a matter of fact, while you can start off with your own system's binaries, you're expected to compile a compiler and some build tools, and then use these build tools to compile the final build tools and compiler for your shiny new operating system that will also be used to compile everything else. You also need to figure out the configuration yourself - although the PDFs will give you pointers, tips, and a starting hand with some of the config files - but there's ultimately no relying on pre-compiled binaries. Everything is compiled by hand - your hand. All you get to start with is the source code and a PDF explaining how to put everything together.

When I tackled the challenge of Linux From Scratch, I decided I wasn't quite ambitious enough to install it on my main PC. I had ESXi installed on my personal server at the time, so I simply spun up a virtual machine that I then installed it onto. The process of installing the base Linux From Scratch system probably took me about two days. Running the vast series of tests for GCC, the compiler for the system, was an overnight ordeal. I got hung up with some of the organization of the files at first, and configuring a Linux kernel is a particularally daunting task that I had never done prior to this moment (and I screwed up the first time, naturally), but eventually I had a base system running. It felt like my own operating system. It was a moment of bliss starting up into it, seeing all of the little customizations I had made during the process appear, seeing my handiwork resulting in a system that could actually boot.

And then I decided I wanted to try getting X Server to run on this system. And oh boy, was that a challenge, with gobloads of additional packages to hand-compile, install, and configure. But, this, too, was a challenge I overcame, and I was, with time, able to see a full-blown graphical display that I could actually interact with! I felt bliss! It was at this moment, however, that I realized I made a fatal error in my decision making up to this point; I wasn't going to be able to get audio support in this virtual machine. And, at that point, honestly my interest in progressing that particular system further faded. I didn't see much reason to go forth and install a ton more packages to get KDE installed, or other things, if I knew I wasn't going to be able to really use sound with it - a component I personally find absolutely crucial if it's not just going to be a server OS (and if it's going to just be a server, why install XServer or KDE on it in the first place :P)

That being said, I haven't actually given Linux From Scratch another shot yet. I personally feel it probably isn't meant to be someone's daily driver OS for a few reasons - the unconventionality of it, one, and two, the fact that, with some program updates, with the number of things you'd have to recompile it's recommended to just start fresh with a new LFS build, so you're essentially guaranteed to need to completely re-do the base install all over again from time to time. That being said, if I would go through the process again, it would be on my personal desktop this time. Why? Because I'd probably be able to have support for everything I need, and I'd have the added bonus of not needing to make an entirely new kernel config file for my personal desktop. Why? Because I installed Gentoo on my personal desktop.

By the way, I ACTUALLY use Gentoo

I think of Gentoo as a very nice compromise between Linux From Scratch and Arch Linux. You're given a starting point to work off of that isn't just source code and a PDF - you have a multi-part instructional guide as well as a live system that you use to put the system together and a base system with a bunch of binaries that you then compile other binaries on top of to come up with your final installed OS.

You still have to compile a lot of things, though, instead of just being given binaries - but this time, you don't have to do it by hand. Instead, Gentoo has a special package manager that will go through the process of compiling everything for you - you just have to tell it what options you want for any given program, and any command line options you'd like to use when compiling programs in general (such as if you want programs to be optimized for a specific processor - which, if you're just compiling for use on your own system, why wouldn't you?)

You also, of course, have to figure out some config things yourself, and how you want your system to be set up (i.e. if you want to use Systemd or init.d, if you want KDE, Gnome, or even no desktop at all, etc.) You also have to make sure you don't install conflicting items, which is very easily doable - I redid my Gentoo install a time or two, because I kept inadvertedly installing conflicting programs that broke my KDE setup, and I couldn't quite figure out what was going on and what was causing the conflict. And... you also have to come up with your own kernel configuration (it gives you a way out of kernel configuration by allowing you to copy the live system kernel config if you really want to, but... if you're gonna go all this way, you might as well do this part yourself as well, right?)

The main problem with Gentoo is installing programs isn't exactly non-trivial, because each one is compiled on-the-spot. I honestly felt like I had struck gold when I realized Firefox Nightly comes as pre-compiled binaries, because I'll be honest with you; Firefox takes 18 minutes for my system to build, and that's a painful wait to bear. That being said, if you haven't updated in a while and you decide to update, the resulting update will make Windows feature updates feel speedy. Some updates will also require manual re-configuration. It is, however, not as much of a test of patience as Linux From Scratch is, and even while it is a joke that you might as well reinstall Gentoo again after a certain point, honestly, I haven't needed to reinstall it yet beyond that initial "why the hell isn't KDE working" scenario.

As a matter of fact, it was even resilient through me moving around my partitions on my hard drive. The only way I could actually even tell that it noticed anything had changed was when I looked into my settings and saw it recognized I had more room available in the system partition. I've been able to get pretty much everything I've needed installed on this system, even if it takes a while sometimes. And... I can tell people that I use Gentoo, so that's a plus I guess.

Conclusion

If there's anything I feel like I need to stress, it's this; Operating systems like Gentoo and Arch Linux aren't for everyone. Honestly, I'd say that it's the kind of system you'll know if you'd want to install or not. I don't think it's at all a good thing to try to push others to use such systems, and honestly, for most people, a user-friendly system with an installer and a more controlled setup like Fedora, Debian, CentOS, or Ubuntu is probably best. If you like a challenge, and don't mind some serious configuration though, I'd say Gentoo is definitely worth a try, or Arch Linux if you're not necessarily up for as much of a challenge. And, if you've got a lot of free time, and you want to feel what it's like to compile and configure your own OS, maybe putting together a Linux From Scratch build might be up your alley - although, I personally wouldn't in place of your main system, unless if you really, really like pain.