Today I thought we would roll things back a bit and take a look at what some of the core topics I’ve been covering really are. First things first, we will take a look at what Linux is, and what it isn’t. If I have space, I will talk about infrastructure, servers, and other things as well, but I think just unpacking Linux will be enough for today.
So, we talk about Linux almost every post, around here, don’t we. You have probably figured out that it is an alternative operating system or O S. On a basic level, you have deduced correctly. However, it is more than that. And less… More on that later. First the “more”, well, it has a bootloader, a kernel (this is technically the “less”, as this is the part that is actually “Linux”, more on that later), an init system, daemons, a graphical server, a desktop environment, and a suite of applications. What are each of those elements? (https://www.linux.com/what-is-linux/)
The bootloader handles telling the system how to interface your system’s legacy BIOS or UEFI firmware with the kernel. It begins the process of loading in the kernel that you picked. The most common one of these is called GRUB, or the GRand Unified Bootloader, which allows for multibooting, or choosing between installed kernels or even different operating systems. (https://wiki.archlinux.org/title/GRUB)
The kernel is where the magic happens, everybody. It is a is a computer program at the core of a computer’s operating system and generally has complete control over everything in the system. (https://en.wikipedia.org/wiki/Kernel_(operating_system)) It is a free and open-source,: 4 monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU operating system, which was written to be a free (libre) replacement for Unix. (https://en.wikipedia.org/wiki/Linux_kernel) Linus still leads development on the kernel project. That was allot of big terms there, but suffice it to say that the kernel is where all of your other firmware and drivers plug in to make the system go. Think of this as the nervous system of the OS.
The Init system, here we have some choices to make: most distributions ship with systemd —which I might do a deep dive on in the future—, OpenRC, runit, and S6 are some of the better known options. Init systems manage most things behind the scenes, including boot processes and daemons. Systemd is developed by the team at Red Hat, and has suffered extreme feature creep, in that it seems to more or less be gearing up to replace the kernel itself eventually. OpenRC is the next most frequently used init system, and only does its job, which is to manage daemons and services. Runit and S6 are similar but each present their own wrinkles and different ways of doing things. (https://en.wikipedia.org/wiki/Init)
Next, we have daemons. What is a daemon? If you are familiar with the Windows end of things, daemons are roughly equivalent to services. These either launch at boot or at login, and manage things like display drivers, printing, networking, and many other processes that run in the background as needed in order to make your system run as expected. (https://itsfoss.com/linux-daemons/)
What about a display server? There is basically one option, here, X (which is the original display server from unix), the X.org Server (the open source version of X, developed in in the 90’s), and X11 (Network protocol which actually slows things down because it hasn’t been overhauled in 30 years, but has been hacked to bits in the interim, it is what allows X.org, the system, and other applications to talk and draw things on the screen). It is a program whose primary task is to coordinate the input and output of its clients to and from the rest of the operating system, the hardware, and each other. The display server communicates with its clients over the display server protocol. (https://linuxiac.com/xorg-x11-wayland-linux-display-servers-and-protocols-explained/) Other than that, we have Wayland, which is an up & coming community-driven replacement for X.Org and X11. Keylogging is impossible because of how Wayland is designed, as there is no middleman between the windowing system and the display server, as the compositor is the display server is the window manager. Simple = better, here. It is still maturing, but once it does, Linux will be lighter and more secure than ever.
What might you use a display server to look at? A desktop environment or a window manager. What’s that, you ask? A desktop environment or window manager provides the framework for a graphical user interface (GUI), in Linux systems, you have many options to choose from in this arena. Some of the most popular desktop environments are GNOME and KDE Plasma, slightly less well known are these: Xfce, LxQt, Mate, and Cinnamon. Each of these usually ship with a hand picked set of applications: a file manager, settings manager, some basic utilities, and other useful apps. I will do a whole blog later on desktop environments, because there is that much to say about these. As for Window Managers, those are graphical, but typically tend to be keyboard shortcut focused rather than point and click based, in the case of most desktop environments. A few well-known ones follow: i3WM, IceWM, OpenBox, and Wayfire.
What runs in a GUI most of the time? Applications. What applications are available for Linux systems? There are 1000’s of them, many are Free & Open Source, but not all are. Many Desktop Environments also ship with some kind of Software install center, so you don’t have to go hunting around the internet for what you need, just search for what you need in the software center to start with.
Next time, I will talk about why you should be interested and seriously think about using Linux on your computers at home and at work.