Eine Linux-Distribution ist eine Auswahl aufeinander abgestimmter Software um den Linux-Kernel, bei dem es sich dabei in einigen Fällen auch um einen mehr oder minder angepassten und meist in enger Abstimmung mit Upstream selbst gepflegten Distributionskernel handelt. Üblicherweise wird der Begriff auf Zusammenstellungen begrenzt, die weitgehend linuxtypisch aufgebaut sind, was beispielsweise auf Android nicht zutrifft.
Distributionen, in denen GNU-Programme eine essenzielle Rolle spielen, werden auch als „GNU/Linux-Distributionen“ bezeichnet. Die Namensgebung mit oder ohne GNU-Namenszusatz wird von den Distributoren je nach ihrer Position im GNU/Linux-Namensstreit unterschiedlich gehandhabt.
Fast jede Distribution ist um eine Paketverwaltung herum zusammengestellt, d. h., dass sämtliche Bestandteile der Installation als Pakete vorliegen und sich über den Paketmanager installieren, deinstallieren und updaten lassen. Die Pakete werden dazu online in sogenannten Repositories vorgehalten.
Zusammengestellt wird eine Linux-Distribution von ihrem Distributor. Für gewöhnlich wählt dieser Programme aus, bei denen er die nötigen Rechte hat, passt sie mehr oder weniger an, paketiert sie in seiner Paketverwaltung und bietet das Ergebnis als Distribution an. Normalerweise werden nur wenige Programme vom Distributor selbst geschrieben, häufig z. B. der Distributions-Installer. Der Distributor kann ein Unternehmen oder eine Gruppe von weltweit verteilten Freiwilligen sein. Er kann auch kommerziellen Support anbieten.
Die Idee hinter Distributionen ist ein Paket aufeinander abgestimmter Software zu bilden. Den zentralen Teil bilden dabei der Linux-Kernel selbst sowie Systemprogramme und Bibliotheken. Je nach Anwendungszweck der Distribution werden verschiedene Anwendungsprogramme (z. B. Webbrowser, Office-Anwendungen, Zeichenprogramme, Mediaplayer etc.) hinzugefügt.
Linux-Distributionen halten in der Regel eine große Anzahl an Programmen in den Repositories zur Installation bereit. Dies steht im konzeptuellen Gegensatz zu anderen Betriebssystemen wie Windows und macOS, die neben dem Betriebssystem selbst nur wenige Anwendungen enthalten, dafür auf die Integration von Programmen von externen Anbietern, sogenannten ISVs, setzen.
Weitere Aufgaben von Distributoren sind die Anpassung der Programme (durch Patches), Hinzufügen eigener Programmentwicklungen (vor allem zur Installation und Konfiguration des Systems wie zum Beispiel apt, Synaptic, YaST) sowie (bis auf wenige Ausnahmen, z. B. Gentoo) Kompilierung und Paketierung (.deb, .rpm) der Programme. Die Bereitstellung zusätzlicher Programme und Updates erfolgt typischerweise zentral über ein Repository, welches über ein Paketverwaltungs-System mit dem Betriebssystem synchronisiert wird.
Auch wenn bei Linux-Betriebssystemen Distributionen die bei weitem üblichste Variante sind, ist ein Betrieb von Linux auch ohne eine vorgefertigte Distribution möglich, zum Beispiel mithilfe von Linux From Scratch. In dem für Linux wichtigen Markt der eingebetteten Systeme sind Distributionen wenig verbreitet.
Neben dem Linux-Kernel besteht eine Distribution meist aus der GNU-Software-Umgebung. Diese stellt große Teile des grundlegenden Basissystems mit den zahlreichen Systemdiensten (sogenannten Daemons) sowie diverse Anwendungen bereit, die bei einem unixoiden System erwartet werden. Distributionen, welche auch oder nur für Desktop-Systeme gedacht sind, verfügen normalerweise über ein Fenstersystem, derzeit meistens das X Window System. Ein solches ist für das Ausführen einer grafischen Benutzeroberfläche erforderlich. Darauf aufbauend steht meist eine Desktop-Umgebung, wie bspw. Gnome oder die KDE Software Compilation, zur Verfügung, welche neben der reinen Benutzeroberfläche noch eine Auswahl an Anwendungsprogrammen mitbringt.
Ergänzend fügt ein Distributor normalerweise zahlreiche weitere Anwendungen bei. Dies sind beispielsweise Office-Pakete, Multimediasoftware, Editoren, E-Mail-Programme, Browser, aber auch Server-Dienste. Daneben finden sich meist Softwareentwicklungs-Werkzeuge wie Compiler bzw. Interpreter sowie Editoren.
Viele Softwarebestandteile von Linux-Distributionen, z. B. der Compiler GCC, stammen aus dem älteren GNU-Projekt. Dieses hatte sich schon vor der Entwicklung von Linux die Aufgabe gestellt, eine Alternative zu den kommerziellen Unix-Betriebssystemen zu entwickeln. Da der eigene Kernel des GNU-Projekts, GNU Hurd, noch in der Entwicklung ist, wird häufig als Ersatz der Linux-Kernel benutzt. Daher ist auch der Doppelname GNU/Linux für eine Distribution geläufig (z. B. bei Debian).
Es gibt auch Linux-Distributionen, die auf die GNU-Softwareanteile oder ein X-Window-System komplett verzichten und stattdessen alternative Software nutzen. Diese Distributionen verhalten sich, wie beispielsweise FreeVMS oder Cosmoe, teilweise auch nicht annähernd wie ein Unix-System.
Während proprietäre Betriebssysteme häufig über den Einzelhandel vertrieben werden, ist dies bei Linux-Distributionen eher die Ausnahme. Die meisten Distributionen können heute kostenlos von der Website der Anbieter heruntergeladen werden. Diese finanzieren sich über Spenden, über kostenpflichtigen Support oder auch einfach nur über die Beteiligung von Freiwilligen. Nur vergleichsweise wenige Distributionen werden von gewinnorientierten Firmen entwickelt und sind teilweise über den Einzelhandel verfügbar. Zahlreiche Linux-Distributionen werden auch, von den Kunden unbemerkt, als Firmware auf einem Gerät oder sogar in größeren Maschinen oder Anlagen erworben. Dabei kann es sich z. B. um Werkzeugmaschinen, Fahrzeuge, Haushaltsgeräte, SPS, Messgeräte, Mobiltelefone, Modems, Digitalkameras, NAS oder Fernseher handeln.
Da Linux nur ein Betriebssystem-Kernel ist, wird weitere Software benötigt, um ein benutzbares Betriebssystem zu erhalten. Aus diesem Grund kamen die ersten Linux-Distributionen schon kurz nach der GPL-Lizenzierung von Linux auf, als Anwender, die nicht zum direkten Entwicklerkreis gehörten, Linux zu nutzen begannen. Die ersten Distributionen hatten dabei das Ziel, das System beispielsweise mit der Software des GNU-Projekts zu einem arbeitsfähigen Betriebssystem zu bündeln. Zu ihnen gehörten MCC Interim Linux, das auf den FTP-Servern der University of Manchester im Februar 1992 veröffentlicht wurde sowie TAMU und Softlanding Linux System (SLS), die etwas später herauskamen. Die erste kommerziell auf CD erhältliche Distribution war 1992 das von Adam J. Richters entwickelte Yggdrasil Linux. 1993 veröffentlichte Patrick Volkerding die Distribution Slackware, die auf SLS basiert. Sie ist die älteste heute noch aktive Linux-Distribution. Ebenfalls 1993, ungefähr einen Monat nach der Veröffentlichung von Slackware, wurde das Debian-Projekt ins Leben gerufen, das im Gegensatz zu Slackware gemeinschaftlich entwickelt wird. Die erste stabile Version kam 1996 heraus.[1] 2004 wurde von Canonical das auf Debian basierende, später sehr populäre Ubuntu herausgebracht.[2]
Die ersten Nutzer kannten noch freie Software aus der Zeit vor den 1980er-Jahren und schätzten Linux, weil sie wieder die Verwertungsrechte an der von ihnen verwendeten Software besaßen. Spätere Nutzer waren Unix-Anwender, die Linux zunächst vor allem privat einsetzten und sich vor allem über den geringen Preis freuten. Waren die ersten Distributionen nur der Bequemlichkeit halber geschaffen worden, sind sie doch heute die übliche Art für Nutzer wie auch Entwickler, ein Linux-System zu installieren. Dabei werden die Linux-Distributionen heutzutage sowohl von Entwicklergruppen als auch von Firmen oder gemeinnützigen Projekten entwickelt und betrieben.
Die Frage, welche Distributionen besonders beliebt sind, lässt sich nur schwer beantworten. Im deutschsprachigen Raum werden vor allem Ubuntu, Debian, openSUSE und Knoppix häufiger auch außerhalb der IT-Presse erwähnt. Darüber hinaus wäre Fedora zu nennen, das von dem börsennotierten US-Unternehmen Red Hat entwickelt wird.
Da Distributionen praktisch eigene Produkte sind, konkurrieren diese am Markt miteinander und versuchen, sich einerseits voneinander abzugrenzen, andererseits aber auch anderen Distributionen keinen zu großen Vorteil zu überlassen. Daher unterscheiden sich zwar sämtliche Distributionen; es gibt aber kaum etwas, wofür sich nicht jede Distribution anpassen ließe. Hiervon ausgenommen sind nur Spezial-Systeme, etwa als Software im Embedded-Bereich.
Einige Distributionen sind speziell auf einen Anwendungsfall optimiert. So gibt es etwa Systeme speziell für den Einsatz in Bildungseinrichtungen mit hierfür spezialisierter Software und zumeist einem Terminalserver-System, wodurch nur ein leistungsstarker Rechner benötigt wird und ansonsten auch ältere Hardware ausreicht. Beispiele sind hier Edubuntu oder DebianEdu. Ebenso gibt es Systeme speziell für veraltete Rechner, die einen geringeren Funktionsumfang haben und geringe Systemanforderungen stellen. Beispiele sind etwa Damn Small Linux oder Puppy Linux, die einen Umfang von nur 50 beziehungsweise 100 MB haben.
Für Smartphones und Tablets gibt es speziell optimierte Linux-Distributionen. Sie bieten neben den Telefonie- und SMS-Funktionen diverse PIM-, Navigations- und Multimedia-Funktionen. Die Bedienung erfolgt typischerweise über Multi-Touch oder mit einem Stift. Linux-basierte Smartphone-Betriebssysteme werden meist von einem Unternehmenskonsortium oder einem einzelnen Unternehmen entwickelt und unterscheiden sich teilweise sehr stark von den sonst klassischen Desktop-, Embedded- und Server-Distributionen. Anders als im Embedded-Bereich sind Linux-basierte Smartphonesysteme aber nicht auf ein bestimmtes Gerät beschränkt. Vielmehr dienen sie als Betriebssystem für Geräte ganz unterschiedlicher Modellreihen und werden oft herstellerübergreifend eingesetzt.
Die Architektur vieler Linux-basierter Smartphone- und Tablet-Betriebssysteme wie z. B. Android hat neben dem Linux-Kernel nur wenig Gemeinsamkeiten mit klassischen Linux-Distributionskonzepten.[3][4][5] Ob Android als wichtigstes Linux-Kernel basierendes Smartphone-Betriebssystem auch als Linux-Distribution einzuordnen ist, wird kontrovers diskutiert.[6] U.a. wird typischerweise auch nur ein kleiner Teil der sonst üblichen GNU-Software-Umgebung und -Tools genutzt.[7] Obwohl Android selbst quelloffen ist, wird es meist mit den proprietären Google-Play-Diensten ausgeliefert, da Android selber den oft gewünschten Google Play Store nicht enthält.[8] Da dadurch unkontrollierte proprietäre Binär-Software verwendet wird, stehen Richard Stallman und die FSF Android sehr kritisch gegenüber und empfehlen die Verwendung von Alternativen.[7][9] Die meist auf Linux genutzten UNIX-artigen Dienste und Tools werden teilweise durch eine Java-Laufzeitumgebung ersetzt. Dadurch entstehen neue Programmierschnittstellen, die sich auf beliebigen anderen Plattformen emulieren bzw. umsetzen lassen.[10] Trotz großer Diskrepanzen[11][12][4][3] wird Android jedoch von manchen über gemeinsame Eigenschaften mit Embedded-Linux-Distributionen bei den Linux-Distributionen eingeordnet.[13] Andere Linux-basierende Smartphone-Betriebssysteme wie etwa Firefox OS, Ubuntu for phones,[14] Maemo, Tizen, Mer, Sailfish OS[15] und MeeGo nutzen größere Teile der klassischen GNU-Software-Umgebung, so dass diese teilweise einfacher mit klassischen Linux-Anwendungen ergänzt werden können und somit eher Linux-Distributionen im klassischen Sinne entsprechen.
Während die Marktanteile von bisher verbreiteten Mobil-Plattformen wie Apples iOS, Microsofts Windows Mobile und Nokias Symbian OS sanken, konnte Android Marktanteile hinzugewinnen.[16] Seit Ende 2010 haben Linux-Systeme die Marktführerschaft auf dem schnell wachsenden Smartphone-Markt übernommen.[17] Sie wiesen zusammen im Juli 2011 einen Marktanteil von mindestens 45 %[18] auf. Aktuell ist Android die mit großem Abstand verbreitetste Linuxdistribution für Smartphones. Der Marktanteil lag im Mai 2016 bei 78 %.[19]
Linux ist ein beliebtes Betriebssystem in eingebetteten Systemen.[20] Entsprechende Distributionen sind für gewöhnlich hoch spezialisiert, da sie auf wenige, bestimmte Aufgaben ausgelegt sind. So ist meistens auch keine oder nur eine sehr einfache grafische Oberfläche zu finden. Häufig handelt es sich um Echtzeitsysteme. Sie haben in der Regel wenig Ähnlichkeit mit PC-Distributionen.
Eine Besonderheit bilden Live-Systeme, die von CD, DVD, USB und anderen Medien gebootet werden. Handelte es sich hierbei zunächst nur um spezialisierte Distributionen, die den Funktionsumfang von Linux demonstrieren sollten, gehört es inzwischen zum guten Ton unter Linux-Distributionen, den Standard-Umfang in Form einer Live-CD oder -DVD bzw. einem Live-USB-Speicherstick anzubieten. Einige dieser Systeme lassen sich auch direkt von dem Medium aus installieren.
Live-Systeme können als vollständiges Linux gestartet werden, ohne auf die Festplatte zu schreiben und ohne die bestehende Konfiguration eines Rechners zu verändern. So kann die entsprechende Linux-Distribution gefahrlos auf einem Computer getestet werden. Live-Systeme eignen sich auch hervorragend zur Datenrettung und Systemanalyse, da sie von der Konfiguration des bereits bestehenden Systems unabhängig sind und so auch von möglichen Infektionen durch Würmer und Viren nicht betroffen werden können.
Die meisten Linux-Distributionen können auf derselben Hardware parallel zu anderen Betriebssystemen installiert werden. Als solche kommen bspw. eine weitere Linux-Distribution, ein anderes unixoides Betriebssystem wie macOS oder Solaris, oder aber auch ein Windows in Betracht. Prinzipiell sind zwei Vorgehensweisen zu unterscheiden:
In einer Multi-Boot-Konfiguration werden zwei oder mehr Betriebssysteme parallel auf verschiedene Festplatten-Partitionen installiert. Installationsprogramme moderner Linux-Distributionen können meist bereits installierte Betriebssysteme erkennen und eigenständig eine Multi-Boot-Konfiguration einrichten. Nach der Installation kann beim Bootvorgang über einen Bootloader oder Bootmanager gewählt werden, welches Betriebssystem starten soll.
Werden die Betriebssysteme häufig gleichzeitig genutzt, bietet sich u. U. eher eine Virtualisierungs-Lösung an. Zu unterscheiden sind hierbei das Host- und Gast-System. Ersteres ist tatsächlich physisch auf der Hardware installiert. Innerhalb dessen kommt eine Virtualisierungssoftware wie bspw. VirtualBox oder KVM zum Einsatz. Diese emuliert für das Gast-System die gesamte erforderliche Hardware oder bietet durch ein Sicherheitssystem direkten Zugriff auf die tatsächlich vorhandene Hardware des Computers. Da diese in einer solchen Konfiguration für den gleichzeitigen Betrieb beider Systeme erforderlich ist, kann es zu Geschwindigkeitseinbußen kommen.
Auch wenn man Spezial-Distributionen außer Acht lässt, unterscheiden sich auch gängige Linux-Distributionen in einigen Punkten.
Einige Distributionen für Fortgeschrittene haben zum Beispiel keinen Installer, sondern nur eine Live-CD, die die nötigen Werkzeuge zur manuellen Installation bereitstellt (bspw. Arch und Gentoo). Die meisten bieten allerdings einen Installer in Form eines Assistenten an. Einige bieten zwar einen Assistenten an, erfordern aber Vorarbeiten, etwa das Partitionieren (bspw. Slackware). Die sonstige Art der Konfiguration entspricht normalerweise der Installationsmethode. Bei manchen Systemen muss man also die Konfigurationsdateien i. d. R. direkt bearbeiten, während andere für die wichtigsten Optionen Tools bereitstellen.
Ein wichtiger Punkt ist auch die kostenlose Verfügbarkeit. Einige wenige Distributionen kosten Geld (bspw. RHEL), während die meisten kostenlos sind.
Weiter unterscheiden sich Distributionen in der Anzahl der unterstützten Architekturen (besonders vielfältig sind Gentoo und Debian). Auch spielen Art und Umfang der Dokumentation eine Rolle. So liegen einigen Produkten Handbücher bei (bspw. RHEL), während für die meisten nur Dokumentation auf Webseiten zur Verfügung steht. Manche Distributionen verzichten ganz auf eine offizielle Dokumentation und lassen diese lieber – bspw. als Wiki – von der Nutzerschaft pflegen. Kommerzielle Distributoren bieten darüber hinaus meist offiziellen Support an, welcher als Dienstleistung allerdings vergütet werden muss. Auch in der Lizenzpolitik gibt es Unterschiede. Einige Systeme haben ausschließlich freie Software in ihren Repositories (besonders konsequent bspw. Parabola), während andere auch unfreie aufnehmen. Als ein Kompromiss werden häufig Repositories mit proprietärer Software angeboten, die aber manuell zum Paketmanager hinzugefügt werden müssen (das machen bspw. Debian und Ubuntu) oder es wird eine Ausnahme für besonders wichtige Programme gemacht (bspw. auch Ubuntu). Kostenpflichtige Software wird fast nie aufgenommen. Zu unterscheiden sind weiter Community-Distributionen (bspw. Debian) von solchen, hinter denen Unternehmen stehen (bspw. Ubuntu). Auch die Updatezyklen spielen eine Rolle. Sie gehen von Rolling Releases (bspw. Arch, Gentoo und Debian Unstable) bis hin zu vierjährigen Updatezyklen mit garantierter zehnjähriger Unterstützung einer Version (RHEL). Wichtig ist auch die Anzahl der Software in den Repositories. Entsprechend der Zielgruppe einer Distribution sind auch Größe und Fachkenntnis der Nutzerschaft verschieden.
Die Unterschiede zwischen den Distributionen wirken sich oftmals auf deren Kompatibilität aus.[21]
Schon früh in der Geschichte der Distributionen entstanden Konzepte, die Installation weiterer Software zu vereinfachen. Meist sollte Software in Form kompilierter Pakete bereitgestellt und ein Mechanismus mitgeliefert werden, der funktionelle Abhängigkeiten zwischen installierten und nachgeladenen Paketen auflösen kann. Die entstandenen Paketmanagement-Systeme arbeiten mit je eigenen Paketformaten, zum Beispiel RPM oder dpkg. Viele Linux-Distributionen haben eine eigene Softwareverwaltung mit eigenen Binärpaketen, die zu anderen Distributionen teilweise inkompatibel sind.
Die Kritik am Prinzip der Linux-Distributionen setzt unter anderem an diesem Punkt an.[21][22] Da nicht jedes Software-Projekt und nicht jeder Software-Entwickler die Kenntnisse und Ressourcen hat, Software für jede einzelne Linux-Distribution bereitzustellen, wird oft nur der Quelltext veröffentlicht. Aus dem veröffentlichten Quelltext lauffähige Anwendungen zu erzeugen, ist jedoch potentiell ein komplizierter und fehlerträchtiger Prozess, der vielen Anwendern zu kompliziert sein kann. Diese bleiben dann oft auf die von der Distribution mitgelieferte Software angewiesen bzw. limitiert.[23] Die Bereitstellung des Quellcodes als Softwareauslieferungsmethode ist jedoch für Anbieter kommerzieller Software, die Software binär ausliefern wollen, keine Option, weswegen diese die Menge von Distributionen und deren Paketformaten mit spezifischen Paketen bedienen müssen, was einen großen Mehraufwand bedeutet.[24][25][26] Im Umfeld von Unternehmen hat deshalb nur eine begrenzte Auswahl an Distributionen eine Chance als allgemeine Arbeitsplattform.
Eine weitere wichtige Norm ist POSIX. Sie geht im Gegensatz zur LSB über Linux hinaus und soll einen Standard für alle unixoiden Betriebssysteme bilden. Obwohl die LSB nicht mit POSIX kompatibel ist, halten sich Linux-Distributionen für gewöhnlich an einen Großteil der Norm. Daher gab es lange Zeit keine einzige Distribution, die offiziell als POSIX-konform zertifiziert war,[27] bis 2016 u. a. Huawei mit EulerOS den Zertifizierungsprozess UNIX 03 durchlaufen hat. Die Bedeutung dieser Zertifizierung, und damit die vollständige Einhaltung des POSIX-Standards, ist für das Linux- und BSD-Ökosystem jedoch nicht wirklich wichtig.[28]
Damit sich die Distributionen nicht weiter auseinanderentwickeln, wurde die Free Standards Group (heute Linux Foundation) mit dem Ziel gegründet, entsprechende Standards zwischen Distributionen zu fördern. Der Bekannteste ist die Linux Standard Base zur Förderung der binären Kompatibilität der Distributionen. Die LSB wird dabei von den verschiedenen Distributionen unterschiedlich strikt umgesetzt. Sie definiert übereinstimmende Binärschnittstellen („ABI“ genannt, für Application Binary Interface), einige Details zum inneren Aufbau und ein Paketsystem (hier RPM), das für die Installation von Software anderer Anbieter unterstützt werden muss.
Die praktische Bedeutung dieser Regeln ist allerdings nur begrenzt.[29] Die einseitige Festlegung auf das RPM-Paketformat wird teilweise angezweifelt, nachdem in den letzten Jahren durch Ubuntu oder Linux Mint das dpkg-Format eine große Verbreitung erlangt hat. Weil die meisten Distributionen, die dpkg nutzen, direkt auf Debian basieren, sind deren Pakete oft in anderen Distributionen, die ebenfalls auf Debian basieren, installierbar. Auf der anderen Seite setzen alle von Fedora (respektive Red Hat Linux), OpenSUSE und Mandriva abstammenden Distributionen auf RPM. Es ist mit einigen Einschränkungen durchaus möglich – z. B. mit Hilfe des OpenSuse Build Service – RPM-Pakete zu erstellen, die auf allen diesen Distributionen nutzbar sind.[30]
Eine weitere Standardisierung stellt der Filesystem Hierarchy Standard dar, der eine gemeinsame Benennung einiger Datei- und Verzeichnisnamen und eine übereinstimmende Struktur der Basisverzeichnisse ermöglichen soll. Allerdings sind auch hier Details nicht geregelt, die bisher Inkompatibilitäten erzeugten. Andere Probleme ergeben sich erst durch die feste Integration von Anwendungen in den Systemverzeichnisbaum.[31] Er wird von der Linux Standard Base vorausgesetzt.
Es gibt einige Alternativansätze zu dem Modell der zentralen Softwareverbreitung über die Distributionen und deren Repositories. Projekte wie Autopackage[32], Zero Install[33] oder der Klik-Nachfolger PortableLinuxApps[34] versuchen eine einheitliche, aber dezentrale, distributionsunabhängige, binäre Softwareverbreitungsmöglichkeit zu schaffen, konnten aber bis jetzt faktisch keine relevante Verbreitung oder Unterstützung der Linux-Community erreichen.[35]
Ein Schritt in diese Richtung war 2011 die Einführung eines Software Center in Ubuntu,[36] um die Anzahl der Applikationen signifikant erhöhen zu können, da das Distributionsmodell nur begrenzt skaliert.[37]
2012 betonte auch der Kernelentwickler Ingo Molnár die Notwendigkeit der Bereitstellung einer solchen dezentralen, skalierbaren und distributionsunabhängigen Softwareverbreitungsmethode; das Fehlen eines solchen Mechanismus sei eines der Kernprobleme des Linux-Desktops.[38]