Home Articles Categories Series
Pythonise Just now
Recommended learning

A gentle introduction to Linux | Learning Linux Pt. 2

Covering some familiar and not so familiar terms, phrases and principles related to Linux, Unix, POSIX, Bash, GNU & more


Article Posted on by in Linux
Julian Nash · 8 months ago in Linux

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

GNU logo

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".

From Wikipedia:

"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 logo

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.

Bash shell

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:

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.

Desktop

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.

Ubuntu 18.04 desktop

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.

Wrapping up

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!

Further reading

Last modified · 27 Mar 2019
Did you find this article useful?
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
Contents
Loading...