1

I checked the dictionary definition of an operating system:

the low-level software that supports a computer's basic functions, such as scheduling tasks and controlling peripherals.

Well, that sounds a lot like a definition of the kernel.

Linux handles all of the hardware interfacing; userland programs handle everything else. Yet I keep hearing people say "linux is a kernel, not an operating system". So... what is an operating system? And why is Linux not one?

Benubird
  • 5,912
  • Just adding bussybox and some login/logout software to the kernel, you get an OS... Without them I don't think you can have an "operating" system.. because what "operations" could you execute? – koleygr Mar 15 '19 at 16:48
  • Debian is a Linux-based operating system. So is RHEL. So (just about) is Android. – Chris Davies Mar 15 '19 at 16:50
  • 6
  • where is that definition from? Is there more that in that definition that also implies use? Linux is an API, basically. You can drop a "front end" on it and it would be an OS but with out it, it's just an API unless I'm very confused. I recommend installing just the linux kernel and see if you would call that an OS – bashCypher Mar 15 '19 at 17:35
  • @JdeBP so it's bulldozer. Then what? –  Mar 15 '19 at 19:33

5 Answers5

8

This has been asked for years on the Internet.

This topic is as much semantic argument as holy-war. This SE site is about the UNIX & Linux operating systems; Asking 'what is an operating system' here feels disingenuous.

0xSheepdog
  • 2,750
  • 1
    Though, technically, I suppose we need to know what an operating system is to be able to answer questions on the topic... Not that discussing the semantics here is likely to be of much use. – ilkkachu Mar 15 '19 at 22:48
  • 1
    I think the relevance to Linux here isn't that we should settle the semantic "debate" but maybe answer why Linux is considered a kernel in the first place. Why even make that distinction. – jdwolf Mar 16 '19 at 04:41
  • @jdwolf I agree with the sentiment of your comment. However, this is a question about why computer science and technology makes the distinction in this way. OP is couching it in the name of Linux, but it's not really an issue that can receive an answer on how to achieve a given state, solve a particular problem, etc. This question is probably better suited to ... and has been asked on ... quora.com or elsewhere. – 0xSheepdog Mar 16 '19 at 18:35
3

Once Upon a Time...

...Two well-known computer junkies named Brian W. Kernighan and Rob Pike wrote a book called The Unix Programming Environment (1984, ISBN 0139376992) and here are two quotes that foreshadow issues-to-come (p. 1):

"What is 'UNIX'? In the narrowest sense, it is a time-sharing operating system kernel: a program that controls the resources of a computer and allocates them among its users."

Okay, so UNIX=kernel. However, in the next paragraph, Kernighan and Pike say (p. 1):

"In a broader sense, 'UNIX' is often taken to include not only the kernel, but also essential programs like compilers, editors, command languages, programs for copying and printing files, and so on."

Erm, so it can also be used to denote a kernel PLUS an "environment" built around a kernel.

The GNU Project and the Linux Kernel

Back in the 1980s, around the time The Unix Programming Environment was published in fact, Richard Stallman started the GNU Project to build a free-as-in-freedom-not-as-in-beer "operating system" in the broader sense, a bunch of GNU tools sitting on top of "The Hurd" which in turns sits atop the GNU Mach microkernel. This GNU Operating system never came to be, partly because the Mach-plus-Hurd system proved difficult to create, partly because another kernel came along and most work moved to this new kernel.

In 1991 Linus Torvalds released his Linux kernel (there's a history behind this name too: the "working name" of the project was apparently "Linux" for Linus's UNIX (or MINIX, which is actually what he "cloned"), and Linus wanted to call it "Freax," but Ari Lemmke kept the Linux name). Linux wound up under the GPL v. 2 (with no "and later..." clause), it was (still is) compiled with gcc, and the GNU tools were set atop this kernel to become...

Depending on who you ask, either "Linux" or "Gnu\Linux" (read Gnu-slash-Linux).

The Naming Controversy

Stallman insists on including "GNU" in the name. The "received view" is that this is a purely semantic debate. There is a precedence for, in practice, using the name of a kernel to designate an entire "operating system," as the opening Kernighan and Pike quote demonstrates. Some people insist on calling the system "Linux" for pragmatic or aesthetic reasons, for instance in the Linux (or Gnu\Linux...) manual How Linux Works by Brian Ward, Ward says "I've tried to use the most common, least awkward names possible." (p. xxii, ISBN 9781593275679).

Some people try to rank the parts of an operating system by importance and insist on using the name that best reflects these important parts. Stallman insists that Linux is a small piece of the Gnu\Linux ecosystem, emphasizing the tools and compiler. In contrast, William F. Shotts, in his book The Linux Command Line, insists that Linux\GNU "would be more technically accurate since the kernel boots first and everything else runs on top of it." (p. xxix, ISBN 9781593273897). Since there is now a major Linux distro that does not rely on the GNU bits -- it's called Android -- the pragmatic reasons for a distinction between GNU\Linux and Other\Linux has kind of got a boost.

In a 1996 post by Linus Torvalds, reprinted in Peter H. Salus's The Daemon, The Gnu, and the Penguin: A History of Free and Open Source (pp. 143-4, ISBN 9780979034237), Linus says:

It doesn't really _ matter _ what people call Linux, as long as credit is given where credit is due (on both sides). Personally, I'll very much continue to call it "Linux"...

The Issue of Visibility

What's sometimes overlooked is that there is another reason to insist on including "GNU" in the name, and that's the issue of visibility. Richard Stallman has a philosophy to articulate and an organization to promote. He wants people to know the name of his organization, he wants people to participate, to use and share the GNU tools, provide donations, the works, so of course Stallman wants "GNU" in the name. In an article called GNU Users Who Have Never Heard of GNU, Stallman laments the fact that many people who use GNU tools on a daily basis have never heard of GNU. Just about everyone these days has heard of Linux.

This kind of promotion, corny as it may sometimes seem, works. Hearing about the GNU/Linux Naming Controversy made me want to know more about GNU and the FSF. I knew vaguely about Richard Stallman as a hippy meme who eats stuff from between his toes, but only as a result of getting to the bottom of this pesky GNU\Linux business did I read things like his collection of essays Free as in Freedom. A quasi-mythical Stallman dogmatist (a Stallmaniac, if you will) dominates discussion of this topic, so hard-headed things like the fact that he decided to articulate his philosophical vision primarily via a legal document, or things like the "matter of strategy" that is the Lesser GPL don't get the airing they deserve.

Stallman's ideas continue to have real impact, and he's not alone in articulating a "free culture" sort of vision. In fact, Free Culture is the name of a book by Lawrence Lessig, Roy L. Furman Professor of Law at Harvard, founder of Creative Commons, and unsuccessful 2016 presidential candidate. In this book, Lessig says:

The inspiration for the title and for much of the argument of this book comes from the works of Richard Stallman and the Free Software Foundation. Indeed, as I reread Stallman's own work, especially the essays in Free Software, Free Society, I realize that all of the theoretical insights I develop here are insights Stallman described decades ago.

In practice I wind up using "Linux" quite often, but I'm increasingly smitten with the FSF vision, so I just might join the persistent GNU\Linux crowd.

Or...and this thought tickled my sense of mischief...what if we give it a name that excludes both GNU and Linux, like Ginux (gee-nix)? That would be...funny. Just a thought.

Postscript

Nearly twenty years after the release of the Linux kernel this topic still excites (and perhaps overexcites) people. Bryan Lunduke recently wrote a joke article in The Linux Journal called Why Linux is Spelled Incorrectly in which he concludes "Linux" should be spelled "Linucs" like the old MULTICS that UNIX (and hence MINIX and hence Linux) is based on. As of March 15, 2018, there are 123 comments on the article. Some people took it very seriously, and Mr. Lunduke felt the need to make a YouTube video response to the "controversy." This issue will vex FLOSS nerds FOREVER.

2

I will try to make it short but understandable enough:

An OS is an interface between the human and electronical components. Linux is the kernel with instructions to understand a very wide range of hardware but it has no interface. No console, no windows, no commands, nothing alike. That's why you should always say "GNU/Linux" when you refer to the standard "linux" OS most people is using. GNU is the "wrapper" of an standard Linux kernel with enough resources to make the hardware do whatever the user is trying to accomplish.

Ubuntu, Debian, Fedora, Redhat, Slackware, etc ... are "flavors". A set of (commonly) GNU software as interfaces, arranged as (sometimes) one person wants to "shape the user experience" with colors, effects, tools, etc

Juan
  • 251
  • 1
    Well... this is partially true, as most Linux distributions nowadays have components NOT developed by GNU – niglesias Mar 15 '19 at 18:37
  • What about embedded operating systems that have no user interface? – Philip Couling Mar 16 '19 at 07:03
  • @PhilipCouling Such us? – Juan Mar 16 '19 at 15:07
  • https://en.wikipedia.org/wiki/Embedded_operating_system Cars, shop checkouts, Automatic coffee machines.... They will be usually be built with an operating system. The UI is entirely provided by the "application". Historically operating systems were a way to standardize the interface between software and (very diverse) hardware. This has expanded massively to include user control of the hardware but it is by no means the primary purpose of an OS. That purpose is still to provide a standardized platform for running software. – Philip Couling Mar 16 '19 at 16:20
1

This is a big question!
If you google, you will find many, MANY different answers. Anyway, I'm going to try give you my personal point of view, what is an OS for me.


My engineer background force me to say: it depends, that is in easy words, I can shrink your issue, e.g.:

  • for a common user, an OS must have a GUI and applications like calculator and word processor
  • for a HPC system admin, an OS must execute only one big task, so no GUI at all

Most (all) of you will raise and say it's wrong!.
Definitively, OS definition is not clear, or better is not unambiguous in our modern times!


Answering to your questions:

  1. An OS is the ensemble of software to use a computer,
    and because there are many kind of computer, there are many definitions of OS.

  2. Linux cannot be considered an entire OS because almost any use of a computer needs at least one more piece of software.

mattia.b89
  • 3,238
0

I agree there is a kernel called Linux. I can point to it.

If there is an operating system called Linux, then what is it? What is part of the Linux OS, and what is not part of the Linux OS?

How does our definition apply to an operating system like Android? Android uses the Linux kernel. However it shares very little else in common with whichever Linux-based OS is currently installed on Linus Torvald's workstation, for example.

One way to define an operating system, is a product that an "Independent Software Vendor" can write application software for. You can see this definition reflected in the Linux Standard Base. However Ubuntu (and also Debian) no longer try to support the LSB.

So there is not a well-defined line of platforms you can point to, as "the" specific Linux OS. You can identify many distinct operating systems which use the Linux kernel, for example -


Suppose you use graphical applications on Ubuntu Desktop 18.04. The above definition tells us the GNOME graphical interface is part of the OS.

GNOME is part of both Ubuntu Desktop 18.04 and Fedora Workstation 29. These are two closely related operating systems. When someone packages software for both operating systems, they will take advantage of commonalities between them. (Recent example here). In this sense, people rely on common lineages of Linux operating systems. But this is an ad-hoc process. It does not provide a concrete definition for a common Linux operating system.

FlatPak is a more general project. It is designed to run on diverse Linux-based OS's, and yet provide common interfaces for applications. (Accelerated graphics interfaces such as OpenGL are a particular challenge though.) Someone might argue that these interfaces define a base of "the" Linux OS, which suffices to run various graphical applications. I think the FlatPak interfaces are very interesting, but I am not able to justify this argument.

sourcejedi
  • 50,249