How to learn Linux

August 1, 2025

So you've thought to yourself, those annoying people yelling "I use Arch BTW!" might be onto something. Then you went to some forums, found out that you should install Gentoo if a program doesn't work on your system because that's how you learn! And the first thing you should type into the terminal is rm -rf /*, it's apparently really cool. Yeah. Right...? Actually no, you installed Kali Linux because you want to be an epic hacker. On bare metal. Without any idea about what is going on or how to progress. Also it's not "Linux" but GNU/Linux or GNU+Linux.

Maybe you're a Linux user already who has hit a wall and you don't know how to level up your skills further. You could have installed Linux From Scratch for all I know, but you still have a skill issue, why is that? The prerequisites for understanding this article is either experience with Linux or reading the previous article, Computers – Oversimplified. Let's start from the beginning.

What even is UNIX?

UNIX is a family of operating systems which derive from the original UNIX system, which got created a long time ago. Linux is a part of this family, just like MacOS. Surprised? Well, there were and are many derivatives, like BSD operating systems such as FreeBSD, OpenBSD, etc. Linux itself was inspired by Minix, but all UNIX systems function in a similar way. In an enterprise environment it's very common to run Oracle Solaris or IBM AIX on servers, with Linux too.

However, Linux itself is not an operating system. It's a monolithic kernel. Kernel is a piece of software which communicates with hardware and manages resources. There are a few types of kernels, Minix, which is Linux inspired by, uses a microkernel that functions in a slightly different way. But the point is that a kernel manages resources. This is why you get a bunch of angry Linux elitists when you say Linux instead of GNU/Linux. GNU is a collection of free software which is used together with Linux.

Okay, so why is all of this important?

Linux distributions (distros) come in many flavours and there are hundreds of them, what they have in common is that they use the Linux kernel. Most of them also use GNU, but some don't, Alpine Linux is one of the distros which doesn't use GNU. The only real requirement for a Linux distribution is the use of Linux as a kernel, everything else is optional.

From this point, I will refer to GNU/Linux as just Linux, in order to communicate in a more understandable way for newbies. The distro choice is endless, from beginner friendly distributions such as Linux Mint, to absolutely cursed abominations like Hannah Montana Linux, and yes, that does exist.

Since Linux is so customisable, the amount of choices might be overwhelming. There are a few clues you can use for deciding which one is the best choice for your use case.

The desktop experience

First and foremost, this is where you can go wild and let your imagination loose. Do you want the newest software? Pick a rolling release distribution. Or do you fancy a rather stable system with a slimmer chance of breaking after an update? Stable release it is then. Linux Mint is a cozy choice not just for beginners, but it's also a great replacement for Windows on your grandma's computer.

Well, you can even revive an old laptop of yours with some lightweight distributions, or make a cool setup which goes heavy on resources due to eye candy software. The choice is yours. Just pick a popular distro, it can be the upstream or a close derivative. Upstream is the "original" distribution, for example Debian, and its derivative is Ubuntu, Linux Mint is a derivative of Ubuntu and so on.

Over the years I talked to many Linux users and I usually split them into 3 categories depending on the skill level, *there are of course exceptions to this rule*. Users who use friendly distros with graphical user interfaces (GUI) such as Linux Mint are beginners. When they figure out the command line on Arch Linux or a similar distro, they become intermediate users. And finally, when they make a distribution their own, they end up using Gentoo Linux, making them advanced users.

Linux From Scratch, LFS, is a weird distribution which I don't take into account since the level of skill is various. If you follow the handbook, you can install it and then forget about it, the installation process is long but you're just following commands. It doesn't require deeper knowledge. On the other hand, if you use LFS as a daily driver, then I would consider you to be an advanced user. Maintaining a system such as Gentoo or LFS is the hard part, installing them isn't.

The server experience

This depends on the server in question, on enterprise servers you want to use Red Hat Linux or Oracle Linux, mainly due to the reason that they give you security patches for a bunch of years and the customer isn't too keen on constantly upgrading their software even when you nudge them.

For a homelab you want to focus on stable distros with stable releases, long term support too. Debian is a decent choice if you need compatibility with 32-bit binaries, if you don't need that, Alpine Linux is great.

Maintaining a server isn't simple, it requires weekly backups (or a mirroring disk) and a reboot every couple of months. If you don't reboot it for over a year, a lot of rubbish will accumulate on the system and cleaning it all up won't be so easy if it breaks. I don't recommend starting out with a server right away if you don't know how to harden it with CIS. At that point you need to know how to do everything through a command line because you will have to manage various services.

If a machine has over 10 terabytes of disk space, EXT4 might not serve as well as XFS, which is a more viable solution for a filesystem in that case. The partitioned disk/s should have logical volumes in case you wanted to add more space. Hardening with CIS is a must if it's a server in production, but it's good practice on homelabs nonetheless.

The humble beginnings

You've just installed your first distro, congratulations! What now? You looked around your new shiny operating system and everything presumably works. Hopefully. You can click on whatever you want in your desktop environment, with no need for the command line at all. A desktop environment is essentially a group of packages that provides a graphical user interface. Packages are bundles of files which can be installed on the system through a package manager. And this package manager, whichever it may be, pulls these packages from a software repository.

This is the big difference between Linux and Windows when it comes to software installation. You should only install software through a package manager, downloading files from websites is how you get infected with malware. By the way, Linux users telling you that you don't get malware on Linux is a lie which comes from misinformation. As long as you have a web browser, you can get infected. They often say that Linux isn't targeted as much as Windows because there are only a few Linux desktop users, however, this doesn't matter at all. The only difference between a Linux server and a Linux desktop is the GUI. It's the same thing.

We've talked about Linux being the core of your system, but a lot of mainstream distributions use systemd as a INIT system, INIT being the first process started during a system boot. It's a robust system which can do many things apart from managing services, it has built in additional features for configuring stuff such as networks. Now the question is, how do you interact with systemd from the command line?

The shell

You can probably find a command line on every Linux distribution, it does look scary at first, but isn't. A shell is a program which takes the input, commands, and gives them to the operating system. It's how you communicate with it.

There are a couple of shells, Bash being the most popular one, then there's Zsh, ash, fish, etc. These shells adhere to the Portable Operating System Interface (POSIX), to what extent that is depends on multiple factors. POSIX is a family of standards used for maintaining software compatibility between UNIX systems. That's why other UNIX systems have similar commands to the ones you find on Linux.

In fact, the commands which you type aren't really commands, they're programs. And they're well documented in Manpages. You can start with doing regular tasks through a command line instead of clicking, like moving files, renaming them, changing permissions for them and so on. Then you can create custom shell scripts for automation and systemd files for services. But for writing scripts, you'll need a text editor, a nice one for a smooth start is Micro. It has regular keybinds that you're used to.

The fun stuff

After you've successfully played around with commands, it's time to understand how your hardware works on a operating system level. This means you should research how your disk is partitioned, the various filesystems – EXT4, BTRFS, XFS... And you should look into LVM, disk encryption with LUKS, snapshotting. Some filesystems are quite peculiar and can cause a headache if you don't know their limitations. Let's take FAT32 as an example. If you have a machine running Windows, you might want to have a USB stick which is compatible with both operating systems. However, as soon as you try to put a file bigger than 4GiB onto it, it will fail. Why is that? Well, FAT32 doesn't permit files bigger than 4GiB.

Arch Wiki is the greatest wiki about pretty much anything on common distributions. Common as in they have Linux with GNU tools and systemd. When you need to research something less popular, Gentoo Wiki is your best bet.

Don't forget to look into various bootloaders like GRUB, Syslinux, and systemd boot. These will be needed in the next step which is switching to Arch Linux. Disk partitioning tends to be the filter for Arch, mostly because mounting directories is an unknown concept to beginners. What you need to realise is that everything on your system is a file, even directories. So, you're putting files into directories on a disk, and this structure is located on a disk partition.

Going to the intermediate level

At this point the Arch installation should be a breeze, always install Arch manually because you're doing it to learn as much as you can. For the final bootloader part at the time of writing this, Gentoo Wiki documents it in a better way for Legacy BIOS computers and UEFI.

There are some pitfalls if you use older hardware, it might seem like a good idea to put a bunch of SWAP on a hard disk, but in reality the disk will use SWAP even when you have plenty of RAM. This in return makes the operating system (OS) so slow, that going completely SWAP-less is a more viable option. Another thing which is extremely important is to never reinstall the system if it breaks. *Reinstalling it doesn't solve your problem, it only makes you avoid it and you don't learn from it.* Constant distro-hopping isn't good either since you aren't learning how to maintain a system over longer periods of time.

After the installation and your wonderful rice (rice means making your desktop pretty or unique), you should go into learning how to maintain your system. Arch is a rolling release distribution, if you don't update it for a month or so, the system update will fail. All you have to do is to download the archlinux–keyring first and the update will run without issues.

Create some hooks for managing paccache, make automated tasks through Anacron, cron jobs can be quite useful. Debloat your system, there are plenty of choices you can make even with something simple as a program for networking. Some prefer Network Manager, some Conman. There is an optional path of installing a window manager and replacing your desktop manager with it. It's more lightweight and it gives you custom keybinds.

From this point you can explore other distributions which have different programs that you're not used to. There are different INIT systems like OpenRC and runit. You should also make yourself comfortable with compiling packages from the Arch User Repository (AUR). Experiment with other architectures besides x86, try out Raspberry Pi and other microcontrollers and set up a home server. You can host anything you'd like, from a personal website, DNS server, email server to custom file sharing and so on.

The path to insanity

You have done all of that but you still crave more. This is a deep rabbit hole which is seemingly never ending. Install Gentoo. There is no way back. Now you have issues you haven't thought about before. You found out that there are federal agents in your CPU, *wink wink*, Intel Management Engine. You need to get an old ThinkPad, Libreboot it to free yourself. Now you need a system which is free as in freedom, you set up global flags for licences, which prohibit the installation of proprietary blobs.

Some time passes, you realised that compiling Chromium should be a crime due to how much carbon dioxide it produces. All roads lead deeper into the woods. Your phone is spying on you, installing a custom ROM such as LineageOS wasn't enough, you ended up switching to a dumbphone. It takes you hours upon hours to recompile your system in order to perfect it, and then it dies when you wanted to enable 32-bit support. It's more demanding than a child, but you're alone in a cabin where you moved.

It's not enough. Your phone is still spying on you because of triangulation. Compiling the kernel drives you mad, rust takes too long to compile on a ThinkPad from the 2000's. And then it all clicks together. This entire time you were running away from Microsoft, which is one of the companies that pours money into the development of Linux. They are making it worse, together with other corporations. You were never free. Everything you went through never pulled you away from Microsoft. You sit in silence, thinking about installing FreeBSD or OpenBSD instead because Linux sucks. There is a lingering thought which is chewing up your mind. Was all of this pointless all along?

Conclusion

Just install Linux Mint and you'll figure it out.