77
Some basic questions about Linux
(sh.itjust.works)
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
I'll do a (simplified) Windows analogy, if you're already familiar with Windows.
Microsoft Windows is closed-source/proprietary, which means only Microsoft has the source code for it, and only Microsoft is legally allowed to create or distribute copies of Windows. "Windows 11" for example is a "distribution" of Windows containing the "Windows NT kernel" (core of the OS) alongside other important software to make the OS usable, like a boot loader, service layer, graphical interface, desktop environment, and lots of included "system" applications like a file explorer, a web browser, apps to adjust settings, apps to display menus and task bars, and so on.
"Linux" by itself is just the kernel, the core of the OS. Which is by itself not a "usable" operating system yet, just like holding a CPU in your hand doesn't allow you to use it yet. More components are needed for that. Since Linux is open source and under a permissive license, anyone (even you) can go ahead and create an operating system made with the Linux kernel. If you do that, this is called a distribution or "distro" of Linux. Since there's not just one company allowed to do that, many distributions exist. They all made their own operating system on top of the Linux kernel. Even though hundreds of distros exist, only a handful of them are actually popular, stable, secure and recommended for general use. They all use similar, but sometimes different software to include in the distribution. Like the Linux kernel, most of that software is open source so it can also be modified or extended.
Since "Linux distribution" is rather long to write, people often just write "Linux" but mean the whole distribution, not just the kernel. These are just common inaccuracies in communication, but what the person meant should be obvious from the context.
Common and recommendable Linux distributions (= full, usable operating systems) include: Linux Mint, Ubuntu, Fedora, OpenSuSE, Arch, Debian. These are full operating systems and they all include the Linux kernel at their core. Of course, the similarities go further than that. Most distros are similar enough that if you've learned one, you can also use any other with little additional things to learn. However, some distros are deliberately a bit more different or tailored to more specific users or use-cases, for example Arch targets more experienced Linux users because it's a very minimalistic distro, it expects the user to know which packages he wants to install. It pre-installs almost nothing. You can think of this like "Windows Server Core" where it just boots into a minimalistic terminal by default, no usable GUI yet, but you can of course install the desktop environment and everything if you need it and make a full-featured desktop out of it. The distro just doesn't want to preinstall anything which you later might not like, which is why it gives you the choice, but that makes it a minimalistic distro and it's harder for beginners to use that way. Other distros like Mint are much more similar to the client editions of MS Windows in that they preinstall everything the user needs for a desktop OS and more, so that the user can boot into and use the desktop as quickly and easily as possible.
And then there are even more special-purpose distributions like Kali Linux which includes things like penetration testing tools (i.e. "hacker tools"), which makes it a distribution for IT security people, so they can boot into it and have access to most needed tools right away without installing much else (also good on a bootable USB stick). But usually, in general threads like this one, people don't talk about specific-use distros, but about generalist distros which you can install and use as a regular desktop OS.
Desktop environments also exist on Windows but there's basically only one, made by Microsoft. In the Linux world there are several to choose from. The most common ones are: KDE Plasma, Gnome, Cinnamon, XFCE. These desktop environments contain window managers or compositors, task bars or panels, menus, various tools like file managers, process viewers and text editors, and various background programs. This is all needed for the user to have what is commonly known as "a desktop environment", because if you didn't have one, you'd be basically staring at a screen containing at most a cursor and a wallpaper, with no way for you to interact with anything. Of course, these can look and feel different from each other (just like Windows looks and feels different than MacOS), and they have different features and strengths and weaknesses, but their goal is always the same. And as usual in the open source world, there's not just one project but multiple, and out of those multiple a couple are popular, viable and stable enough so that they are usually included in most Linux distributions. Which is why most distros also give the user the choice to have a specific variant of the distribution with a specific desktop preinstalled. For example, Ubuntu also has Kubuntu (= Ubuntu with preinstalled KDE Plasma) or Xubuntu (= Ubuntu with preinstalled XFCE). These can have various names but in the end it's just the base distribution ("Ubuntu") with a different preinstalled "face" so to say (and you can change those faces or desktops from within the same distro, of course). Most other things are exactly the same between those distribution variants.
As a new user, you don't need to learn about everything. Just pick an easy to use generalist desktop distro like Linux Mint and use the default desktop environment or variant which they provide or recommend by default. You can start experimenting with more choices later on if you want, but you also don't need to. If you have something you're comfortable using, then you can just stick with that.
The biggest shake-ups in a while outside we-don’t-use-X (no systemd, etc.) are the declarative distros like NixOS & Guix. You do the whole system setup & config thru a single file (or broken into multiple). Learning curve is very high for the config but the payoff is less things changing out from under you & setting up new machines & rolling back to working states without resorting to FS snapshots. They are good languages to learn for software development too where you want repeatable software.