Gentoo is an operating system based on the Linux kernel that is known for being 'difficult' and 'time-consuming.' Many people do not see the appeal of using something like Gentoo, but there are a few neat things that it offers unseen in other systems.
The main thing that sets Gentoo apart from the other distrobutions is that all the programs you run are compiled from source.
What does this mean?
When you install programs on the internet, no matter if it's an exe, jar, deb, all of it is produced in roughly the same way. The application providers compile the source code and the resulting output is an executable, which is just the computer readable version of the app. Then the executable is uploaded to a hosting server and downloadable by any user. This is convenient since often the executable is produced with all machine types and features in mind, so it's a one-step process. However, if you want an application better optimized for your needs, this is where compiling from source comes in.
What is compiling from source?
Compiling from source is when you compile the source code yourself, which leads to more control over the programs you install. On Gentoo you can set compile time flags (USE flags) per package/systemwide and this leads to adding/removing features which lead to more/less dependencies. For example, if you want to compile the terminal rxvt-unicode with truecolor support, just enable the 24-bit-color
USE flag, and then when you install rxvt-unicode it will come with truecolor support. If you want to disable bluetooth systemwide, just add the -bluetooth
USE flag to /etc/portage/make.conf
and every program will come without bluetooth.
Now that I've given a quick rundown on how things are compiled on Gentoo, I would like to talk about its package manager, Portage. Portage is directly responsible for all the flexibility that Gentoo provides users. Some benefits of Portage are:
- USE Flags allow you to strip or add features
- Portage has multiple versions available for packages, meaning that if you want to use an older/newer version of a package, you can certainly do so
- For larger applications like
firefox or languages like
rust, there are binary versions provided for users that don't want to compile heavy programs.
- Support of different branches, if you want the most stable packages, you can stay on the stable branch. However, if you want the newest, you can use the testing branch
- Portage allows for multiple versions of the same package to coexist on a system, this is called slotting.
- Tools like
etc-update that provide an interactive environment for modifying configuration files on a whim.
- Portage hooks, which allow you to run certain commands after executing a method. They’re useful for automating things like kernel upgrades.
- Portage gives you the freedom to change anything at the source level with little effort, if there is a bug it can easily be patched and if it doesn't work, easily reverted.
By using Gentoo, you get to learn more about the inner workings of a system and how to fix it. One of the more common things in Gentoo is customizing the kernel, which probably won't work the first try. By compiling your own kernel, you learn about your hardware, like the specific drivers that your sound card uses, or if your CPU supports hyper-threading, etc. It also teaches you about how to fix your system. You received a Kernel panic telling you that your kernel couldn't mount your root fs? Well, probably an issue with your fstab or not compiling the filesystem modules in your kernel. The Gentoo forums are full of answers and information about almost anything that you could want. The wiki provides a lot of documentation for things like the install process, or about packages and their USE flags. These two things make it easy to learn about some nuances that aren't as accessible to other people.
Once Gentoo is configured properly, there is a very low chance of breaking the system, and you don't have to worry about it. You do the weekly sync of repositories and upgrade the packages, and you're set. What's better is that when doing updates, you can just minimize your terminal while it compiles. Then you can resume your old activities, making it very painless.
The time required for setting up the system can be long. If it's your first manual install, learning about swap, boot, and root partitions and configuring things like your fstab file can be daunting. After all, this can cause you not being able to boot into your system. If you choose to build your own kernel, customizing the kernel is extremely overbearing with the amount of options present and with the high possibility of things not working for the first time.
While the source-based aspect of Gentoo is what makes it great, it can also be a con for others. Because of hardware limitations like only having a duo core CPU, which will cause longer times when compiling larger software or the kernel. This may be a large turn off for many people that have time constraints and need a certain piece of software asap.
When setting things up, issues may arise with dependencies or other things that require you to fix it.
Overall, I think Gentoo is a great operating system that allows for the most flexibility and customization without making it unbearably painful (Linux from Scratch). It allows you to have almost complete control of your computer, and it's a great learning experience. After getting through the hurdle of setting up the system, it is as stable as it can get and it will require little maintenance. However, it isn't a good pick for a user that doesn't care about customization and wants something that "just works".