Was ist UNIX, Linux/GNU und Free/Net/OpenBSD?

Das Betriebssystem Linux     BSD-Systeme
  1.1  Linux-Historie     Mac OS X / OS X / macOS / iOS / iPadOS (Apple)
  1.2  Linux-Versionen     Das UNIX-System
  1.3  Disput mit Andrew S. Tanenbaum       5.1  UNIX-Historie
  1.4  Grundlegende Entscheidungen       5.2  UNIX-Prinzipien
  1.5  Der Pinguin "Tux"       5.3  UNIX-Standards
  1.6  Eigenschaften von Linux       5.4  Grafische Oberflächen
  1.7  Gründe für Linux       5.5  Besondere UNIX-Ableger
  1.8  Einsatzgebiete von Linux         5.5.1  GNU
  1.9  Standard-Anwendungen unter Linux         5.5.2  MINIX
  1.10  Linux-Distributionen         5.5.3  Linux
Das GNU-System       5.6  Besondere UNIX-Firmen
  2.1  GPL         5.6.1  Novell und SUSE Linux
  2.2  LGPL         5.6.2  SCO (Santa Cruz Operation)

1 Das Betriebssystem Linux

1.1 Linux-Historie

Linux ist ein frei verfügbares (OSS = "Open Source Software") und zu UNIX kompatibles Betriebssystem (auf API- und Kommandozeilen-Ebene, nicht auf Binärcode-Ebene), das 1991 von dem damals 21 Jahre alten finnischen Informatik-Studenten Linus Torvalds begonnen wurde.

Der Studienanfänger an der Universität von Helsinki war mit den vorhandenen PC-UNIX-Versionen für Intel Prozessoren unzufrieden und begann — auf einem damals hochmodernen Intel-386SX-PC — sein eigenes UNIX-kompatibles Betriebssystem (auf API- und Kommandozeilen-Ebene, nicht auf Binärcode-Ebene) zu bauen, das er später nach seinem Vornamen (Linux = "Linus' UNIX") benannte (der erste Versuch einer Namensgebung lautete übrigens "Freax", wahrscheinlich wäre Linux mit diesem Namen nie berühmt geworden ;-). In einer seiner ersten Mails vom 3.7.1991 in diesem Zusammenhang sucht er nach der POSIX Standard Definition, die die API- und Kommandozeilen-Ebene eines UNIX-kompatiblen Betriebssystems beschreibt.

   From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
   Newsgroups: comp.os.minix
   Subject: Gcc-1.40 and a posix-question
   Date: 3 Jul 91 10:00:50 GMT
   Hello netlanders,
   Due to a project I'm working on (in minix), I'm interested in the posix
   standard definition. Could somebody please point me to a (preferably)
   machine-readable format of the latest posix rules? Ftp-sites would be

Als Basis dieser Entwicklung verwendete er zunächst das UNIX-Lernsystem Minix des Informatikprofessors und Betriebssystem-Experten Andrew S. Tanenbaum, das er aber bereits sehr früh durch sein eigenes Linux-System ersetzen konnte (oder "musste": Der Sage nach ging seine Festplatte mit dem MINIX-Entwicklungssystem kaputt, als eine erste Version von Linux fast lauffähig war und er musste sich entscheiden …).

Nach seinem inzwischen berühmten ersten "Posting" zu Linux am 25.8.1991 mit der Ankündigung seines Vorhabens

   From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
   Newsgroups: comp.os.minix
   Subject: What would you like to see most in minix?
   Summary: small poll for my new operating system
   Date: 25 Aug 91 20:57:08 GMT
   Organization: University of Helsinki
   Hello everybody out there using minix -
   I'm doing a (free) operating system (just a hobby, won't be big and
   professional like gnu) for 386(486) AT clones. This has been brewing
   since april, and is starting to get ready.  I'd like any feedback on
   things people like/dislike in minix, as my OS resembles it somewhat
   (same physical layout of the file-system (due to practical reasons)
   among other things).
   I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
   This implies that I'll get something practical within a few months, and
   I'd like to know what features most people would want.  Any suggestions
   are welcome, but I won't promise I'll implement them :-)
                 Linus (torvalds@kruuna.helsinki.fi)
   PS.  Yes - it's free of any minix code, and it has a multi-threaded fs.
   It is NOT protable (uses 386 task switching etc), and it probably never
   will support anything other than AT-harddisks, as that's all I have :-(.

und einer weiteren Mail vom 5.10.1991 von ihm zur ersten Freigabe einer Linux-Version

 From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
   Newsgroups: comp.os.minix
   Subject: Free minix-like kernel sources for 386-AT
   Date: 5 Oct 91 05:41:06 GMT
   Organization: University of Helsinki
   Do you pine for the nice days of minix-1.1, when men were men and wrote
   their own device drivers? Are you without a nice project and just dying
   to cut your teeth on a OS you can try to modify for your needs? Are you
   finding it frustrating when everything works on minix? No more all-
   nighters to get a nifty program working? Then this post might be just
   for you :-)
   As I mentioned a month(?) ago, I'm working on a free version of a
   minix-lookalike for AT-386 computers.  It has finally reached the stage
   where it's even usable (though may not be depending on what you want),
   and I am willing to put out the sources for wider distribution.  It is
   just version 0.02 (+1 (very small) patch already), but I've successfully
   run bash/gcc/gnu-make/gnu-sed/compress etc under it.
   Sources for this pet project of mine can be found at nic.funet.fi
   ( in the directory /pub/OS/Linux.  The directory also
   contains some README-file and a couple of binaries to work under linux
   (bash, update and gcc, what more can you ask for :-).  Full kernel
   source is provided, as no minix code has been used.  Library sources are
   only partially free, so that cannot be distributed currently.  The
   system is able to compile "as-is" and has been known to work.  Heh.
   Sources to the binaries (bash and gcc) can be found at the same place in
   ALERT! WARNING! NOTE! These sources still need minix-386 to be compiled
   (and gcc-1.40, possibly 1.37.1, haven't tested), and you need minix to
   set it up if you want to run it, so it is not yet a standalone system
   for those of you without minix. I'm working on it. You also need to be
   something of a hacker to set it up (?), so for those hoping for an
   alternative to minix-386, please ignore me. It is currently meant for
   hackers interested in operating systems and 386's with access to minix.
   The system needs an AT-compatible harddisk (IDE is fine) and EGA/VGA. If
   you are still interested, please ftp the README/RELNOTES, and/or mail me
   for additional info.
   I can (well, almost) hear you asking yourselves "why?".  Hurd will be
   out in a year (or two, or next month, who knows), and I've already got
   minix.  This is a program for hackers by a hacker.  I've enjouyed doing
   it, and somebody might enjoy looking at it and even modifying it for
   their own needs.  It is still small enough to understand, use and
   modify, and I'm looking forward to any comments you might have.
   I'm also interested in hearing from anybody who has written any of the
   utilities/library functions for minix. If your efforts are freely
   distributable (under copyright or even public domain), I'd like to hear
   from you, so I can add them to the system. I'm using Earl Chews estdio
   right now (thanks for a nice and working system Earl), and similar works
   will be very wellcome. Your (C)'s will of course be left intact. Drop me
   a line if you are willing to let me use your code.
   PS. to PHIL NELSON! I'm unable to get through to you, and keep getting
   "forward error - strawberry unknown domain" or something.

begannen sich viele Leute dafür zu interessieren und seitdem wurde Linux von ihm und vielen Freiwilligen auf der ganzen Welt weiterentwickelt.

1.2 Linux-Versionen

Die seitdem entwickelten Versionen stehen unter www.kernel.org zum Download zur Verfügung. Anfänglich bezeichneten gerade Versionsnummern Produktions-Versionen und (hier fehlende) ungerade Versionsnummern Entwicklungs-Versionen. Seit Version 2.6.0 wird das Entwicklungsmodell "Rolling-Releases" verwendet. Die Versionsnummern 3.0, 4.0 und 5.0 wurden willkürlich eingeführt, um die Unterversionsnummern nicht zu groß werden zu lassen:
Version Datum
0.01 Sep 1991
0.02 Okt 1991
0.11 Dez 1991
0.12 = 0.9 Jan 1992
0.95 Mär 1992
0.96 Apr 1992
0.97 Aug 1992
0.98 Okt 1992
0.99 Dez 1993
Version Datum
1.0 Mär 1994
1.2 Mär 1995
2.0 Jun 1996
2.2 Jan 1999
2.4 Jan 2001
2.6.0 – 2.6.39 Dez 2003 – Jun 2011
3.0 – 3.19 Jul 2011 – Jan 2015
4.0 – 4.20 Feb 2015 – Jan 2019
Version Datum
5.0 Mär 2019
5.1 Mai 2019
5.2 Jul 2019
5.3 Sep 2019
5.4 Nov 2019
5.5 Jan 2020
5.6 Mär 2020
5.7 Mai 2020
5.8 Aug 2020
5.9 Okt 2020
Version Datum
5.10 Dez 2020
5.11 Feb 2021
5.12 Apr 2021
5.13 Jun 2021
5.14 Aug 2021
5.15 Nov 2021
5.16 Jan 2022
5.17 Mär 2022
5.18 Mai 2022
5.19 Jul 2022?

1.3 Disput mit Andrew S. Tanenbaum

Berühmt wurde auch der Disput zwischen Linus Torvalds und Andrew S. Tanenbaum im Januar/Februar 1992, der mit dem berühmten Satz "Linux is obsolete" ("Linux ist überflüssig") begann.

Professor Tanenbaum meinte damit vor allem die technologische Rückständigkeit des anfangs monolithischen, nicht portierbaren Linux-Kernels (lief nur auf Intel i386) gegenüber modernen Betriebssystemen mit Micro-Kerneln, aber auch die verteilte und ungesteuerte Entwicklung von Linux.

1.4 Grundlegende Entscheidungen

Heutzutage ist Linux natürlich auf viele Hardware-Plattformen portiert und aus dem monolithischen Kernel wurde ein modularer Kernel (eine Zwischenstufe zwischen monolithischem und Micro-Kernel). Der Entwicklungsprozeß ist nach wie vor verteilt, aber es gibt Kontroll-Instanzen und einen kleinen Kreis von Entwicklern, der die strategischen Entscheidungen trifft.

Torvalds konterte diesen damals berechtigten Einwand von Andrew S. Tanenbaum, indem er mit ein paar geschickten Entscheidungen Linux auf einen langfristigen Erfolgkurs brachte:

  • Freigabe des Linux-Codes unter der GPL (GNU public license)
  • Vollständige Offenlegung des Entwicklungsprozesses
  • Verwendung der bereits vorhandenen GNU-Software statt Neuentwicklung
  • Beteiligung vieler Entwickler weltweit
  • Berücksichtigung von Anwenderwünschen
  • Orientierung an offenen Standards (z.B. POSIX, XPG, OSF, COSE, RFCs, …)
  • Mäßige Kontrolle des Entwicklungsprozesses
  • Sorgfältige Tests vor der Freigabe einer Version (2 Wochen Entwicklungsphase + 7-8 Wochen Testphase)
  • Technische Orientierung
  • Pragmatismus
  • Kein Marketing
Diese Kombination, das zunehmend für Privatanwender erschwingliche Internet und die Tatsache, dass die Zeit dafür einfach "reif" war, haben Linux zu einem sehr erfolgreichen Betriebssystem gemacht.

1.5 Der Pinguin "Tux"

Der Pinguin "Tux" (geschaffen von dem Cartoonisten Larry Ewing) ist seit 1996 das offizielle Maskottchen von Linux, da Linus Torvalds eine Vorliebe für Pinguine hat, seitdem er im Zoo von Canberra von einem dieser kälteliebenden Frackträger gebissen wurde:

Bild vom Linux-Pinguin Tux
Selbstverständlich gibt es für Linux auch einen echten Pinguin namens Tux als Maskottchen: Führende Köpfe der Linux-Community adoptierten 1997 anläßlich des Geburtstags von Linus Torvalds für diesen einen Schwarzfußpinguin im Zoo von Bristol (Großbritannien):

1.6 Eigenschaften von Linux

Im Unterschied zu Windows ist Linux nicht nur auf Intel-i386-PCs, sondern auch auf vielen anderen Hardware-Plattformen einsetzbar:
  • ARM (Acorn)
  • AMD x86-64 (64 Bit, Opteron)
  • AVR32 (Atmel)
  • DEC Alpha (jetzt HP, vorher Compaq)
  • Hitachi SuperH
  • IBM PowerPC
  • IBM S/390 (Mainframe, 31 Bit)
  • IBM S/390x (Mainframe, 64 Bit)
  • Intel IA-32 (i386)
  • Intel/AMD x86-64/x64
  • Intel IA-64 (Itanium)
  • Intel Strong-ARM
  • Motorola 68k
  • OpenRISC
  • Renesas M32R
  • RISC-V
  • SUN SPARC und UltraSPARC
Linux bietet die gesamte Funktionalität, die man von einem modernen Betriebssystem erwartet:
  • Multiuser-Betrieb
  • Echtes (präemptives) Multitasking
  • Hierarchisches Dateisystem (aber keine Laufwerk-Buchstaben)
  • Geräteunabhängigkeit
  • Netzwerkfähigkeit
  • Ausgereiftes Zugriffsrechte-System (z.B. auch ACLs)
  • Symmetric Multi Processing-Unterstützung (SMP)
  • Threads ("Lightweight" Processes)
  • Virtuelle Speicherverwaltung
  • Speicherschutz-Mechanismen
  • Dynamisch nachladbare Bibliotheken
  • Hohe Netzwerk-Performance (eBPF = extended Berkeley Packet Filter)
  • Grafische Oberfläche auf Wunsch (X Window, Wayland, MIR; KDE, GNOME, …)
  • Logical Volume Management (LVM)
  • Resource Mangement (Control Groups cgroups)
  • Virtualisierung (Kernel Virtual Machine KVM)
  • Container (Linux Container LXC)
  • Sicherheitssysteme (SELinux Security-Enhanced Linux, AppArmor)
Alle diese Eigenschaften machen Linux zu einer guten Lösung für viele Einsatzgebiete. Linux wird daher weltweit auf Milliarden von Rechnern erfolgreich eingesetzt und ist somit das am weitesten verbreitete Betriebsystem auf diesem Planeten.

1.7 Gründe für Linux

  • Ausgereift, extrem stabil und performant (seit 31 Jahren verfügbar)
  • Hält viele Standards ein (POSIX, X/Open, RFC, …)
  • Viele fertige Tools + Entwicklungs-Werkzeuge vorhanden
  • Automatisierbar durch programmierbare Shell
  • Fern-Administration integriert
  • Portabel
  • Resourcen-schonend
  • Genau auf die Anforderungen "zuschneiderbar"
  • Keine grafische Oberfläche notwendig (z.B. bei Servern)
  • Vielzahl von 32/64-Bit-Prozessoren wird unterstützt

Einige vordergründig nicht-technische Gründe für den Einsatz von Linux sind:

  • Deutlich weniger anfällig gegen Angriffe (als z.B. Windows; aufgrund seiner geringen Verbreitung auf dem Desktop und der überlegenen Sicherheitsmerkmale)
  • Keine Abhängigkeit von einem Hersteller
  • Mehr Wettbewerb
  • Lizenzkostenfrei
  • Die "Funktionsweise" ist vollständig dokumentiert
  • Die "Innereien" sind zugänglich
  • An Standards orientiert (z.B. POSIX, X/Open, RFC, …)
  • Man kann daran "herumbasteln"
  • Man kann mit daran entwicklen
  • Verschworene "Community"
  • Einfach "Hip"

1.8 Einsatzgebiete von Linux

Benutzt wird Linux von privaten Anwendern, Staaten, Ämtern, Behörden, Stadtverwaltungen, Ausbildungseinrichtungen, Schulen, Universitäten, Forschungszentren, kleinen, mittleren und großen Firmen, die es aus den verschiedensten Gründen als Alternative zu anderen Betriebssystemen sehen.

Die Hauptanwendungsgebiete von Linux sind derzeit:

  • Im Mobile- und Tablet-Bereich (Android).
  • Im Server-Bereich (Datei-, Druck-, Mail-, Web-, FTP-, Authentifizierung-Server)
  • In der Internet-Infrastruktur (Switches, Router, Mail-Server, DNS-Server). Man schätzt, dass 70-80% des Internets (Basissysteme) auf Linux-Rechnern läuft!
  • Im Netzwerk-Sicherheitsbereich (Proxy, Gateway, Firewall, Intrusion-Prevention und -Detection, Penetration Testing, Hacking)
  • In Cloud-Systemen (AWS Amazon Web Service, Microsoft Azure, GCP Google Cloud Platform, OCI Oracle Cloud Infrastructure, IBM Cloud, VMware Cloud, …). ALLE Cloud-Systeme basieren auf Linux!
  • Die Top-500-Rechner verwenden seit vielen Jahre ausschließlich Linux als Betriebssystem (da es Treiber für moderne Hardware mitbringt, im Quellcode vorliegt und damit extrem gut an die Spezialarchitekturen dieser Rechner anpassbar ist).
  • Als interne Systeme aller Tech-Giganten wie Amazon, Google, Meta (ehemals Facebook), Apple, Microsoft, Twitter, Instagram, …
  • In Spieleplattformen Steam, Sony PlayStation, Microsoft XBox, Nintendo DS, Wii und Switch, …
  • Im Consumerbereich bei Smart-TVs, Streaming-Geräten, Kaffee-Vollautomaten, …
  • Im Bereich Internet of Things (IoT)
  • Als Virtualisierungs-Plattform (VMware, VirtualBox, Xen, OpenVZ, Qemu, Bochs, KVM)

1.9 Standard-Anwendungen unter Linux

Aber auch als Desktop auf Anwender-Clients wird Linux mehr und mehr eingesetzt, da zu einer ganzen Reihe von sogenannten Standard-Anwendungen unter Windows vergleichbar leistungsfähige und stabile Produkte unter Linux existieren (siehe auch alternative.me, alternativeto.net, opensourcealternative.to, Free Software Directory, Free Software Directory, Free Software Resources, LibrePlanet, GNU Software, AEC Free Software Directory, Open Source Software Directory, Software for Projects).

Microsoft Windows Linux/GNU
.NET/C# DotGNU, Mono, Xamarin
MS-Access LibreOffice-Base, Kexi, Symphytum, Rekall
Acrobat Reader Xpdf, Kpdf, Evince, Okular, Qpdfview
PDF Editor PDFedit, Master PDF Editor
MS Active Directory Samba, OpenLDAP
Bilder/Fotoverwaltung F-Spot, gThumb, Shotwell, Darktable, Cumulus
E-Book Reader Calibre
Kalender KOrganizer, Lightning
Desktopsuche Beagle, Tracker
Editor Vim, Emacs, Geany, Sublime, Visual Studio Code, Atom
MS-Excel LibreOffice-Calc
MS-Exchange Exim, Postfix, Qmail, Sendmail
Fotonachbearbeitung digiKam, Darktable, ExifTool
Frontpage Bluefish, Coffecup, NVU, Quanta
Illustrator, Freehand, Coreldraw, Xara Inkscape
Internet Explorer Brave, Chrome, Firefox, Galeon, Konqueror, Lynx, Opera, Vivaldi
Internet Information Server (IIS) Apache, Nginx
MarkDown Editor Typora, Remarkable, Ghostwriter, Haaroupad, Moeditor, ReText
Media Player Clementine, Rythmbox, Lollypop, Audacious, Mplayer, Vlc, Xine
Mindmapper vym — View Your Mind
MP3-Player Amarok, Helix, XMMS
Nero Abcde, Brasero, K3b
Norton Commander Midnight Commander
Notepad Leafpad, Gedit, Kate
Office Applixware, KOffice, LibreOffice, OpenOffice, StarOffice, Abiword
OneDrive File Sync OneDrive-D, Dropbox, Syncthing
MS-Outlook KMail, Geary, Evolution, Horde, Kontact, Thunderbird
Photoshop Gimp
MS-Powerpoint LibreOffice-Impress
MS-Project MrProject
Quark Express Applixware, Scribus
Quicken GNUCash
MS-SQL-Server MariaDB, MySQL, PostgreSQL
Skype Skype
Taschenrechner Kcalc
MS-Teams BigBlueButton, Jami, Jitsi, OBS, Zoom
TeamViewer TeamViewer
Videoeditor OpenShot, Avidemux
Visio Dia
MS-Visual-Studio Eclipse, KDevelop, Visual Studio Code
MS-Windows Wine
Windows Explorer Konqueror, Nautilus
Winrar 7-Zip
MS-Word LibreOffice-Writer
Write Kwrite
Xara 3D Blender
Scannen XSane
Hyper-V VirtualBox

1.10 Linux-Distributionen

Für Linux-Systeme gibt es nicht wie sonst üblich nur einen Hersteller beziehungsweise Vertreiber, sondern mehrere sogenannte "Distributoren" stehen im Wettbewerb miteinander (nur eine kleine Auswahl):

Eine Distribution ist eine Zusammenstellung folgender Bestandteile zu einem Paket:

  • Datenträger/Images mit Linux-Betriebssystem und vielen Kommandozeilen- und Anwendungs-Programmen
  • Grafisches Installations- und Administrations-Programm mit Hardwareerkennung
  • Installations- und Anwender-Handbuch
  • Installations-Support per Telefon oder E-Mail (evtl. zeitlich begrenzt)
  • Repository mit aktuellen Versionen aller Komponenten zum Download + Update.

Linux wurde zunächst ausschließlich über Floppy Disks verteilt. Mit der stark steigenden Zahl von verfügbaren (Anwendungs)Programmen hat sich der Vertrieb über Distributionen mit Datenträgern und Images zum Download etabliert und wird zunehmend mit Supportdienstleistungen verknüpft.

Eine Distribution kostet zwischen 20,- und 100,- Euro für Datenträger und Handbücher. Das reine Herunterladen der Images aus dem Internet kostet in der Regel nichts.

Für Firmen gibt es inzwischen professionell orientierte Distributionen mit Wartungsverträgen und mehrjähriger Weiterentwicklungs- und Supportgarantie, die dann allerdings erst ab 400.- bis 2000.- Euro erhältlich sind. Interessant (und teuer) sind diese professionellen Distributionen vor allem deshalb, weil sie vom Hersteller für Hardware wie DELL, HP, IBM und für Software wie ORACLE, Sybase, SAP zertifiziert sind.

2 Das GNU-System

Im Zusammenhang mit Linux muss auf jeden Fall das GNU-Projekt (GNU steht für "Ghee it's not UNIX" oder "GNU's not UNIX") erwähnt werden. Es bildet zusammen mit dem Linux-Kern das (eigentliche) Linux-Betriebssystem, man sollte also eigentlich immer von "Linux/GNU" oder "GNU/Linux" sprechen!

Genau genommen bezeichnet "Linux" nämlich nur den ursprünglich von Linus Torvalds entwickelten "Kern" des Betriebssystems. Dieser Kern bietet ausschließlich Basisfunktionalitäten und ist für sich alleine nicht verwendbar. Er ist im wesentlichen für die Ansteuerung der Hardware (Treiber) und für die Koordination von Hard- und Software verantwortlich (Ressourcen-Management für CPUs, Speicher, Datenträger, Benutzer und Gruppen, Prozesse, I/O-Kanäle, Netzwerk und Virtualisierung).

Ein "richtiges" Betriebssystem entsteht erst durch das Hinzufügen weiterer — für einen sinnvollen Einsatz unbedingt notwendiger — Komponenten wie z.B.

  • Kommandozeilen-Werkzeuge (Tools)
  • Programmierumgebungen (C/C++-Compiler + Tools)
  • Skriptsprachen (Shell, Awk, Perl, Python, Tcl/Tk, Ruby, Lua, …)
  • Netzwerksoftware (Clients + Server)
  • Grafische Oberflächen
    • X Window (grundlegende Grafik-Funktionen)
    • KDE (Kool Desktop Environment)
    • GNOME (GNU Network Object Model Environment)

GNU wurde ebenfalls als UNIX-kompatibles Betriebssystem (auf API- und Kommandozeilen-Ebene, nicht auf Binärcode-Ebene) von Richard Stallman im Jahr 1984 als Fulltime-Projekt begonnen, als dieser sich über seine Abhängigkeit von Hardware-Herstellern ärgerte, die nicht bereit waren, Fehler aus ihrer Geräte-Software zu entfernen (extra deswegen kündigte er seine Stelle beim MIT). Er gründete 1985 die FSF (Free Software Foundation) und ersann die GPL (GNU General Public License), eine "revolutionäre" Software-Lizenz, die so ganz anders geartet war als alle bis dahin bekannten Lizenz-Spielarten von Software-Herstellern.

Allerdings begann Herr Stallman mit der Realisierung seines UNIX-Ersatz-Systems am anderen Ende. Nicht der Kern des Betriebssystems wurde zuerst implementiert, sondern die vielen für ein Betriebssystem notwendigen Werkzeuge außen herum wurden von ihm selbst und anderen Freiwilligen implementiert bzw. aus anderen OSS-Projekten in dieses System integriert, z.B.:

  • Editoren "emacs" und "vim"
  • Portabler GNU-C-Compiler "gcc"
  • Portabler GNU-C++-Compiler "g++"
  • Portabler GNU-Fortran-Compiler "f77"
  • Portabler GNU-Awk-Interpreter "gawk"
  • Portabler GNU-PostScript-Interpreter "Ghostscript"
  • Kommandozeilenorientierter GNU-Debugger "gdb"
  • Grafischer GNU-Debugger "ddd"
  • GNU-make "gmake"
  • Kommando-Shell "bash"
  • Scanner-Generator "flex" und Parser-Generator "bison"

Lange bevor der geplante eigene GNU-Betriebssystem-Kern "Hurd" (Hird of UNIX-Replacing Daemons) verfügbar wurde (erste brauchbare Version etwa um 2015), hatte sich aber bereits der "Linux"-Kern von Linus Torvalds durchgesetzt.

Linux setzt die GNU-Compiler-Chain und die vielen GNU-Tools als essenziell wichtige Bestandteile des Betriebssystems und auch zum "Bauen" der Linux-Kerns ein (d.h. zum Übersetzen des in der Programmiersprache C geschriebenen Linux-Quellcodes in Maschinensprache).

Das offizielle Maskottchen von GNU ist ein "Gnu":

Bild vom GNU-Gnu GNU

2.1 GPL

Hauptsächlicher Grund für die weite Verbreitung von Linux ist — neben der technologischen Qualität — dass es von Anfang an unter die im Zusammenhang mit dem GNU-Projekt entwickelte GPL (GNU General Public License) gestellt wurde.

Diese Lizenz garantiert jedem den kostenlosen Zugang zum Quellcode von Linux. Linux darf und muss frei und kostenlos kopiert, übertragen, verteilt, eingesetzt, verändert und erweitert werden. Entwickler haben daher vollständigen Einblick in den Quellcode. Sie können somit sehr einfach neue Funktionalitäten ergänzen bzw. (sicherheitsrelevante) Programmierfehler schnell finden und beheben.

Treiber für neue Hardware (z.B. SATA-Controller, Grafikkarten, WLAN, TV-Karten, …) können dadurch ebenfalls sehr schnell integriert werden (sofern ihre Ansteuerung vom Hardware-Hersteller offengelegt wird, was leider nicht immer der Fall ist ;-(). Allerdings führt die Verwendung von GPL-Software zusammen mit eigenentwickelter Software dazu, dass diese eigene Software ebenfalls automatisch unter der GPL steht ("Copyleft-Prinzip").

2.2 LGPL

Die LGPL (GNU Lesser General Public License) (und auch z.B. die BSD-Lizenz) erlaubt im Gegensatz zur GPL den Einsatz zusammen mit eigenentwickelter Software, ohne dass deren Quellcode offengelegt werden muss. Unter die LGPL fallen z.B. die mit dem gcc oder g++ mitgelieferten C- und C++-Bibliotheken.

Viele Software-Pakete (z.B. Qt oder MySQL) kommen auch in Form von 2 Lizenzen. Einer kostenfreien unter der GPL und einer kommerziellen (mit Kosten verbundenen) unter einer anderen Lizenz. Dies erlaubt jedem die Entscheidung, ob er den Quellcode seiner eigenen — damit entwickelten — Software offenlegt und keine Lizenzgebühren zahlt oder ob er lieber Lizenzgebühren zahlt und dafür seine Software-Quellen nicht offenlegt.

3 BSD-Systeme

Neben Linux gibt es noch weitere UNIX-kompatible Open Source Betriebssysteme (auf API- und Kommandozeilenebene, nicht auf Binärcode-Ebene), z.B. eine Linie die aus dem UNIX-Derivat BSDLite 4.4 (Berkeley Software Distribution) entstanden ist:
  • 386BSD (erstes Open Source BSD-System, Forks sind NetBSD, OpenBSD, FreeBSD)
  • Darwin (Open Source BSD von Apple, Grundlage von System X)
  • DragonflyBSD (Fork von FreeBSD)
  • FreeBSD (sehr optimiertes und robustes BSD-UNIX, Fork von 386BSD)
  • GhostBSD (Desktop BSD-UNIX, Fork von FreeBSD)
  • MidnightBSD (Desktop BSD-UNIX, Fork von FreeBSD)
  • NetBSD (sehr portables BSD-UNIX, Fork von 386BSD)
  • OpenBSD (sehr sicheres BSD-UNIX, Fork von NetBSD)
Weitere Links zu BSD.

4 Mac OS X / OS X / macOS / iOS / iPadOS (Apple) Top

Das seit vielen Jahren als Nachfolger von Apple macOS 9 auf Apple-Rechnern eingesetzte Betriebssystem Mac OS X ("X" steht für Version "10") ist ebenfalls ein BSD-UNIX-Derivat. Es hieß früher NeXTStep und stammte ursprünglich von der Firma NeXT, die dem Apple-Mitgründer Steve Jobs gehörte und später von Apple aufgekauft wurde. Das Original-NeXTStep-System wird als GNUstep/OpenStep weitergeführt

Im Unterschied zu Linux basiert NeXTStep (und damit auch Mac OS X) auf dem fortschrittlichen Micro-Kernel MACH 2.5. Weitere bahnbrechende Besonderheiten von NeXTStep waren die Verwendung von Display PostScript statt X Window für die grafische Oberfläche und von Objective C als Programmiersprache (seit mehreren Jahren ersetzt durch Swift als umfassende moderne Programmiersprache zur App-Entwicklung für alle Apple-Betriebssysteme). Der Name Mac OS X wurde später in OS X und dann in macOS geändert, hier eine Liste der bisher erschienenen Versionen:

Name Nr Datum
Mac OS X
Cheetah 10.0 Mär 2001
Puma 10.1 Sep 2001
Jaguar 10.2 Aug 2002
Panther 10.3 Okt 2003
Tiger 10.4 Apr 2005
Leopard 10.5 Okt 2007
Snow Leopard 10.6 Aug 2009
Lion 10.7 Jul 2011
Name Nr Datum
Mountain Lion 10.8 Feb 2012
Mavericks 10.9 Jun 2013
Yosemite 10.10 Jun 2014
El Capitan 10.11 Jun 2015
Sierra 10.12 Sep 2016
High Sierra 10.13 Jun 2017
Mojave 10.14 Jun 2018
Catalina 10.15 Jun 2019
Name Nr Datum
Big Sur 11.0 Nov 2020
Monterey 12.0 Okt 2021
Ventura 13.0 Nov 2022?

Hinweis: Der Sprung von Version 10.15 auf 11.0 erklärt sich durch die Anpassung von macOS an die neue, eigenenwickelte ARM-basierte Prozessorarchitektur M1, die ab dem Jahr 2020/2021 auf allen Apple-Geräten vom Typ Mac mini, MacPro, iMac, iMac Pro, MacBook Air und MacBook Pro eingesetzt wird. Sie löst die Intel-Prozessorarchitektur x86-64 von Intel ab, ebenso wie diese im Jahr 2006 die powerPC-Prozessorarchitektur von IBM und diese im Jahr 1994 die m68000-Prozessorarchitektur von Motorola ablöste. Auf iPhones und iPads wird schon immer ARM als Prozessorarchitektur eingesetzt (A1-A15).

5 Das UNIX-System

UNIX ist eigentlich eine portable Betriebssystemfamilie mit den beiden Hauptlinien
  • UNIX System V (ursprüngliches UNIX-System von den AT&T Bell Laboratories)
  • BSD-UNIX (Berkeley Software Distribution von der UCB = University of California at Berkeley)
Sie bilden die Grundlage für fast alle heutigen kommerziellen und nichtkommerziellen UNIX-artigen Betriebssysteme. "UNIX" ist mittlerweile ein geschütztes Markenzeichen der Open Group. Alle vergangenen und noch existierenden UNIX-Systeme wie
  • AIX (IBM)
  • HP/UX (Hewlett-Packard)
  • Irix (Silicon Graphics)
  • NextStep (Next)
  • SCO UnixWare (Santa Cruz Operation)
  • SunOS (SUN Microsystems)
  • Solaris (SUN Microsystems)
  • Tru64 (Compaq)
  • Ultrix (Digital Equipment Corporation)
stammen von einer der beiden Hauptlinien ab (Linux ist hingegen eine komplette Neuentwicklung und versucht beide Linien wieder zu integrieren). UNIX ist sicher eines der einflussreichsten Betriebssysteme im Bereich der modernen Computernutzung.

5.1 UNIX-Historie

Vorläufer des Betriebssystems UNIX war das System MULTICS, das um 1965 gemeinsam von den Hardware-Herstellern General Electric, Honeywell, dem MIT (Massachusetts Institute of Technology) und den AT&T Bell Laboratories begonnen wurde. Aufgrund seiner ambitionierten Ziele und der damals noch nicht ausreichend fortgeschrittenen Hardware-Technologie stieg AT&T aus dem Projekt aus.

Einige der in den Bell Laboratories von AT&T an MULTICS beteiligten Entwickler (Dennis Richie, Doug McIlroy, Joseph Ossanna, Brian Kernighan, Ken Thompson) implementierten ausgehend von diesen Erfahrungen ab 1969 dann ein deutlich reduziertes Multi-User-Betriebssystem auf einem Minicomputer PDP-7 von DEC (Digital Equipment Corporation), zunächst noch in Assembler (Maschinensprache).

Ziel war es, ein Mehrbenutzersystem zu schaffen, das zur Programmierung und zur Bildung einer Gemeinschaft der Benutzer dienen sollte. Die PDP/7-Hardware war denkbar einfach (16 + 8 KByte Speicher, 512 KByte Festplatte, Dateigröße maximal 64 KByte), daher wurden in dem Projekt einige weitreichende Entscheidungen getroffen, die auch heute noch in UNIX-Systemen anzutreffen sind (siehe UNIX-Prinzipien).

Das System wurde 1970 auf eine PDP-11 migriert und intern im Patentbüro der Bell Laboratories als Textverarbeitungssystem eingesetzt. Der Begriff "UNIX" entstand als eine "Verballhornung" des Begriffs "UNICS" (Uniplexed Information & Computing Service), der wiederum vom Begriff "MULTICS" (Multiplexed Information & Computing Service) abgeleitet war.

1971-1973 wurde UNIX (bis auf wenige Teile) in der höheren Programmiersprache C neu implementiert (Abkömmling von B bzw. BCPL bzw. NB, erst damit wurde es wirklich portabel) und auf eine PDP-11/74 portiert (in diesem Zusammenhang entstand auch das Konzept der Pipes). 1974 wurde dieses System unter dem Namen UNIX V4 abgeschlossen.

UNIX wurde 1973 einer breiteren Öffentlichkeit bekannt, als es auf einer Tagung (ACM Symposium) vorgestellt wurde und 1974, als dieser überarbeitete Vortrag unter dem Titel "The UNIX Time-Sharing System" in der Zeitschrift CACM (Communications of the Association for Computing Machinery) erschien. Das Interesse an diesem System wuchs und viele wollen es einsetzen. Aufgrund der Monopolstellung von AT&T im Telefon-Markt durfte das UNIX-System nicht verkauft werden, und so wurde der Quellcode des Systems (!) gegen einen geringen Unkostenbeitrag in Form von "Tapes" (Bändern) an Interessierte "verschenkt".

Das System wurde daher von vielen Hardware-Herstellern und Universitäten eingesetzt und erweitert, vor allem an der University of California at Berkeley (UCB), die das später sehr verbreitete BSD-UNIX schuf. 1980 wurde es dort auch auf einen damals verbreiteten Computer, die 32-Bit-Maschine VAX der Firma Digital Equipment Corporation portiert (die erste 32-Bit-Version von UNIX).

Ab 1979 versuchte AT&T mit UNIX V7 das System kommerziell zu vermarkten. Auch Microsoft versucht mit XENIX eine kommerzielle Portierung auf Intel 80286 Prozessoren, übergibt aber später die Rechte an diesem System an die Firma SCO (Santa Cruz Operation).

Ab 1980 finanzierte die DARPA (Defense Advanced Research Projects Agency) für mehr als 20 Jahre die BSD-UNIX-Entwicklung an der UCB (University of California at Berkeley, auch "Cal"), vor allem, um das gerade entwickelte TCP/IP-Protokoll zu verbreiten, das als kriegswichtig galt.

Die verschiedenen UNIX-Linien begannen im Zuge dieses Prozesses immer mehr auseinanderzulaufen, was z.B. die Portierung von Software oder die einheitliche Systemadministration erschwerte (siehe UNIX-Versions-Geschichte).

5.2 UNIX-Prinzipien

Das Betriebssystem UNIX wurde auf Basis folgender Prinzipien konzipiert und realisiert, die seine "Essenz" ausmachen. Sie sind auch heute noch für die Eleganz (und die Widersprüchlichkeiten) des UNIX-Systems verantwortlich.
  • Grundlegende Prinzipien
    • "Small is beautiful"
    • KISS ("Keep it simple stupid")
    • Portabilität ist mehr wert als Effizienz ("C statt Assembler")
    • Prozess-Erzeugung ist billig ("fork")
    • Vollständige Dokumentation online verfügbar (Usage-Meldungen, Manual/Info-Pages)
    • Experten-System für Experten ("Programmierer")
  • Dateisystem
    • Ein logischer hierarchischer Dateibaum (eine Wurzel "/" = "root" )
    • Alle Unicode-Zeichen in Dateinamen erlaubt außer "/" (Verzeichnistrenner) und NUL-Byte
    • GROSS/Kleinschreibung zählt (aus pragmatischen Gründen wird aber fast alles klein geschrieben)
    • Extensions sind irrelevant (Datei "öffnen" wird über Execute-Recht + "Shee-Bang-Zeile" gesteuert)
    • Hardware (Geräte) ist per Dateiname ansprechbar ("Alles ist eine Datei")
    • System- und Benutzerdaten sind streng getrennt
    • Jeder Benutzer hat ein eigenes Heimatverzeichnis für seine Daten (strenge Trennung der Benutzer untereinander)
  • Dateiformat
    • Dateien sind ein "Strom von Bytes" (keine Binär- oder Record-orientierten Formate)
    • Standard-Dateiformat ist die zeilenorientierte Textdatei (keine Binärdateien)
    • Zeichensatzcodierung ist UTF-8 (enthält ASCII als Basis)
    • Zeilenende "\n" (Newline) strukturiert Textdaten in Zeilen (nicht "\r\n" wie in Windows)
    • Kommentare + Kommentarzeilen beginnen einheitlich mit "#" (bis zum Zeilenende)
  • Systemkonfiguration + -administration
    • Konfiguration erfolgt per zeilenorientierten Textdateien (enthalten evtl. auch Kommentare zur Dokumentation)
    • Verzeichnis "/etc" enthält die System-Konfiguration ("et cetera", Registry)
    • Benutzerspezifische Konfiguration per "versteckte" Dateien ("Dot files" beginnen mit ".") im Benutzerverzeichnis
    • Zur Systemadministration genügt ein Terminal + ein Editor (Vim, Emacs, …)
  • Programme / Werkzeuge
    • Jedes Programm kennt 3 standardmäßig geöffnete Dateien: Standard-Eingabe, -Ausgabe und -Fehlerkanal (Stdin, Stdout, Stderr)
    • Viele kleine spezialisierte Standard-Werkzeuge ("Tools")
    • Werkzeuge sind als "Filter" realisiert (lesen Input von Stdin, schreiben Output auf Stdout, schreiben Fehlermeldungen auf Stderr)
    • Exit-Status eines Kommandos zeigt korrekten/fehlerhaften Aufruf/Ablauf an
  • Benutzerschnittstelle
    • Kommandozeilen-orientierte interaktive Benutzerschnittstelle ("Shell statt GUI")
    • Kommando-Interpreter "Shell" ist nicht Teil des Betriebssystems (daher leicht austauschbar)
    • Die Shell kennt viele eingebaute Standard-Mechanismen (Filter-Eigenschaft, Exit-Status, Kommandozeilen-Parameter, Filename Globbing, Umlenkung, Pipe, Kommando-Substitution, Variablen-Substitution, History, Aliase, Tab-Completion, Funktionen, Hintergrund-Prozesse, Signale, Quotierung, …)
    • Keine unnötigen Ablaufmeldungen (UNIX ist "stumm")
    • Keine Rückfragen ("Der Benutzer weiß was er tut")
    • Kurze und prägnante Fehlermeldungen
  • Zugriffsrechte
    • Multiuser-System von Beginn an (gegenseitiger Schutz der Benutzer voreinander)
    • Jede Datei ist einem Besitzer + einer Besitzer-Gruppe zugeordnet (Ersteller)
    • Überschaubar (im wesentlichen 3 Stück: r=read, w=write, x=execute)
    • Normale Benutzer dürfen fast alles ansehen, aber fast nichts verändern
    • Der Systemadministrator "root" darf alles
  • Skripting (Programmierung + Automatisierung)
    • Interaktiver Kommando-Interpreter "Shell" auch zum Skripting gut geeignet
    • Alle Kommandos sind auch in Shell-Skripten verwendbar ("Benutzer = langsames Shell-Skript")
    • Exit-Status der Kommandos erlaubt Reaktion darauf + Ablaufsteuerung
    • Werkzeuge sind leicht kombinierbar aufgrund folgender Eigenschaften
      • Filter-Eigenschaft
      • Zeilenorientierter ASCII-Text als Ein- + Ausgabe
      • Exit-Status
      • Kommandozeilen-Parameter
      • Filename Globbing (Dateinamen-Expansion)
      • Umlenkung und Pipe
      • Kommando-Kombination
      • Kommando-Substitution
      • Variablen-Substitution
      • Funktionen
      • Hintergrund-Prozesse
      • Signale
      • Quotierung
    • Rekursiv: Jedes Skript = neues Werkzeug!

5.3 UNIX-Standards

Da es aufgrund der historischen Entwicklung nicht "das UNIX-System" gab, versuchten ab den 80-er Jahren einige Organisationen wie
  • OSF (Open Software Foundation)
  • UI (UNIX International)
  • X/Open (Bison = Vereinigung europäischer Firmen)
  • Open Group (Bison = Vereinigung europäischer Firmen)
über eine Reihe von Standards das UNIX-System zu vereinheitlichen:
  • COSE (Common Open Software Environment)
  • POSIX (Portable Operating System Interface)
  • SUS (Single UNIX Specification)
  • SVID (System V Interface Definition)
  • XPG (X/Open Portability Guide)
  • XSI (X/Open System Interface)

Aufgrund der Rivalitäten unter den einzelnen Herstellern (als "UNIX-Krieg" bekannt) und einer Reihe von Copyright-Prozessen zwischen AT&T und BSD scheiterten alle diese Bemühungen oder zogen sich zumindest sehr lange hin. Inzwischen erfüllen aber die meisten UNIX-System den System V- und POSIX-Standard (der eine Zusammenfassung von SysV und BSD darstellt).

5.4 Grafische Oberflächen

Zunächst kannten die einzelnen UNIX-Systeme noch keine grafische Benutzerschnittstelle (GUI). Mit der Entwicklung der grundlegenden und portablen Grafik-Schnittstelle X11 Window am MIT (Massachusetts Institute of Technology) wurde diese Art der Benutzung eines UNIX-Systems aber immer interessanter. Leider entwickelten sich auch hier viele verschiedene, untereinander inkompatible Ansätze wie z.B.:
  • CDE (Common Desktop Environment)
  • Looking Glass
  • OpenLook
  • OpenWindows (SUN)
  • VUE (Visual User Environment, Hewlett Packard)
  • Wabi (Windows Binary Application Interface, SUN)
  • XDG (X Desktop Group)
  • freedesktop.org

Inzwischen haben sich als Standard aber folgende Grafische Oberflächen herausgebildet:

  • GNOME (GNU Network Object Model Environment)
  • KDE (Kool Desktop Environment)
  • XFCE (XForms Common Environment)
  • LXDE (Lightweight X11 Common Environment)

Das erste "Posting" zu KDE am 14.10.1996 von Matthias Ettrich.

5.5 Besondere UNIX-Ableger

5.5.1 GNU

Aus Ärger über die zunehmende Kommerzialisierung von UNIX begann Richard Stallman 1984 das UNIX-kompatible Betriebssystem GNU (auf API- und Kommandozeilen-Ebene, nicht auf Binärcode-Ebene) als vollständige Neuentwicklung. Dieses System ist nicht-kommerziell und ist im Quellcode erhältlich.

Linux verwendet die im Rahmen dieses Projekts entwickelten Kommandozeilen-Tools als wesentliche Komponente (insbesondere die Shell "Bash").

5.5.2 MINIX

Ab 1987 entwickelte der Informatik-Professor Andrew S. Tanenbaum ein PC-basiertes UNIX namens MINIX zu Lehrzwecken, da das Original-UNIX-System von AT&T auch für Universitäten nicht mehr umsonst verfügbar war. Dieses System wurde bewußt nicht kommerziell vertrieben, sondern war gegen einen geringen Betrag inklusive Quellcode erhältlich. Auch das MINIX System ist nicht-kommerziell und im Quellcode erhältlich.

5.5.3 Linux

Mit der Schaffung des freien UNIX-Systems Linux durch Linus Torvalds als Neuimplementierung von UNIX ab 1991 hat der lange gehegte Traum eines einheitlichen UNIX-Systems wieder neue Nahrung bekommen. Als Ausgangsbasis verwendete er dabei obiges MINIX, das er aber sehr schnell durch sein selbst programmiertes System ersetzte.

Die Kombination Linux + GNU bildet heute das am weitesten verbreitete UNIX-System und erfüllt viele der obigen UNIX-Standards. Linux setzt inzwischen auch eigene Standards, weil es die anderen UNIX-Derivate verdrängt hat.

5.6 Besondere UNIX-Firmen

5.6.1 Novell und SUSE Linux

Von 1993-1995 besaß die Firma Novell die Rechte an UNIX, verkaufte sie dann aber an die Firma Caldera International (heute SCO). Ende 2003 vollzog Novell erneut den Einstieg in das UNIX-Geschäft, indem es den damals weltweit zweitgrößten Linux-Distributor SuSE AG (Deutschland) übernahm. Novell wurde 2010 von Attachmate übernommen, Attachmate 2014 von Micro Focus und das SuSE Geschäft 2018 von EQT Partners AB (Schweden) herausgekauft und übernommen. Die SUSE S.A. wurde am 19.5.2021 von EQT an die Börse gebracht.

5.6.2 SCO (Santa Cruz Operation)

Ab Anfang März 2003 führt die Firma SCO (bzw. UnXis, später umbenannt in Xinuos) eine Copyright-Klage gegen IBM, RedHat und diverse andere Linux-Hersteller und -Benutzer. Grundlage dieser Klage war die Behauptung, dass in Linux Quellcode aus dem Original-UNIX-System einkopiert wurde und die Firma SCO sich als Besitzer des Original UNIX-Quellcodes fühlte.

Dieses Gerichtsverfahren zog sich über 10 Jahren hin, da die Anwälte der Firma SCO ständig neue Anträge (z.B. auf zusätzliche Informationsbeschaffung seitens IBM) stellten und Anklagen gegenüber weiteren Firmen (z.B. Novell) erhoben, ohne aber jemals einen einzigen wirklichen Beweis für ihre Behauptung angetreten zu haben, ist aber inzwischen ohne Erfolg für die Firma SCO abgeschlossen worden (siehe SCO vs. Linux: Die unendliche Geschichte).