What is the relationship between Unix, Linux, Ubuntu, Debian and Android?

Solution 1:

Unix is an Operating System developed starting in 1969. It was originally designed to be a developer station rather than application platform, but, as development progressed and different vendors got involved, Unix was added to.

Unix was initially written in assembly, but later developed into C.

In relation to the others, the Linux kernel is Unix-like.

Linux is a Unix-like kernel. It was initially developed by Linus Torvalds through the 1990s. This kernel was used in the initial software releases by the Free Software Movement to compile a new Operating System. The kernel is responsible for managing the systems resources and allocating them to applications.

Note here despite many of its releases being referred to as 'Linux' this is a specific aspect which makes up the Operating System along with the text editor, compiler, debugger etc and not an Operating System in its own right.

Debian is one of the forms of this Operating System released in the early 1990s as is one of the most popular of the many versions of Linux available today.

Ubuntu is another Operating System which was released in 2004 and is based on the Debian Operating System. It is very popular because is is easy to learn without the need to use the terminal.

  • Linux: Kernel (Still in active development)
  • Debian: Early Operating System to Ubuntu (Still in active development)
  • Ubuntu: Newer Operating System based on Debian (Still in active development)
  • Unix: An old Operating System which the Linux kernel loosely based on

Reading: Linux Kernel
Reading Debian
Reading Ubuntu
Reading: Unix

If you are really interested in learning the history behind all this I recommend a film called Revolution OS, which goes into a lot of the history behind the development of this free software movement.

Solution 2:

There's one more thing you need to know of: GNU.

GNU stands for "GNU's Not Unix", and it is an attempt to create a free, independent version of Unix, developed by the Free Software Foundation.

They got very far, they made a C compiler, a C library, a linker, editors, shells, all the commands you'd expect in a typical Unix shell, lots of stuff. But the kernel (called "Hurd") wasn't finished. All the things outside the kernel (running as processes owned by users) are together known as the "userland".

When Linus Torvalds created his Linux kernel, he didn't create a userland. He just had a kernel, it wasn't a full system either. It turned out to be possible to compile his kernel and use it inside the GNU userland (this was probably not trivial, but I wasn't there and don't know).

The OS people usually refer to as "Linux" actually started out as the Linux kernel with the GNU userland, and lots of other stuff has been added since. The Free Software Foundation has always insisted it should be called GNU/Linux as a result.

Debian is a "distribution" of Linux; they did all the hard work of compiling all the various tools you needed to make a whole Linux system, compiled them and offered them for download as a bunch of floppies. Or a CD, later. Others did the same, e.g. Slackware, Red Hat and so on.

Many other distributions were later created, often not from scratch, but taking an existing distribution as a starting point and adding extra software to it, or organizing it differently, or whatever. Ubuntu was based on Debian this way.

Solution 3:

"Unix" was originally the name of an operating system for the PDP-11, developed at Bell Labs in the 1970s. Its design was immensely influential, and it was copied and reimplemented dozens of times.

Nowadays, "Unix" is an umbrella term for an entire family of operating systems, some but not all of which are directly descended from that original OS; anything whose primary system programming interface is compatible with the POSIX.1 API specification can legitimately be called an implementation of Unix -- and there are dozens of them. It is easier to list the operating systems still in wide use today that are NOT implementations of Unix:

  • Windows
  • IBM's z/OS and their relatives, which have been under continuous development since before 1970
  • a few deeply-embedded things that are more like runtime libraries than complete OSes

(There are also a bunch of experimental research prototypes that are trying to move beyond the Unix design, but they don't qualify as "in wide use", alas.)

"Linux" is the common name of one implementation of Unix. It has been around since the 1990s and is one of the top five most commonly used implementations today -- probably either #1 or #2, depending on how you count these things.

Linux is unusual in that the kernel, the C library, the compiler, the basic set of "shell" utilities, and so on are all developed by different groups of people; moreover, there's more than one choice for most of those pieces. Someone has to pick a set of pieces and put them together and make sure they work properly in combination. That someone (usually a group of people, nowadays) is traditionally referred to as a distributor of Linux, and their output is a distribution. Debian and Ubuntu are distributions of Linux; they used to be extremely closely related but have since diverged quite a bit.

(Technically, the name Linux refers specifically to the kernel, and it'd be a little weird to call an operating system Linux if you didn't use that kernel, but there are people keeping everything else and swapping out the kernel, e.g. Debian kFreeBSD.)

(Footnote for pedants: all glossing-over of fine distinctions in this post was 100% intentional.)

Solution 4:

UNIX and Linux are not related to DOS or Windows.

DOS was an outgrowth of the 8-bit CP/M operating system popular in the late 70's/early 80's.

Windows NT (of which XP, Vista, 7 and 8 are based on) was developed new by Microsoft starting in 1993 and borrows a lot of concepts and ideas from VAX VMS. Windows NT was developed to be a "real" modern, preemptive, multi-user, multi-tasking secure operating system.

Windows 3.1, 95, 98, and ME were pretty much Microsoft's idea/execution of multi-tasking (not multi-user, or secure) DOS.

Regarding UNIX, Linux, etc.:

  • UNIX is a kernel/API/operating system that has been around since the 70's.

    • A kernel provides a platform for programs to run, in the case of Unix, it allows multiple programs to run on a single computer and multiple users to access it. A kernel runs no programs on its own, these must be separately developed and provided.

    • An API is a standard way for programs to talk to the kernel. It's part of the kernel.

    • An operating system is a kernel plus common utility programs to manage and administrate the system. Common utility programs for UNIX include basic programs that manage services and logins (init), a shell that allows you enter commands (sh, bash), and basic file management commands such as cp, ls, mv, etc.

  • Linux is a UNIX-like kernel released under the GPL which at first worked on PC hardware, but now works on almost anything with a CPU (if you are allowed to run it).

    • GPL is a license that says anyone that modifies/enhances Linux, and publishes their modifications, is required to make those modifications available to the public and allow others to do the same.

    • Linux implements the UNIX API, so UNIX programs can run generally unmodified if they are recomplied (this is far easier than rewriting them from scratch) - since they use the UNIX API, they don't care if they are really talking to Linux or UNIX or something else, as long as the API does the same thing.

  • Debian is a Linux distribution. It started in 1993 and is among the oldest distributions. Linux distributions generally provide:

    • a Linux kernel,
    • basic utility programs,
    • an installer so you can install Linux on your system,
    • a package manager (plus a format for packages - Debian uses .deb)
    • a repository of packages

      So you can install a distribution, get a basic Linux environment up and running, then call up packages from the distribution's repository, using the package manager, when you need software. It's different from Windows where traditionally software has been distributed on CDs and years go by between versions and updates. Software in repositories is typically updated frequently and the package manager handles downloading and applying any updates.

    • Debian is also strict about releasing only open source software, meaning things that require proprietary software to run, like modern video cards or Wi-Fi chipsets, won't work optimally (or at all) with Debian "out of the box."

    • Debian typically creates new versions slowly and is more interested in stability than new features. This makes Debian a favorite for servers where the hardware is relatively static and software stability is important.

  • Ubuntu is a "fork" of Debian

    • Debian allows others to create distributions based on it, using its package management tools. Doing this is termed "forking."

    • In addition to the specific branding and look of Ubuntu, Ubuntu adds additional Ubuntu-specific repositories containing more and newer software. Ubuntu is more "bleeding-edge" than Debian - it was created to be more friendly and useful from a non-technical or non-UNIX-expert standpoint. It is all about new features and hardware working out of the box.

    • Most software that works on Debian will work on Ubuntu. The other way around can be a bit problematic since Debian's software is typically older. You might run into some base components that need updating to run Ubuntu stuff, but can't be updated because there's no newer version in the Debian repos. You can update these manually, but then that might require other components to be updated, etc.

    • Should note that Debian is a lot friendlier and aware of modern hardware these days than before.

Solution 5:

Unix = a commercial operating system specification

Linux = a free Unix clone (only the kernel)

Debian = a Linux distribution (Linux + other stuff)

Ubuntu = Debian redistributed (Debian made more end user friendly)