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 Message-ID: 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 nice.
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 Message-ID: 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 Message-ID: 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 (128.214.6.100) 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 /pub/gnu. 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. Linus 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 (siehe weiter unten).
Die Versionsnummern 3.0, 4.0, 5.0 und 6.0 wurden willkürlich eingeführt, um die Unterversionsnummern nicht zu groß werden zu lassen (Linus kann mit Händen + Füßen nur bis 20 zählen ;-):
|
|
|
1.3 Linux-Long-Term-Versionen (LTS)
Das Rolling-Release Entwicklungsmodell bedeutet: In einer 2-wöchigen Merge-Phase werden vorhandene Code-Änderungen/Erweiterungen/Löschungen von Linus Torvalds in die nächste Kernel-Version übernommen ("gemerged"), sofern er diese für sinnvoll hält (inhaltlich, qualitativ, …).Anschließend folgt eine 7-wöchige Test-Phase und es gibt wöchentlich
einen Kernel-Release-Candidate (rc1
bis rc7
).
In dieser Phase erfolgt nur noch Bugfixing, es wird kein neuer Code mehr
aufgenommen.
Gelegentlich wird ein einzelner Merge-Teil in der Test-Phase auch zurückgenommen, falls er sich als nicht stabil genug oder bei den Entwicklern als umstritten erweist.
Ist der neue Kernel schließlich stabil, wird er nach der 7-wöchigen
Test-Phase freigegeben und der Entwicklungs-Zyklus startet für die nächsten
Kernel-Version erneut mit der Merge-Phase. In seltenen Fällen gibt es auch
einen 8. Kernel-Release rc8
vor der Kernel-Freigabe.
Während der Merge- und Test-Phase für den nächsten Kernel wird noch Bugfixing am zuvor freigegebenen Vorgänger-Kernel durchgeführt. Üblicherweise wird eine Linux-Kernel-Version bei Freigabe der nächsten Version obsolet (EOL = End Of Life), d.h. es werden dann keine Fehlerkorrekturen mehr daran durchgeführt.
|
Distributoren pflegen in der Regel einen mit ihrer Distribution
veröffentlichten Kernel sehr lange und führen oft auch Backports der
Fähigkeiten neuerer Linux-Kerne auf diesen (alten) Kernel durch. Die Versionsnummer
dieser Kerne enthalten dann weitere herstellerspezifische Ergänzungen nach der
dreistelligen Linux-Versionsnummer:
5.15.0
⇒ 5.15.0-1059-raspi #62-Ubuntu
oder
5.4.10
⇒ 5.4.0-190-generic #210-Ubuntu
.
Einige (wenige) Long Term Versionen (LTS) des Linux-Kerns werden jedoch sehr lange gepflegt, indem auf sie Erweiterungen oder Fehlerkorrekturen von neueren Kernen übertragen werden ("Backports").
|
1.4 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.5 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 den 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 GNU GPL (General 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)
- User-Space ist "heilig" (keine Schnittstellen-Änderungen),
Kernel-Space ist jederzeit änderbar (interne Schnittstellen und Datenstrukturen) - Hardware-Treiber sind Teil des Kernel-Spaces und werden zusammen mit ihm gepflegt
- Technische Orientierung
- Pragmatismus
- Kein Marketing
1.6 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 (Australien) von einem dieser kälteliebenden Frackträger gebissen wurde:
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.7 Eigenschaften von Linux
Im Unterschied zu Windows ist Linux nicht nur auf Intel-i386-PCs, sondern auch auf vielen anderen Hardware-Plattformen einsetzbar:- ARM (Advanced RISC Machines)
- AMD x86-64 (64 Bit, Opteron)
- Apple Silicon (M1, M2, …)
- AVR32 (Atmel)
- AXIS CRIS
- DEC Alpha (HP, vorher Compaq bzw. DEC)
- DEC VAX
- Hitachi SuperH
- HP PA-RISC
- 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
- SGI MIPS
- SUN SPARC und UltraSPARC
- 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)
1.8 Gründe für Linux
- Ausgereift, stabil und performant (seit 32 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.9 Einsatzgebiete von Linux
Benutzt wird Linux von privaten Anwendern, Ämtern, Behörden, Stadtverwaltungen, Staaten, 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:
- Mobile- und Tablet-Bereich (Android).
- Server-Bereich (Datei-, Druck-, Mail-, Web-, Datenbank-, FTP-, Authentifizierung-Server)
- Applikations-Server (SAP, Oracle, Tomcat, JBoss, WebSphere, …)
- Internet-Infrastruktur (Switches, Router, Border-Gateway, NTP-Server, DNS-Server, Mail-Server). Man schätzt, dass 70-80% des Internets (Basissysteme) auf Linux-Rechnern läuft!
- Netzwerk-Sicherheitsbereich (Proxy, Gateway, Firewall, Intrusion-Prevention und -Detection, Penetration Testing, Hacking)
- Cloud-Systeme (AWS Amazon Web Service, Microsoft Azure, GCP Google Cloud Platform, OCI Oracle Cloud Infrastructure, IBM Cloud, VMware Cloud, …) — alle Cloud-Systeme basieren auf Linux!
- 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).
- Großrechner (IBM, Fujitsu, Hitachi, Bull, CDC, EMC, …)
- Simulationen (Klima-Forschung, Wetter-Vorhersage, Verkehr-Vorhersage und Simulation, Stern-, Galaxie- und Universum-Entwicklung, Protein-Faltung, Impfstoff- und Medikament-Entwicklung, Atombomben-Tests, Fahrzeug-Crash-Tests, …)
- Basissysteme aller Tech-Giganten wie Amazon, Alphabet (ehemals Google), Meta (ehemals Facebook), Apple, Microsoft, IBM, …
- Spieleplattformen Steam, Sony PlayStation, Microsoft XBox, Nintendo DS, Wii und Switch, …
- Consumerbereich (Smart-TVs, Streaming-Geräten, Kaffee-Vollautomaten, Thermomix, …)
- Internet of Things (IoT) wie z.B. Home-Automation, Überwachungs-Kameras, …
- Virtualisierungs-Plattform (VMware, VirtualBox, Xen, OpenVZ, Qemu, Bochs, KVM)
1.10 Standard-Anwendungen unter Linux
Aber auch als Desktop auf Anwender-Clients wird Linux mehr und mehr eingesetzt, da zu vielen 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 |
MATLAB | Octave |
Hyper-V | VirtualBox |
1.11 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):- Debian GNU/Linux (nicht-kommerzielle "reine" Linux-Distribution)
- Fedora (ehemals RedHat)
- Fli4l (ISDN/DSL/Ethernet-Router auf 1 Diskette)
- Gentoo (Linux selbst aus dem Quellcode "hochziehen")
- IPCop (Firewall auf Diskette/CD)
- Knoppix (Live Linux auf DVD mit KDE)
- Linux from Scratch (Linux selbst aus dem Quellcode "hochziehen")
- Linux Mint (Ubuntu-Ableger)
- OpenSuSE Linux (deutscher + europäischer Marktführer)
- SuSE Linux Enterprise Server SLES (deutscher + europäischer Marktführer)
- RedHat Linux (nordamerikanischer Marktführer)
- Slackware (sehr lange existierende Distribution)
- Ubuntu Linux (kommerzieller Debian-Ableger)
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 ständig aktualisierten 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 von Herstellern 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-Kernel das (eigentliche) Linux-Betriebssystem, man sollte also eigentlich immer von "Linux/GNU" oder "GNU/Linux" sprechen!Genau genommen bezeichnet "Linux" nämlich nur den von Linus Torvalds entwickelten "Kern" des Betriebssystems. Dieser Kernel bietet ausschließlich Basisfunktionalitäten und ist für sich alleine nicht nutzbar. 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
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 (ursprüngliche Ankündigung des GNU-Projekts vom 27. September 1983), 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 GNU 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-Kernel "Hurd" (Hird of UNIX-Replacing Daemons) verfügbar wurde (erste brauchbare Version etwa um 2015), hatte sich aber bereits der "Linux"-Kernel 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":
2.1 GNU GPL (General Public License)
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 GNU GPL (General 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 GNU LGPL (Lesser General Public License)
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 Nutzer 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 seinen Quellcode 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)
4 Mac OS X / OS X / macOS / iOS / iPadOS (Apple)
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ührtIm 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:
|
|
|
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, Mac Pro, 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, iPads, Apple Watch und Apple TV wird schon immer ARM als Prozessorarchitektur eingesetzt (A1-A16).
5 Das UNIX-System
UNIX ist eigentlich eine portable Betriebssystem-Familie 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)
- 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)
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)
- Zeichensatzcodierung ist UTF-8 (enthält ASCII als Basis)
- Standard-Dateiformat ist die zeilenorientierte Textdatei (keine Binärdateien)
- 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)
- 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
- MOTIF
- 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 und soll ab August 2023 wieder von der Börse genommen (Delisting) und von der Holding-Gesellschaft Marcel LUX III SARL übernommen werden.5.6.2 The SCO Group (Santa Cruz Operation)
Ab Anfang März 2003 führt die Firma SCO (bzw. "The SCO Group" bzw. "The TSG Group" bzw. UnXis, später umbenannt in Xinuos) eine Copyright-Klage gegen IBM, RedHat, Novell, AutoZone, DaimlerChrysler und diverse andere Linux-Distributoren und Linux-Benutzer. Grundlage dieser Klage war die Behauptung, dass in Linux Quellcode aus dem Original-UNIX-System einkopiert sei 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).