John Jago

Learn Linux the hard way

New year, new Linux distro

This year, I’m trying out Arch Linux as the only operating system on my computer. Previously, I used Windows, various flavors of Ubuntu, then Debian for quite some time. In fact, I think I had Debian for longer than any other Linux distro, maybe two or three years. I liked Debian because it could be installed without a desktop environment. I use dwm to manage windows on the screen, and that’s about all I need. It’s nice to be able to start from a clean slate and install only what you need.

On the other hand, I didn’t like Debian because the packages in its “stable” repository were always outdated. The newest version of Chrome, out of beta, is considered stable by Google and most other people. For Debian, stable means ten versions old. It was always a hassle because installing anything meant first adding the thing’s own APT repository.

Debian is good. It’s stripped of all the bloat that comes in the various flavors of Ubuntu, and you can even install it without a desktop environment.

What’s the next step after that?

I think it’s Arch Linux. Of course, you could probably take it a step further with Void or Alpine, but the problem with those, for people who are trying to learn, is the size of the community compared to Arch. Arch Linux probably has the best documentation of any Linux distribution. It’s almost as if ArchWiki has become a reference for any kind of Linux. Like anything, you want it to be hard but not too hard, otherwise you’ll struggle to learn.

Here’s why using Arch as a daily driver is the most effective way to learn about Linux.

Force yourself to learn

The main idea is that you’ll run into situations where you’re forced to learn how to do something. You’ll run into these often enough to keep it interesting, but not so much that it becomes unproductive.

Starting with the install, if you’ve always used a guided install on some other Linux, it was probably easy to click through the screens and get Linux installed. All you have to know is how to click “Next”. Not much to learn there. With Arch, there is no guided installer (well, I’m sure someone has made one, but you shouldn’t use it). When you partition the disk, you’ll have to get a basic understanding of what’s going on to make it through. At the very least, you’ll know that there is often a separate boot partition, a detail which is often obscured by graphical installers. Even if they do show it, it’s easy enough to skip past and not think about it.

When you need to set the keyboard layout, you’ll edit a file. You’ll edit a lot of files to configure an Arch install. Behind the scenes, this is pretty much how Linux actually works. Did you know you can change your laptop’s screen brightness by writing a number to a file? Graphical tools that you would find in Ubuntu to do things like connect to Wi-Fi are just another layer on top of what Linux can already do. You can do everything without them, and often faster after you become familiar with the terminal commands. For example, I can change my sound volume and screen brightness, connect to Wi-Fi, and much more, all without taking my hands off the home row. After a while, it feels so slow to use a mouse to move around and click on things.

What’s in a Linux?

Arch doesn’t come with a lot of tools that you can find in Ubuntu. For example, I believe curl will work in an Ubuntu terminal. Try that in a fresh install of Arch, and you’ll find out that it’s not there. This helps you get a sense for what is part of Linux and what is not. What you might think of as a “Linux” command might in reality be a program that has nothing to do with Linux, and can run on BSD or macOS.

You must use it daily

Noticed how I said that using it as a daily driver is the most effective way to learn. If using Arch is something you do as a hobby once a week for a couple hours, you won’t run into enough situations where you can learn something practical about Linux. The most useful things to learn are the ones that actually affect your daily work because what you learn will be put to use over and over.

Without using Arch for your daily tasks, there are fewer opportunities where you get forced into a new situation. I use macOS for work, but for everything else it’s Arch. If you can Arch for work too, then you’ll surely learn Linux in no time.

Reading a book about Linux is probably the worst thing you could do. Spare yourself the time, install Arch today, and use the tasks you already do to guide your learning. Use it so much that you find something which doesn’t work, and perhaps implement it yourself and send in a patch.

What Arch Linux really teaches you

Why bother with Arch at all when you could just use macOS or Windows? What’s the point in learning how to connect to Wi-Fi, when the end result is something that you could already do through a graphical tool?

Learning how to connect to Wi-Fi by editing files is not the end goal. Sure, it’s a nice party trick, but the real reason why it’s worth it, if you have any interest in computers, is that it teaches you how to be resourceful and figure things out. It teaches you how to solve problems involving computers, which, if you’re working as a developer or are in a similar profession, is a valuable skill to improve upon.