Installing Gentoo

I got my first computer when I finished tenth grade. It was an Intel Pentium III clocked at 1.1GHz, with 128MB of memory and Microsoft Windows 98 installed. I say “my” computer though it was really “our” home computer that I shared with my parents and siblings, because after all, I was the only one that tried to understand the psychology of our 56K dial-up modem, or sit through the night to download Internet Explorer 6 while hoping that my Internet connection wouldn’t get interrupted or throttled. When I went to DAIICT1Dhirubhai Ambani Institute of Information & Communication Technology for my undergraduate studies, I carried the computer with me to my hostel, and it lasted about a year before succumbing to dust and moisture.

My next computer had an AMD core and this time, I had the IT vendor give me a dual boot system with Linux. Unfortunately, I didn’t have much of a choice in distribution, and I ended up with a computer that had Red Hat Enterprise Linux 3 installed on it. As soon as I got the computer, I realized it had a problem that the IT vendor didn’t know how to fix – a BIOS bug resulted in my RHEL3 computer clock running at multiples of normal speed. I could observe my system clock (and everything else) tick at a frantic pace, and thus, my foray into GNU/Linux began with a sense of great urgency. Fortunately, with some sleuthing and help from the Internet, I eventually managed to figure out a workaround for the bug.

Several of us from the class of ’07 had dual boot configurations (with GNU/Linux). Only some of us actually used our GNU/Linux operating systems, and I wasn’t one of them. One of the things I learned then was that I could never really learn to work with GNU/Linux until I let go of Windows as a crutch, and so I finally wiped my disk, installed an early version of Fedora, and switched to a pure GNU/Linux system. Later on, I discovered Gentoo Linux, a so-called “meta” distribution2…because every Gentoo user’s operating system can be fairly distinctive based on their own choice of packages., and never looked back.

Gentoo has a certain elegance and beauty to it that is undiminished to this day. Gentoo’s original claim to fame was its extensive documentation and dogged insistence on user choice. By “user choice” I do mean that the user gets to decide practically every facet of their system setup, starting with the bootloader all the way through the Linux kernel configuration and installed drivers and software packages. Every feature of Gentoo stems from this philosophy of user choice. Gentoo gives you a brilliantly designed repository and package management system called Portage that lets you pick and choose the features you want via “USE” flags, then compile the packages yourself. You even get to compile the Linux kernel yourself, if you’re so inclined, packaging exactly the drivers and firmware you actually need. If it matters to you, you can choose to create a system that only uses free software. Over the past decade, many GNU/Linux systems have begun to use systemd, a complex, controversial and arguably bloated software management system. Gentoo is one of the few distributions that offers users viable and practical alternatives (starting with an init system called OpenRC) that adhere to the Unix philosophy of each program doing one thing really well.

In recent years, I had drifted away from using GNU/Linux on a day-to-day basis. Other priorities made it easy for me to yield to the convenience of relying on a Macbook Pro. But recently, work has led me back to embedded software, forcing me think about compilers, linkers, firmware, and build systems. I decided I would take the plunge and dive back into the world of GNU/Linux by setting up a home computer once again.

And so last week, I bought an AMD Ryzen 7 Beelink SER5 Mini PC and installed Gentoo on it. Surprisingly little has changed with Gentoo’s installation process over the past 15 years…and this is a good thing. The installation process is as simple, straightforward and pleasant as it was the first time I worked through it. The Gentoo Handbook provides step-by-step instructions for installation, instructions that have been kept working and up-to-date, thanks to the maintainers’ hard work.

Gentoo Handbook for the x86_64 architecture (2007 [L] vs 2023 [R])

So what’s changed over all these years?

The Unified Extensible Firmware Interface (UEFI) standard seems to have become widely accepted, displacing the proprietary BIOS de facto standard. UEFI avoids relying on “boot sectors” to determine the system initialization code to be executed, instead using a “boot manager” application that reads from the “EFI System Partition” or ESP. Overall, this change seems to be for the better, although it has implications on the partitioning scheme (requiring a FAT32-formatted ESP) and bootloader (software such as GRUB, which works very differently today than it did in the early 2000s).

Partition management has evolved dramatically, moving us away from the Master Boot Record (MBR) and having us embrace the GUID Partition Table (GPT), a part of the UEFI standard. This is definitely an improvement; the MBR was rather clunky and severely limited the number of partitions one could create, whereas GPT is a straightforward replacement that lifts these limitations.

I will not say much about Logical Volume Management (LVM), which adds a software layer on top of any partitioning scheme. LVM is useful primarily for dynamic partition resizing and full disk encryption, and it remains as cryptic and inscrutable as ever. Since neither of these features really mattered to me, I carefully steered clear of LVM.

The core steps behind installing Gentoo have remained largely the same, starting with downloading a minimal version of a “live” operating system on a removable disk, booting into it, downloading a “Stage 3” archive of the Gentoo system, and chroot-ing into the installation environment. Optical disks are no longer in fashion, but bootable USB sticks are even easier to flash, and Internet download speeds are significantly faster than they used to be.

Compiling the Linux kernel was as simple as ever before (how challenging this is has always been a function of the degree of support provided by the hardware vendor). I didn’t have any trouble with my wireless device, Ethernet card, or graphics card (the usual suspects). Networking was straightforward, though I had to look up a couple of configurations to use WPA3 (the latest wireless authentication standard that the world is starting to adopt). Portage works the same as before, just a little easier – for instance, I no longer need to use revdep-rebuild to fix broken symlinks after cleaning up unneeded packages.

This time around, I added a touch of newfound minimalism to my system by installing i3, an extremely lightweight tiling window manager, in lieu of a more heavy-weight desktop environment. So far I’m loving it, and wish I had used it sooner.

That’s all for today, folks! 🖖