In this part of the Learning Linux series, we're going to do a quick introduction to a few key principles including the Linux kernel, Unix, POSIX, GNU, Bash and Linux distributions.
Note - This is meant to be a very high level and gentle introduction to Linux and many of the Linux related concepts. Links to detailed articles will be provided for further reading at the end of the guide!
What is Linux
Linux is a family of open source operating systems (often referred to as distributions) based on the Linux kernel, a Unix-like operating system kernel that handles many of the low level processes and operations of a computer, such as scheduling processes, CPU instructions, managing memory, networking and drivers to name a few.
What is the Linux kernel
The kernel sits at the very heart of a Linux operating system in an area known as the "Kernel space" and is responsible for managing the low level processes and operations of the system.
By low level, I'm referring to things such as:
- Process scheduling subsystem - Assigning work to resources
- Inter-process communication subsystem - Managing shared data across processes
- Memory management subsystem - Managing the system memory
- Virtual files subsystem - Managing the file system
- Network subsystem - Various networking management processes & protocols
Along with lots of other highly important processes including logical volume management, device mapping, security, drivers etc.
What is Unix
Unix is a family of multi-taking, multi-user operating systems, characterized by a modular design that require a certain set of tools & principles.
Unix systems should include:
- A set of limited, well defined functions that do something very well
- A unified filesystem (The Unix filesystem)
- A shell & scripting language (The Unix shell)
A Unix operating system consists of many libraries and utilities along with the kernel, which provides services to start and stop programs, handles the file system and other common low level tasks that programs share.
What is POSIX
POSIX is a family of IEEE standards, designed to facilitate application portability and create a unified version of Unix and maintain compatibility across platforms.
The main goal of POSIX is to make it easier to port applications and software between hardware platforms, meaning if an application is designed, built and tested on one POSIX system, it should work on another.
What is GNU
Just to confuse you a little more, GNU stands for "GNU's not Unix" and is a free, Unix-like operating system and suite of software & tools, often used in combination with the Linux kernel to make up what's called "GNU/Linux".
GNU also has its own kernel called "The Hurd" which has been in development from 1990, however you'll rarely see this is mainstream or commercial use.
GNU's philosophy is all about freedom and free software (often referred to as "libre software"), pushing the free software movement and advocating for users to control the software, rather than vice versa.
Here's a quote I like from the GNU philosophy:
"Freedom means having control over your own life. If you use a program to carry out activities in your life, your freedom depends on your having control over the program. You deserve to have control over the programs you use, and all the more so when you use them for something important in your life."
The Linux kernel itself doesn't make up the operating system and many Linux distributions use and heavily rely on the huge set of GNU software and tools, including bash, gcc, gzip, grep, wget, tar, & fdisk to name just a few.
If you've never heard of any of these programs, don't worry! We'll cover many of them throughout this series.
The last thing I should touch on here is the naming controversy between Linux and "GNU/Linux".
"Proponents of the term Linux argue that it is far more commonly used by the public and media, and that it serves as a generic term for systems that combine that kernel with software from multiple other sources".
"Proponents of the term GNU/Linux note that GNU alone would be just as good a name for GNU variants which combine the GNU operating system software with software from other sources. GNU/Linux is a term promoted by the Free Software Foundation (FSF) and its founder Richard Stallman".
To get a better understanding of the relationship and history between GNU and Linux, I highly recommend reading the "History" section of the "GNU/Linux naming controversy" linked at the bottom of this page.
We'll be using the term "Linux" throughout this series for no other reason than it's quicker and easier to type!
What is Bash
Bash, also known as the "Bourne again shell" is a Unix shell & programming language, part of the GNU software suite and the default shell for most Linux distributions (And Apple's Mac OS!). It's a command processor that takes user input in the form of commands and does what we tell it to do.
We'll cover Bash in more detail in a future guide where you'll be using it to interact with your machine. It runs in a text based window where a user can navigate & manipulate files, execute commands, run scripts & much much more.
What is a Linux distribution
The last things we're going to cover here are Linux distributions; operating systems that combine many of the GNU software and tools with the Linux kernel, along with various other programs and software that make up an operating system.
Distributions or "Distros" as they're commonly referred to are often a hot topic amongst Linux users and are typically chosen based on use case, environment, functionality & aestetics.
Linux distributions are used on personal computers, servers and enterprise level hardware, varying in functionality & features and are often chosen based on their application and purpose.
Having such a wide variety to choose from might sound like a great thing, however I personally think it's a double edged sword and the main reason why Linux hasn't taken over the consumer desktop market.
Before I go off on a tangent, let's take a look at some of the most common distributions and their popular use cases.
Server and enterprise
Linux holds a large share of the server market and you'll find many distributions designed specifically to be used in a server environment, some of which are free and some are paid for, including support packages for mission critical and enterprise applications.
These server oriented distributions typically share the same Linux kernel or run a specific fork/branch and don't tend to include software designed for desktop usage, such as graphical user interfaces, window managers & certain software that's meant to be used with a dedicated monitor and mouse!
Some of the popular Linux server oriented distributions include:
- Ubuntu server (Free)
- Red Hat Enterprise Linux (Paid)
- SUSE Linux Enterprise (Paid)
- CentOS (Free)
- Debian (Free)
If you're just starting out with Linux, I'd suggest Ubuntu as a great starting point. It's got a great community, plenty of documentation, it's very user friendly and will be a good platform for learning on.
If you've used any kind of technology within the last 15 years, I'm confident that you'll feel right at home experimenting with a Linux distribution using one as your daily driver.
The year of the Linux desktop is approaching fast as more and more people want to free themselves from the mainstream offerings. And whilst earlier I mentioned there's definitely room for improvement on the Linux desktop side of things, you'll find some incredible distributions that offer the same kind of functionality as any Windows or Mac machine, coupled with an enormous range of free and open source software to rival any paid alternative.
Ubuntu distributions come in many flavours and you should think about what kinds of features you're looking for on a desktop operating system, give them a test run in a virtual machine and experiment to see what you like. Did I mention they are all free too?
Some popular desktop distros include:
Any of the above desktop distros are a great choice for learners, with the exception of Arch which is more focused towards advanced users.
This short article was designed to be a very gentle introduction to Linux and to familiarize you with some of the common terms and concepts you'll come across.
I'd highly recommend getting yourself setup with a Linux box, either in a virtual machine or installed on an old PC.
Get experimenting and have some fun!