Learning Linux, information and tutorial for newbies.

This is a simple introduction to Linux for those who’ve never used it before but might need to quickly catch up on it for whatever reason, without jumping straight to it. This post is anything but a comprehensive guide to everything Linux, but it should serve as a good starting point for anyone that needs to learn it.

It may be for class, it may be to review some interview questions, it may be that you heard that Linux is better for hacking or networking or software development or what have you. Whatever your reason may be to learn Linux, it is still a worthwhile pursuit because, if nothing else, it may give you a deeper appreciation for your computer and introduce you to the wonderful world of Open Source software.

What is Linux?

When people use the term Linux in casual conversation, what they’re referring to is a set of Operating Systems that use what is known as “the Linux kernel”. A kernel is a core component in any operating system, like Microsoft Windows, Apple’s macOS and even Android and iOS, that actually talks to the hardware on behalf of all the programs installed on your computer. For example, if Firefox wants to save messages on your phone, it has to talk to the kernel, which will command the hard disk to save whatever it will send it down the line.

You may have heard of “Ubuntu Linux” or “RedHat” or “Arch” or “Kali Linux” and other such terms. These are simply the operating systems, like Windows or macOS, that can be installed on your computer and are built with the Linux kernel. They also have a set of common system programs (or utilities) and user software that is available to they are often lumped together as “Linux based Operating Systems”, or “Linux System”. Technically they derive from the GNU Operating System, which itself was a clone of the UNIX OS. This is why Linux is sometimes called GNU/Linux or GNU+Linux. Only thing is, unlike UNIX, GNU/Linux is open source.

What Open Source means.

Consider the following C program.

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main() {
    printf("Rolling dice...\n");
    printf("%d\n", rand() % 6 + 1);

It is a very simple program to simulate a die roll. It just pulls out a random number from 1 to 6 and displays it. That’s all it does. Now I’ve included the source code here, but it could easily have been hosted somewhere like github or wherever, like many Open Source projects are. For example, the Linux Kernel, systemd, VLC, and many others are.

What Open Source means is that you can view the source code, that is the actual raw material of the program, and make changes to it as you see fit. For example, the die roll above could be modified to simulate two dice.

Similarly, if you know how to write software, you can make changes to the Linux Kernel or really any other software in a Linux system if you feel you need to, and then you can create your own version of it and give it to people (as long as you provide the source code) or better yet, ask the original developers to pull in your changes as a way of contributing back to the project.

The result of the software being free in this manner is that there are a lot of different kinds of Linux OSes, and different alternatives to even the most internal aspects of the OS. The best example being that if you don’t like the default user interface provided by a Linux OS, then you can very easily change it to something completely different.

“Distros”, the many flavours of Linux.

The entire source code for most Linux based OSes is available online. You can download and modify and run your own version of it if you like. So that is what people have done with these OSes. People have got together and made a different version of an existing Operating System, and distributed that. People could also provide two different versions of the same Operating System, that is more suited for a particular type of user.

These reasons and many others are why there are so many different flavours of Linux OSes out there. You may have heard of Ubuntu, Kali, Arch Linux, Fedora, CentOS, RedHat, etc. All of these are Operating Systems that use the Linux kernel and have the same basic architecture, interface and command line. They also use a lot of the same tools. However, more advanced users will eventually find that there are some serious differences between these operating systems. The basic “family tree” of Linux OSes, based on who derived from whom is given below:

Screenshot from 2017-06-14 01-31-40

Linux “Family Tree”

The image above shows, that Kali Linux and Ubuntu are based on Debian GNU/Linux. ElementaryOS and Linux Mint are based on Ubuntu. Meanwhile, Fedora and CentOS are different versions of RedHat. Similarily, SUSE Linux has a SLES version, and based on that they have openSUSE.

All of the above are different Operating Systems which are based on the GNU/Linux (i.e. the GNU OS with the Linux kernel).

If a user finds, say, Debian a little too technical and advanced, they can use Ubuntu, which is a more user-friendly, desktop distribution based on Debian.

How one installs these operating systems will be covered in a future blog post. I do not actually recommend doing so on your main computer. If you have a spare laptop lying around that isn’t being used, you should use that or install it in a Virtual Machine using VirtualBox.

Linux is not Windows

If you’re using Linux (and maybe you’ve already installed it), you should remember that Linux is completely different from Windows. macOS users might find Linux more familiar, since there’s plenty of similarities between them. However, if one is coming from a Windows background, Linux can be a little more difficult to grasp. There is no C:, D: or E: drive. There is no registry. You cannot run .exe programs in Linux without installing a special program. So these little differences can be very difficult to come to terms with when one is very new to Linux. However, it is not so difficult as one might think.

All of this is covered in the next part of this blog post.



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s