[Op-ed] Linux is not an operating system

:angry: My frustration

I've been seeing popular media outlets once again fail to distinguish the kernel from the system software developed around it, and I believe people need to understand this point before the userbase grows much more with this misunderstanding.

:capital_abcd: Knowing the difference

Operating system / Distribution

An operating system is a collection of software — bootloader, kernel, desktop, complementary software — which makes up a user experience, and is compiled under an expectation of use for the majority of end-users. In the Linux userland we call these distributions. But operating system can define these as well. Further subtopics will break down the different software which makes one up.

Bootloader

Each system will come with its own variety of this, with its own special configuration based on itself existing in its own vacuum. Configuration varies if it's the Microsoft NT loader, PLoP, Syslinux, GRUB, BURG, LILO, or others like it, but its primary task is to load from a bootable partition to select which system to boot into, if multiple systems exist, or facilitate using the only other bootable partition, if not the partition the system is on already.

Whatever your bootloader of preference may become, it is kernel-agnostic — You probably care more about reading this sentence than your bootloader does about which bootable partitions exist on attached media. Depending on its specific function, the bootloader can facilitate loading systems on media attached via means normally unavailable on your motherboard's firmware.

Bootloaders can also chainload into other bootloaders, if you so wish. Chainloading is more for if exists a system you cannot change the primary boot device, or compiling together multiple instances of systems which come with its own variety of bootloader with specific functions programmed into their menus, but the primary purpose is still the same regardless what you, as an end-user selects from their respective menus.

:bangbang: Pro tip: Installing a bootloader on a separate device allows for an alternative if somehow the primary bootloader malfunctions for any reason, or if the bootloader doesn't exist on the primary boot media act as a use restriction and light data security measure.

Kernel

The kernel is what facilitates all operations on any machine it is executed from. It is software in its own right, but special in the fact if a kernel doesn't support the hardware which exists, then any other software intended to be used with the kernel will not function, which renders the system inoperable. Kernels can be specialized to only the hardware on a given system, or like Ubuntu MATE be monolithic — In exchange for bloat and features you will never, ever use, the few hardware configurations you possess which the kernel is compatible with will facilitate booting into the system with that hardware in use. This means the kernel doesn't need to be recompiled to function with new hardware.

An easier way to imagine the kernel is a conductor for all bus operations on the system, from displaying the video, to transferring data, to emitting sound. The kernel has complete control of it. This alone doesn't make up the operating system. It makes what an OS does possible.

So why does it matter what the difference is?

Really simple, using the software this community represents — Canonical tomorrow could recreate their system using the Berkeley System Device kernel and become more Apple-like, which itself uses Apple's variety of BSD. Should Canonical do this, it would be up to distribution vendors if they want to ride this new wave of development and recompile everything to function with BSD. If Martin really wanted to keep the spirit of Ubuntu MATE alive in this alternate timeline, Ubuntu MATE would no longer be Debian using the Linux kernel, it would be a Debian-like using the BSD kernel.

Desktop (environment) / Shell

Desktop can be synonymous with System, and here needs some distinction as well. MATE is the desktop environment, or shell of Ubuntu MATE. A desktop environment is the software which makes up the graphical user interface. It doesn't necessarily need to rely upon X — Many desktops before the X Window Server were simply fancy multitasking text-based interfaces, with custom software to allow for crude Z-indexing which defined which window was on top of the other, or with some tiling-based solutions what programs resided in which containers.

tmux, a software available for Debian and Debian-based systems reflects what popular tiling window managers like i3 and awesome allow — software which exists in containers on a single workspace. While tmux; known formally as terminal multiplexer, requires a text-based shell to exist via emulator or TTY, it can be seen as an emulation of original desktop interface concepts on earlier multitasking-capable operating systems when personal computing was a concept long before its coming of age.

The desktop environment may also influence what other software you use as part of the operating system. As a few solutions exist, such as GTK, KDE and wxWidgets, it must be evaluated per-case if a system should be lighter-weight by relying on one interface solution, or multiple. For light weight you avoid software which requires more interface library software, or if that isn't a concern then all solutions can exist and function concurrently.

The environment by itself does not define an operating system, only what software by default which provides a graphical interface to facilitate use of the hardware, and by extension what software by default communicates in varying degrees to the kernel.

Confusion of GNOME Shell vs. text-based interfaces

In an effort to simplify terminology, GNOME team chose to call their most recent iteration of their GTK3-based desktop GNOME Shell. While a Shell can be anything which allows the user to interact with the machine using human interface devices, this can lead to interesting situations where for decades the term "Drop to shell" was used to mean interfacing with a text shell via TTY. X on most Ubuntu systems will operate in tty7, which can be accessed after going into another TTY by holding Ctrl and Alt while (holding Fn :dagger: and) pressing F7.

:dagger: Depending on motherboard / keyboard firmware, Fn may not be necessary to hold down.

Everything else / Summary

GNU coreutils, PuTTY, VideoLAN Corp's VLC Media Player, Pidgin (as Finch) — All of these things doesn't need anything but the kernel, shell and essential files for command-line operation to exist. None of the available software solutions you could install in Ubuntu MATE, or any distribution by itself make up the totality of your use experience, but all of it contributes to the core concept of an operating system.

1 Like

Others beg to differ. Please see -

Huh? Don't tell me I am having a Stallman moment.

Does linux.com have any affiliation with Linux development, or is this just an advertising page created by a hobbyist to represent the kernel?

Edit: I see. It's affiliated with The Linux Foundation. Hmmm...

Here's what wikipedia has to say -

Linux most definitely is an operating system based on a kernel.

Edit: I must backtrack on my comment above, see strike through. Linux is the kernel in an operating system for what it's worth.

Well, my head thoroughly hurts now. Gonna need to think about this one a bit longer, but if Linux is an OS, then so would NT kernel, which would make Microsoft Windows a distribution using the NT kernel, and Ubuntu MATE a distribution using Linux as the OS.

OK then. Take a look at -

A much clearer explanation than some others I've read.

Edit:

Pretty clear. Judicious use of language and a point made.

Totally understand what the entirety of the post is saying. Read a lot over the years about this idea.
100% true that you believe this.
Personally I think It doesn't matter that much. Linux is a word/name/brand/expression that most people have come to equate with what an operating system is understood to be in popular culture. It is what it is, what I legit and honestly don't understand is the "If Canonical" hypothetical reference. Did I miss something or does a hypothetical reference add something to the specifics of a discussion?

"If Red hat", "If Arch", "If Void team", doesn't matter if which. The example I used is because Ubuntu is developed by Canonical, which by turn influences the direction of Ubuntu derivatives, such as Ubuntu MATE.

They could easily switch to BSD if Canonical didn't choose to bed with Microsoft, but that's a moot point. All of it's UNIX based anyway. The contention in my post is the same as Arvind Kumar's issues with Linux's multiple personality syndrome, which I thank @mdooley for showing me I'm not the only crazy one thinking The Linux Foundation is a little bit off their rocker calling Linux an "Operating system" in the capacity most users of WIndows understand it.

Which now makes me wonder; if Linux is an OS, then is systemd our kernel? :confused:

You understand there is a difference, I understand there is a difference. The original point was that there would be a problem if the user base grew with people who don't know the difference. My point is that I have switched a couple dozen people aged from pre-school to 70+ who don't know, don't care. If the user base suddenly grew to 500 million who didn't know, didn't care, and hardware manufacturers needed to start actually releasing drivers for Linux on a regular basis what would be the down side. There may in fact be one, I just don't see it.

Pretty much everyone knows that, they mean an OS's that come under the umbrella of having the Linux kernel. I think this kind of silly pickiness is what scares a lot of Windows people away. That and the meanness of people in some forums.

3 Likes

Linus Torvalds can be a mean person for sure. Especially if you screw with his kernel in ways which break existing software.

On the topic of pickiness, it isn't that I want to be picky and raise fights. People who are getting into development of the kernel in the future who grew with Linux as an OS have to cut through more ambiguity than they have to. Linus even has contention with systemd because it's trying to do more than one thing, which not just can, but invariably will delay resolution of problems, if said problem comes from software with not just multiple failure modes, but multiple approaches where failure can be encountered.

The Unix philosophy is to do one thing, and do it well. That's pretty much it. We've seen more software become so integral and disregarding of this simple premise where if something goes wrong, it's not one thing being affected but a whole cascade effect of other problems occur of which source is ambiguous because you have multiple software which does multiple things, sometimes being the same thing concurrently. That's insanity compared to one program, one problem, one solution.

That's a future I wish to avoid. Less integration, less ambiguity, less complication. Problem is, that's not the future we're headed toward. Mind, this is coming from someone who uses Compiz which arguably breaks this Unix philosophy, but the core software does what it has to, and plugins which function with the core process only do one thing. And they do it damn well most of the time.

So many landmines here.

Not sure if this is really an invitation to discussion or to a flamewar. :slightly_frowning_face:

4 Likes

The meaning of what constitutes an operating system seems to have changed over the years. When I first started out with computers (late 70's), an operating system meant "that which knows how to deal with the hardware, and presents a standard set of interfaces for applications to to be built with". E.g., CP/M. Now, CP/M was a kernel, and built into that kernel were some basic user commands. But on top of that, it came with a standard package of tools as separate executables that people could assume would be available in most any CP/M system, an operating environment, if you will.

So what was the "OS"? It depended on context. If you were talking about assembly language programming (which is how I started out), the OS was the kernel and the services (the API's) it provided. If you were talking to people other than programmers, you might say CP/M to mean the kernel and the ancillary userland executables.

So, in my opinion, "Linux" IS an operating system - its position as the kernel (including drivers) that mediates between hardware and application programs fulfills THAT interpretation, which as an old-timer means something important to me.

OTOH, a usable Linux system includes a surrounding cast of userland tools for admistrating, programming, what have you. GNU/Linux is one possible manifestation of this. Is GNU/Linux and operating system. Yes, I suppose, in a way, though I would call it an operating environment.

You say to-may-to, I say to-mah-to. But to dogmatically assert that Linux is not an operating system is, to me, simply incorrect.

2 Likes

Why don't we take it to the polls? :slight_smile:

What do you think Linux is?

  • An operating system
  • A kernel

0 voters

I think this is grossly over simplifying the issue. There is the matter of context that you just can't get at in a simple binary poll.

What we have here is just a popularity contest. I mean, you could find out how members of the UM Community feel about it, but it hardly settles the question.

Maybe rename the questions: Do you think that Linux is an OS? Do you think that Linux is a kernel? And leave the 'just' out of the kernel question.

And what this poll will settle is merely what some members of an Ubuntu forum think.

Fair point. The poll was really to avoid me coincidentally repeating what was said in the first post, since I wouldn't consider Linux as the operating system. The poll has been reset.

My thoughts I was going to post:
  • The kernel is a piece of the operating system :jigsaw:
    • Just like NT (Windows), Darwin (Mac) and BSD (FreeBSD)
    • Kernels come in different kinds - monolithic, hybrid or microkernel.
    • Their purpose is to facilitate I/O between software and hardware.

  • An operating system is a collection of low-level software :gear:
    • systemd (init), Xorg (graphics display), pulseaudio (sound), cron (scheduling) and so forth.
    • For example: The Linux kernel contains drivers for printing, but without management software like cups, the rest of the operating system doesn't have the software required for the user to print. :printer:

GNU tools + Linux kernel = GNU/Linux = that makes sense to call an operating system, but I guess a lot of marketing just shorthand that to "Linux", hence the confusion.

More on that controversy:

I agree with the content in the last link in post #6.

Is Unix an operating system?

I think that my second link in post #6, arvind.io, addresses that very question @sgage. After reading a bit more carefully, in my point of view, linux is a kernel, not an OS and I edited my post #4 to say that.

Please don't give my opinion any weight as I've dwelt in userville lo these many years, writing code or not. The first computers I saw were in university basements and used punchcards as input.

A bit of a revision to my prior statements, since I have become more... moderate in the arguments for Linux being an OS. But only if there are a few conditions which are met;

  1. The kernel comes with its own shell, independent of user shell solutions.
  2. The kernel can accept user input without external applications from non-kernel sources.
  3. The kernel can be manipulated by an end-user without recompilation for an express purpose.

And that's the thing which I have been struggling with, understanding Linux as an OS. What can the user do to operate the system, using the kernel alone? Now of course, I may be spouting ignorance or encountering valid reasoning with the conditions above without realizing it. And that's where I need some help here. Yes, I am calling out for reason from people who know better.

What does the kernel come with, which facilitates use of it by itself as an OS a user can manipulate without recompilation for day-to-day use, which most users would consider as traditional use?

Quick edit: Before people think that scope is too narrow, consider what most people use their computer for. (That includes all varieties of handhelds.) It may be a narrow scope, but it's also one which covers computer use most broadly.

More edit: If the kernel did all of this and could be used as an independent entity without user shells and DEs, I'd consider that as breach of the oft-mentioned Unix [software development] philosophy and it would introduce a whole myriad of issues directly related to the kernel, in my opinion, but my request above doesn't provision use of such philosophy for software development.

At least with the Linux kernel, once it's loaded into RAM by the bootloader, the first thing it executes is the init system (systemd), which is leaving kernel mode (ring 0) and enters user space (ring 3).

Operating systems run in "rings" - this page has a useful graphic/description:

There's the Magic SysRq key, if it's enabled when the kernel was compiled. This is only way for a human to speak to the penguin directly, often when ring 1, 2 or 3 gets out of hand - :penguin: "sync all filesystems! unmount! reboot!". :rotating_light:

I suppose if you were to write a kernel and add then a shell and application, then you'd be producing an embedded operating system.

Even further, there is a popular form of computer in the world that crunches numbers, yet doesn't have an OS - the average scientific calculator:

If of interest, an interesting resource describing the boot process for Windows/Linux: