Let us continue on our path to Linux Mountain, atop which Linux Fairies make Linux Cookies. Or something.
Last time we were looking pretty generally at the lay of the land, the filesystem of a Linux box. Today we will talk about what on earth a Linux Distribution actually means, and how the world of Linux is completely different from Windows and Apple land.
I mentioned last time that Linux was only the kernel, like Windows 7 runs the NT kernel. However, an OS is much more than that — you need the GUI, utilities, tools, and of course games. As the PC Gaming Master Race™ it is upto us to figure out how all of these things sit together so that we may take full advantage of our hardware. In Windows, you have companies like Adobe or Microsoft making “products” for you to buy. In Linux, you have “foundations” or “groups” making “tools” and “libraries” for you to use. This results in a very different software ecosystem in the Linux world.
Sitting immediately on top of the Linux kernel is a bunch of software, mostly written by the GNU foundation1. This is why Linux is more accurately called “GNU/Linux” because most of the software you actually use is by GNU. A few other large groups which write software for Linux are Apache and Mozilla. A huge amount of software is also written by lone programmers or small teams. All of these small teams and large teams release code that is freely available on the internet.
This “freely available code on the internet” part is important, but often glazed over by newbie tutorials. The proper term is “free software”, where “free” means freedom instead of no money2. What this means is that, in theory, all the software on your PC is under your control. This means that from the nuts and bolts all the way to the colour of your windows, you can change literally anything3. By “you” here I really mean “the internet”, and what this means is that if there’s a feature or tool you want then someone on the internet has probably written some code for it, somewhere. If you think something is bloated, for example, then someone, somewhere, has written a lightweight version of it. What this means is that you can run a lean, mean, gaming machine.
But “freely available code” does not result in a USB stick you can install from or an OS you can boot. You need a fair bit of cohesion and organisation to result in a fully working system. This comes in the form of a “linux distribution”, or “distro” for short. A distro will package up all this freely available code into freely available stuff you can install on your system. A huge amount of a distro’s job is this packaging and package management, but many also come with specialised software4, some of it “non-free” (meaning you can’t do what you like with it).
Some distros are based off of other distros, which means they add features or utilities or maybe just quality to their base distros. Believe it or not, there are hundreds of distros out there, but most of them derive from three major families:
.rpmextension) to install packages on your system, and tools like
yumto manage package dependencies. Since we’re gamers, this is of little interest to us.
tar.gzfiles (which are basically
.zipfiles) for package management. Despite being lightweight, slackware package management can get a little hairy, so we’ll avoid this.
apt-get. They use
.debfiles for debian packages. However, they are fairly heavy on the “freedom” stuff, it’s (slightly) harder to get non-free things for Debian. For these reasons (and the fact that it is a little bit slower to get the newest stuff), it is one of the most derived from distros. Ubuntu is one of the world’s most popular distros, and it derives from Debian. Linux Mint then derives from Ubuntu. I’d highly recommend Ubuntu and Mint, and if you don’t mind a slightly bumpier ride, Debian is well worth the effort.
You might be wondering about “dependency management” tools like
apt-get, and why they’re important. This comes back to the “wads of code on the internet” idea. Instead of writing a fully fledged piece of software, in Linux-land, someone will often write a library to do some simple thing, like Audio or laying out windows, and someone will write some software to pull it all together into a simple application. The application then “depends” on the libraries which it uses, and many applications tend to use the same libraries. Libraries are a bit like
DLLs but simpler.
In order to manage all this “stuff which depends on other stuff”, making sure everything that’s needed gets installed, and everything that is no longer needed gets uninstalled, many distros offer a dependency management system. What this means in practise is that you choose whatever application you want to install (or remove), and it figures out how to do that for you. In the command line you’ll type something like
apt-get install someawesomegame, or on the GUI select Some Awesome Game and click install, and it just works5. It also means you never accrue cruft or bloat on your Linux system!
In Linux (and all Unixes), everything is a file. That is, whenever communicating with any device on your system, the program will, under the hood, likely be communicating with files to read mouse movements or draw to the video card (they’re not real files, they’re virtual, see the previous article). For obscure reasons, the network doesn’t work that way. Instead, every distro has their own way of dealing with networks. By today, this shouldn’t matter because GUIs handle this stuff perfectly, but keep in mind that you will find a device for everything on your system but not for your network cards. Similarly with Bluetooth.
So that covers distributions! Hopefully now you’ll know what to install on your system, and what you’re looking at when you get there. Next up, I’ll talk about processes and services on your system and what they do.
1 In fact, the “g” at the beginning of many Linux programs actually stands for “GNU”.
2 In fact, some people call it “libre software” because the “freedom” meaning is clearer.
3 This isn’t quite true. In the Linux Kernel, for example, there are many binary “blobs”, which are drivers where the code is unknown. This is mostly done by companies who don’t wish to release their IP. These drivers are often badly integrated into a Linux system and will tend to have issues, especially with newer features. The NVidia and AMD video card drivers are binary-only. Many games also don’t make source code available, but while sometimes annoying, this is of lesser concern.
4 You could even consider Android a Linux distribution.
5 Really, it just works. 15 odd years ago there were problems with this system, and you can still get into trouble, but you’d be well into the “I know what I'm doing” territory. Remember the whole “you control your whole system”? That’s enough rope to hang yourself with!