A Linux Primer: What to Know & Where To Start

Note: This is not a technical blog. I won’t get into commands or applications that help you get stuff done in Linux. Instead, I’ll give you a good lay of the land for Linux. I’ll also give you some resources, so you can dig into those technical details later.

If I described my relationship with Linux in one word, it would be “Curiosity”. Linux allows me to be curious about the details of everything an operating system does. It’s an operating system that embraces the power of the command line, and the more you grow your knowledge of Linux, the more you can manipulate it to fit your exact computing needs. If you’re curious, want to tinker, and want to learn more about operating systems, then I think you’ll love Linux. (I’ll talk about how to tinker in a sandbox so you don’t have to mess with your current setup.)

Linux Compared to macOS

From a UI/looks perspective, Linux and macOS will look very different. Also, Linux lacks the Apple ecosystem like iTunes and iPhoto. But despite these differences, Linux and macOS have several similarities internally. Linux and macOS are sort of cousins; they branch off from the original Unix operating system. macOS gets its roots from BSD, a commercial variant of Unix made at UC-Berkeley. Linux is a Unix inspired operating system, originally created as a hobby project.

Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX and Single UNIX Specification compliance. - Linux kernel release notes

Some other similarities between macOS and Linux include:

  • Due to their Unix background, they have a similar filesystem structure/hierarchy
  • Both default to using Bash as their command line application
  • MacOS has the App Store & homebrew, i.e. a central application for installing and removing software. Linux has the same in the form of package managers.
  • There’s even a Linux distribution that looks similar to macOS called elementaryOS.

Linux Compared to Windows

Windows is drastically different from Linux. There are no A-Z drives on Linux; Linux is structured as a tree, sort of like a website. The top folder is /, and everything branches down from there, e.g. the users’ home directories are located in /home, and user alex is located at /home/alex. In Windows, applications usually end in .exe. In Linux, file extensions don’t really matter; it figures it out from the file itself. Even if you have used the Windows command line, there will be big differences between it and the Linux command line.

I first tried to move to Linux, from Windows in 2007, and the vast difference made the switch tough. Some similarities between Windows and Linux include:

  • They both have folders?
  • Sometimes they both have start menus. 😅

What sets Linux apart from macOS and Windows?

Linux is Open Source

Open source software means that the original code is available to look at and encouraged to be improved by the community. The Linux kernel and most of Linux software is Open Source. If you want to see the internals of the Linux Kernel before it’s compiled into binary, you can. I like open source projects because I can fulfill my curiosity by seeing how it works. I can even submit changes to the projects and be considered a contributor. Think about how cool it would be to have code you wrote running on thousands of machines around the world!

Both Windows and macOS are close sourced and maintained by a single company.

Linux is Fully Customizable

Everything about the Linux operating system is fully customizable, and I mean everything. If you want to roll your own Linux kernel, then you can add to it, remove some of it, and recompile it. If you do so, then the Best of Luck, Godspeed, and here’s a guide.

On my own Linux, I have customized the Desktop Environment, command line application, file manager, login manager, network manager, and on and on. That’s what’s cool about Linux: by being fully customizable, I have been able to tweak my Linux, and along the way, I have gained a better idea of all of the pieces that make up what we think of as an “operating system”. I also have an OS that fits my needs.

Linux is Free

Linux is free to use, free as in beer. There’s no 30-day demo. You download an ISO of the Linux that you want, install it, and you have a full-fledged operating system.

So What is Linux?

Linux usually means two different things to different people.

Linux really means the Linux kernel itself. The kernel is what communicates with the hardware, manages processes, memory and all that jazz.

But, when most people talk about Linux, they really mean a Linux distribution. A Linux distribution is simply the Kernel packaged with a Desktop Environment, additional software like a file manager, network manager, and all the other stuff that you expect your computer to be able to have and do (Theres more to a distro than that, but for now that’s what matters). Ubuntu is the most commonly known Linux distribution. It’s easy to distinguish from other Linux distributions by its UI.

Distributions Galore

Because of Linux’s customizability, there are hundreds of different Linux distributions created for broad and specific needs. In fact, DistroWatch.com keeps track of 834 distributions, some differing only slightly from others.

Most distributions branch from a few major distributions: Debian, Slackware, and Red Hat. Here’s a tree of the major distros and their descendants.

Linux Mint, as an example, is based off of Ubuntu. Ubuntu is based off of Debian. When a new Linux kernel is released, Debian takes it and makes changes to it. They release their own version along with some other software to go with the distribution.

Ubuntu then takes Debian, make modifications of its own, and releases that. Mint will do more of the same. Because Ubuntu is such a large and reliable project, Mint builds from a solid distribution and mostly focuses on simplifying the installation process (coming with audio/video codecs by default that Ubuntu does not have on a clean install) and UI aspects like Caja, a file manager, and Cinnamon, a desktop environment.

Common Desktop Environments

A desktop environment is a complete GUI, bundling common GUI pieces like icons, toolbars and default applications and utilities. Most distros use the same major Desktop Environments: Gnome, KDE, Mate, Cinnamon, xfce, and LXDE.

Some distros like Ubuntu have created their own. Ubuntu comes with Unity by default, but you can also download an alternative version of Ubuntu that defaults to another desktop environment. My preferred Ubuntu install is Ubuntu Mate.

Some, like Arch Linux, do not come with a desktop environment at all. When you boot up Arch, it will start you at a command line interface.

Package managers

Most distributions come with a package manager that serves as the central source for installing and removing software. The common package managers are apt, yum, and pacman. To the everyday person, not much differs from each package manager aside from the command names. You can read more about each package managers’ commands here.

When starting off, the command line package managers can be intimidating. Thankfully, many of the distros come with a Software Center that wraps the package manager in a GUI.

Ubuntu Software Center

Trying out Linux

The easiest way to try out Linux is inside of a virtual machine like VirtualBox. It allows you to play around without affecting your current operating system. You can create several different virtual machines for several different distributions if you like, and delete them as you please.

When I made the switch to Linux from Mac, I eased into it with a virtual machine. It’s tough to go directly from one to the other, but I was able to make the transition by slowly depending on Linux. I started off by using Linux to run Google Chrome. Then, I started using Linux for development. After a while, I was using Linux more than macOS, so I decided to partition my hard drive and dual boot both Linux & macOS.

Using a virtual machine made trying out Linux and switching painless.

Linux Isn’t For Everyone

I love Linux, but I’ve heard from many Linux users, including my college professors that Linux is the “best” operating system. That’s just silly. You can take pretty much any “X is the best Y” opinion and throw it out. It’s never that simple. Operating systems are built with specific audiences in mind. The Linux audience is going to be very different from the Windows audience. The typical Windows or even Mac user won’t need to or want to use the command line, and that’s not a bad thing.

Even for developers, it’s not so black and white. The majority of professional developers and employers that I’ve seen use a Mac. For an employer, anything inconsistent among developers can be a major headache. When you buy a MacBook Pro for your employees, you know that it’s going to have the same OS on the same hardware. In this situation, Linux’s diverse landscape can be a reason it’s not used in a lot of workplaces.

Linux Doesn’t Have Everything

Linux won’t meet everyone’s needs or wants. Here are some things lacking in Linux that can hold people back from using Linux full-time. Some of these reasons are part of why it took me 7 whopping years from dabbling with Linux to fully adopting it:

  • Major video game support - Linux gaming is getting much better thanks to Steam, but it still lacks support for many of the high end games.
  • iTunes and other Apple software - Apple does not port their software to Linux, so if you need iTunes for your phone or music, this may be a stopper. There are alternative music players, but iPhone support is painful in most (I believe all?) of them.
  • Photoshop and other Designer Software - The Adobe Suite does not have a Linux version. Again, there are alternatives like GIMP, but they’re nowhere close to the level of Photoshop and the others.
  • Support like Apple Support - Apple is well known for their fantastic support. Unfortunately, the support on Linux is StackOverflow and hopefully a great wiki for the Linux distribution. Ubuntu and Arch both have great wikis that can be helpful for many other distributions.

Next Actions

  1. Install VirtualBox: When installed, create a Virtual Machine, using the default options. Here’s a decent tutorial on installing Linux in a VirtualBox.
  2. Download a Linux ISO: My recommendations are Linux Mint or Ubuntu Mate.

Give Linux a try and see what you think. I’d love to hear your thoughts, so feel free to tweet me at @alexcameron89.

alex

About Alex Kitchens

I am a principal software engineer at Stitch Fix working remotely from Amarillo, TX. Talk to me about anything Rails, Ruby, Rust, or coffee.