Beginner's Guide to Linux

Beginner's Guide to Linux


In this blog, I have shared the knowledge that I have gained about Linux while learning from TheOdinProject. I have shared a brief introduction to Linux, How it is different from Windows OS, Distributions, Desktop Environment and more. I hope this will be a good read for those who are interested to learn about Linux.

A Brief History

Linux was created in the early 1990s by Linus Torvalds and the Free Software Foundation (FSF). When he was a student at the University of Helsinki, Torvalds started developing Linux as a system similar to MINIX, a UNIX operating system.

The core of the operating system (Version 1.0 of the Linux kernel) was released in 1994. At about the same time, American software developer Richard Stallman and the FSF made efforts to create an open-source UNIX-like operating system called GNU (Gnu's Not Unix). Torvalds, Stallman, and the FSF worked together to start creating utilities for the operating system first. These utilities were then added to the Linux kernel to create a complete system called GNU/Linux.

Today Linux runs on most servers around the world including the ones that provide us with the Internet. The reason is that it's very stable and rarely crashes compared to Windows and macOS. I am sure everyone is familiar with the image below 👇️😂 (Windows Blue Screen of Death)

Architecture of Linux

I used to think Linux is an Operating System but technically it's a Kernel. Linux is not genetically based on Unix. But Linux is "Unix-like".

To understand Linux architecture let's look at the model below 👇️

The core kernel sits on top of the hardware and this is because the hardware can't directly communicate with the User. So the kernel is introduced between the hardware and the User.

In Linux Architecture, it's the Linux Kernel that sits on top of the hardware directly and gives the user the ability to communicate and use the hardware. Shell sits on top of the Kernel as an Interface to get commands from the user.

What is Kernel? 🤔

A Kernel is the core of a computer's operating system and it controls everything in the system. When a computer starts, the first thing a bootloader loads is a Kernel. Kernel provides an abstraction between the hardware and software.

Linux Kernel helps the user to communicate with the hardware and the software by receiving inputs from the user and providing outputs.

Some responsibilities of Kernel are such as Memory management, Process management, Device management, File system management, etc. In GUI Linux Systems, we are provided with software called Terminal, which helps us to emulate a CLI Linux System Shell inside a GUI Linux System.

What is a Shell? 🐚

Shell is an interface between the kernel and the user. It interprets the user’s commands and forwards them to the OS to perform them.

When a command is entered by the user, the shell analyses it to determine which executable file should be launched. After determining the executable file shell forks a new process and passes the command with its arguments to the new process.

The new process then executes the command by performing the appropriate system calls which may involve reading and writing files, creating new processes, or communicating with other parts of the system.

Some popular shells include Bash, Zsh, and Fish.

What is a Terminal? 👩‍💻

A Terminal is a GUI-based program that provides a user interface for interacting with the "shell" using CLI. It provides a way to display the output of commands and to interact with the shell's environment. So it's important to get your hands dirty with the terminal as soon as possible.

Linux Distributions

Since Linux was an open-source project, it allowed many developers to work and create their own versions known as Flavours/Distros based on Linux. Each Linux Distribution has its own set of tools, utilities, file manager, etc that comes with it.

Linux distributions can be based on one or more "parent" distributions, which provide the foundation for the next distribution.

There are hundreds or maybe thousands of distros out there, but here I am talking about the distros that have served as the base for other "children" distributions also called the "derivatives or forks".

  1. Debian: Debian has been around since the early 1990s. Debian uses a stable release cycle and generally has older packages that are more stable and have very less bugs compared to other distros. Many popular Linux distributions, such as Ubuntu, Linux Mint, Zorin OS, Elementary OS and MX Linux, are based on Debian.

  2. Red Hat: Red Hat Enterprise Linux (RHEL) is a commercial Linux distribution that is widely used in enterprise environments. Many popular Linux distributions, such as CentOS, Fedora, and Oracle Linux, are based on Red Hat.

  3. Arch Linux: Arch Linux is a lightweight and very customizable Linux distribution that is designed for experienced users. It follows a rolling release model, which means that updates are constantly being made available. Arch Linux has served as the base for several other distributions, including Manjaro and Anarchy Linux.

  4. OpenSUSE: OpenSUSE is a community-driven Linux distribution that is known for its user-friendliness and the availability of a wide range of software packages. OpenSUSE has served as the base for several other distributions, including GeckoLinux and Tumbleweed.

I don't know about all of them but these 4 are the main ones that are used as a base for most of the Linux distros out there.

Desktop Environment

The best feature of Linux is that it allows heavy customizations, and when I say heavy it means really really heavy.

In Linux, a desktop environment or DE refers to a complete GUI that provides a consistent look and feel to the user. It consists of a collection of applications, utilities, and libraries that allow users to interact with the operating system graphically.

A desktop environment provides window management, file management, application launchers, system settings, and customization options such as display resolution, themes, colors, fonts, font sizes, etc.

Here are the most common Desktop Environments:

  1. GNOME: It has a minimalistic look with a top bar that displays the time, system status, and notification icons, as well as a dock on the left side of the screen (can be shifted to the bottom or right side as well) that holds frequently used applications. GNOME uses a default Adwaita theme with flat icons and rounded corners. The best example is Ubuntu.

  2. KDE: It gives the feel and look of Windows OS, a bottom panel that displays the taskbar, system tray, and application launcher. KDE uses a default Breeze theme with a flat design and sharp edges.

  3. Xfce: Xfce is a lightweight desktop environment that is designed to be fast and efficient. It has a very basic design, with a top panel that displays the application menu, system status, and workspace switcher. Xfce uses a default Greybird theme which kinda looks boring however due to its small size and being lightweight on resources it's a good choice for old systems.

  4. Cinnamon: It is a fork of GNOME 3, was initially developed to be and is the default desktop environment for Linux Mint. It is known for its similarities with the Windows Interface.

Different desktop environments can be installed on different Linux distros. This is why I said Linux is very customizable. You can even install extensions that can help you customize more but I won't go deep into this for now.

Which Distro to choose as a Beginner?

I had this same question some time ago and I did a lot of googling to find out some of the best distros that you can try out as a beginner:

  1. Ubuntu: Debian based and with a GNOME/KDE desktop environment, this will be the #1 choice for me. Simple, customizable, and very powerful.

  2. Zorin OS: If you love the looks of "Windows/macOS" and You want something eye-candy then this is the best option for you. Fast, powerful, sweet looking and stable cause it's based on Ubuntu.

  3. Linux Mint: By far the most suggested distro, Every other person suggested Linux Mint to me. So this goes into my list of beginner-friendly distros. Its default desktop environment is Cinnamon which is a fork of GNOME.

  4. Fedora: Based on Redhat, this distro is more focused on providing more frequent updates. Debian is awesome, but it's too behind the curve, which is intentional as it aims for stability, but fedora is stable + also gives faster updates compared to Debian.

  5. Elementary OS: This one is also an eye-catching distro that is loved by many. Elementary OS is based on Ubuntu so again it's stable and powerful.

Reasons to use Linux

  • Open source: Linux is an open-source operating system, which means that its source code is freely available for anyone to view, modify, and distribute 🎉. This encourages collaboration, innovation, and community-driven development. The code is available online you can see what is happening inside Linux but you can't do that with Windows 😟. Below you can see the GitHub repo of Ubuntu 👇

  • Customizability: Linux allows users to customize their operating system to suit their needs. With a wide range of desktop environments, window managers, and software options available, users have more control over their computing environment. (Believe me, in terms of customizability Linux is far ahead of Windows)

  • Performance: Linux is known for its superior performance and speed compared to Windows. It is also efficient in terms of memory usage, making it ideal for older computers. Even the servers running in the data centers of Microsoft use Linux.

  • Stability: Linux is by far the most stable operating system ever created. It is designed to run continuously without crashing or requiring rebooting, making it ideal for use in servers and other critical systems.

  • Secure: Linux is secure as it is open source which means anyone can read its code and see if it has any potential bugs or threats. Linux community provides faster security patches and updates.

Fun facts about Linux

  • Linux is used by many large companies, including Amazon, Google, and Facebook, Microsoft to run their servers.

  • Linux Logo is a penguin and the reason is that when Torvalds went on a trip to Australia he was bitten by a penguin. The Penguin logo was later created and it retained its puppy-dog round eyes that instantly draw new users' curiosity and appreciation for cuteness.

  • The Linux desktop market share is growing, and there are now many user-friendly Linux distributions designed for everyday use, like Linux Mint, Pop_OS and Elementary OS.

  • Android runs on the Linux kernel and has over 2 billion users in the world.

  • Linus Torvalds wanted to call his project “FreaX” (a combination of “free”, “freak” and “Unix”). Thankfully, he was persuaded otherwise by the owner of the server hosting his early code, who happened to prefer the name “Linux” (a combination of “Linus” and “Unix”).

  • Linux is used by NASA, ESA, ISRO, and SpaceX.

  • 100% of the world’s fastest supercomputers run Linux.

  • Linux runs on everything from smartphones and servers to submarines, space rockets, and Cloud.

  • Steve Jobs offered Linus Torvalds a job in 2000, on the condition that he will stop the development of Linux. Linus declined.

  • Linus Torvalds also created Git, One of the most used Version control systems in the world.

Did you find this article valuable?

Support Shubh Sharma by becoming a sponsor. Any amount is appreciated!