Das Linux-Betriebssystem geht auf das Jahr 1991 zurück, als der finnische Student Linus Torvalds begann, ein neues Betriebssystem zu entwickeln, das von den Ideen von Unix und Minix inspiriert war. Die erfolgreiche Wahl einer freien Lizenz bestimmte den Erfolg seines Unternehmens - Dutzende und Hunderte von Enthusiasten schlossen sich der Entwicklung an, von denen jeder etwas Neues brachte. Anschließend schlossen sich große Unternehmen der Entwicklung an - Intel, IBM und andere. Die genauen Gründe, die die Branchenführer dazu veranlassten, ein freies Betriebssystem zu unterstützen, sind mir nicht bekannt, aber "böse Zungen" besagen, dass sich viele Unternehmen für Microsoft entschieden haben, das zu dieser Zeit ein absolutes Monopol bei Betriebssystemen für Desktop-Computer hatte.
Linux-Kernel-Evolution in Zeilen ausgedrückt
Könnte Linux ohne die Unterstützung der Branchenmeister zu dem geworden sein, was es jetzt ist? Weit davon entfernt, erinnern sich Oldtimer an die Patentkriege zwischen der Santa Cruz Operation und den Unternehmen, die Linux unterstützen. SCO hat diesen Krieg verloren und existiert nicht mehr.
Die Anzahl der Commits zum Kern nach Unternehmen
Daher hat das Linux-Betriebssystem im Laufe seines Lebens einen langen Entwicklungsweg zurückgelegt und ist mittlerweile zu einem beliebten Betriebssystem geworden, das Windows ersetzen kann, um viele der wichtigen Aufgaben der Benutzer zu lösen.
Bevor wir mit dem Vergleich moderner Linux-Distributionen beginnen, müssen wir zwei wichtige Aspekte definieren: Der erste Aspekt besteht aus dem Betriebssystem und der zweite aus dem Blickwinkel, den wir vergleichen werden. Mit einem Distributionskit ist eine Komplettlösung gemeint, die aus einem Betriebssystemkern, einem Grafikserver (X-Server), einer Umgebung (einer Reihe von mitgelieferten Programmen), einem Installationsdienstprogramm und einer Erstkonfiguration besteht. Es ist möglich, Distributionen aus Sicht des Endbenutzers, Systemadministrators und Anwendungsprogrammierers zu vergleichen.
Linux aus Sicht eines Systemadministrators
Zu Beginn seiner Entwicklung war Linux eine Gruppe von Technologen und Technologiepriestern mit spezifischen Kenntnissen in Programmierung und Verwaltung. Der Vorläufer von Linux war das Unix-Betriebssystem, und ein Spezialist mit Erfahrung in der Unix-Administration konnte das System einfach einrichten und konfigurieren. Dies war für den durchschnittlichen Durchschnittsbenutzer nicht zugänglich, und der Verwaltungsprozess war für ihn etwas Magisches. Modernes Linux ist benutzerfreundlich geworden - der Installationsprozess läuft darauf hinaus, einige Fragen zu beantworten, und oft reicht es aus, nur der vom Installationsprogramm angebotenen Konfigurationsoption zuzustimmen, indem einfach alle Fragen positiv beantwortet werden. Das Installationsprogramm analysiert die Hardwarekonfiguration und wählt die erforderlichen Treiber und Konfigurationsparameter aus. Normalerweise enthält das Distributionskit gebrauchsfertige Softwarepakete.Wird in Form von DEB- oder RPM-Archiven bereitgestellt, die zusätzlich zu den Programmen selbst Konfigurationsskripte und Informationen zu Abhängigkeiten von Bibliotheken von Drittanbietern enthalten. Es gibt jedoch Ausnahmen, z. B. wird die Gentoo-Distribution als Quelle für alle Programme und Erstellungsregeln bereitgestellt, und das Betriebssystem selbst wird für seine Prozessorkonfiguration buchstäblich auf dem Computer des Benutzers erstellt. Die Frage nach der Wirksamkeit einer solchen Methode ist umstritten, wir werden uns nicht damit befassen, ich werde nur bemerken, dass dies nur einer der von der Community erklärten Freiheitsgrade ist - der Benutzer kann frei wählen, "ob es die Kerze wert ist". Im Allgemeinen sind die RPM- und DEB-Paketformate ähnlich. Wenn Sie ein Distributionskit auswählen, können Sie diesen Punkt ignorieren. Mit seltenen Ausnahmen - manchmal passiert esdass der Autor des Programms aus irgendeinem Grund die zweite Version des Installationsprogramms nicht bereitgestellt hat und es nur im RPM- (RedHat Linux und seine Derivate) oder DEB-Format (Debian Linux und seine Derivate) existiert. In diesem Fall müssen Sie sich möglicherweise um die Installation eines solchen Programms bemühen. Selbst wenn Sie das Installationspaket manuell entpacken, können Sie auf unbefriedigte Abhängigkeiten stoßen. Die Installation eines solchen Programms erfordert viel Aufwand. Im Falle eines Fehlers kann der Versuch, die erforderlichen Bibliotheken zu ersetzen, zu einem Systemabsturz führen. Glücklicherweise ist diese Situation äußerst selten und 99,9% der Linux-Benutzer werden dieses Problem niemals haben. Darüber hinaus führen alle bekannten Hersteller von Distributionen ihre Repositorys mit einer Vielzahl von Programmen, in denen jedes Programm für eine bestimmte Version der Distribution kompiliert und getestet wird.
Wir wissen also, dass einer der Unterschiede zwischen Linux das Paketformat ist. Aus Sicht des Systemadministrators gibt es jedoch noch einen weiteren Unterschied - das Format der Startskripte. Aus der Unix-Familie von Betriebssystemen hat Linux zwei konkurrierende Formate - System V-Stil und BSD-Stil. Um zu verstehen, worum es geht, schauen wir uns an, wie es funktioniert. Der Bootloader lädt den Betriebssystemkern und überträgt die Kontrolle an ihn. Der Kernel startet und startet den ersten Prozess - init. Genau genommen können Sie anstelle von init jeden Prozess verschieben, z. B. Bash. In diesem Fall erhalten wir so etwas wie ein Einzelbenutzer-Konsolensystem mit einem einzigen Tasking ohne Netzwerk und ohne grafische Oberfläche und mit einem schreibgeschützten Root-Dateisystem. Darüber hinaus funktioniert ein Teil der Hardware in diesem Fall möglicherweise nicht, wenn die Treiber dafür nicht im Kernel vorhanden sind, sondern als Module geladen werden.Im klassischen Betriebsmodus liest der Init-Prozess die Datei / etc / inittab und startet entsprechend den Systemstartprozess - er meldet Partitionen, lädt Treiber, initialisiert Netzwerkschnittstellen, startet Serviceprogramme (die zuvor als Daemons bezeichnet wurden) und lädt das Grafiksubsystem. Init tut dies nicht direkt, sondern unter Verwendung des Konzepts von Runlevel und speziellen Skripten. Normalerweise gibt es bis zu sechs Runlevel - die Ausführungsmodi, die die Betriebsmodi des Systems beschreiben - Start, Einzelbenutzer, Mehrbenutzer mit einem Netzwerksubsystem, Mehrbenutzer mit einer grafischen Oberfläche. Abhängig von den Nutzungsbedingungen kann der Administrator einen Standard-Runlevel festlegen, auf den das System nach dem Booten umschaltet.Es ist normalerweise ein Mehrbenutzermodus mit Netzwerk und grafischer Oberfläche für den Desktop und ein Mehrbenutzermodus mit Netzwerk für Server. In diesen Skripten liegt der Unterschied zwischen SystemV- und BSD-Stilen. Wenn Sie jedoch das inittab-Format kennen, können Sie sich den Inhalt der Skripte ansehen und verstehen, wie Start, Stopp und Übergang zwischen System-Runlevel funktionieren.
Im Jahr 2010 entwickelten die Ingenieure von RedHat einen Ersatz für init, den systemd-Dienst. Dieser Dienst hat dem System neue Funktionen hinzugefügt:
- Socket-aktivierte Dienste (
ersetztErgänzungen inetd); - Starten von Diensten nach einem Zeitplan (
ersetztCron); - Arbeit mit einem Hardware-Watchdog-Timer (ersetzt Watchdog);
- Wurzelwechsel (ersetzt Chroot);
- Automount-Volumes und Netzwerkressourcen (
ersetztMount und Fstab); - journalctl - Protokollierungsdienst;
- systemd-analyse - Analyse des Starts von Diensten (einschließlich Ladegeschwindigkeit (sowohl des Systems als auch einzelner Dienste), Erbringung des Starts von Diensten usw.);
- systemd-boot - UEFI-Bootloader (Ersatz für grub und lilo).
Derzeit hat die überwiegende Mehrheit der Linux-Distributionen auf systemd umgestellt. Von den einst beliebten Distributionen widersetzt sich nur Slackware dem Übergang zum neuen Subsystem.
Der Übergang zu systemd hebt somit sozusagen einen der Unterschiede zwischen Linux auf - das System der Startskripte und führt zur Vereinheitlichung. Gleichzeitig bleibt die Unterstützung für klassische Startskripte erhalten. Beispielsweise können einige Volumes zum Mounten klassisch über / etc / fstab angegeben werden, während andere Volumes mit systemd-Tools gemountet werden können.
Früher haben Sysadmins darüber gestritten, welches System besser als SystemV oder BSD war, aber jetzt ist die Debatte abgeklungen. Ein erfahrener Systemadministrator kann jedes System konfigurieren, aber für Neulinge im Web gibt es genügend Informationen, die jeden Aspekt der Linux-Konfiguration offenbaren.
Linux aus Anwendersicht
Aus Sicht des Endbenutzers unterscheidet sich Linux etwas mehr. Schauen wir uns die Frage genauer an. Das grafische Subsystem war ursprünglich unter Unix optional. Unix lief häufig auf leistungsstarken Computern, und Benutzer waren über X-Terminals mit Unix verbunden. Die Interaktion fand über das Netzwerk statt - das Programm wurde auf dem Host-Computer ausgeführt, erhielt Informationen über Tastendrücke und Mausereignisse und schickte als Antwort Befehle an das Terminal, um grafische Grundelemente und Text zu zeichnen. Grafische Terminals waren teure und seltene Geräte, weshalb PCs als Terminals populär wurden. Übrigens ist hier ein interessanter Punkt, der oft Verwirrung stiftet - der X-Server wird auf dem Terminal ausgeführt, nicht auf dem Host. Das Programm selbst wird auf dem Host ausgeführt, der die xlib-Bibliothek verwendet.Bereitstellung einer einfachen Low-Level-Schnittstelle für die Arbeit mit einem Grafikserver. Diese Schnittstelle ist ziemlich niedrig, sie führt das Konzept eines Fensters ein, d.h. rechteckiger Bereich des Bildschirms, kann Vektortext in verschiedenen Schriftarten anzeigen und bietet auch das Zeichnen verschiedener grafischer Grundelemente - Punkte, Linien, Rechtecke, Kreise und Bilder.
Da die zugrunde liegenden grafischen Grundelemente recht einfach sind, sind Widget-Bibliotheken entstanden. Diese Bibliotheken bieten einen höheren Abstraktionsgrad und vereinfachen das Schreiben von Programmen mit einer grafischen Oberfläche erheblich. Beispielsweise wurde die X Athena Widgets-Bibliothek Teil des X Window System-Grafiksystems. Diese Bibliothek führt in das Konzept von Schaltflächen, Optionsfeldern, Menüs, Eingabefeldern und ähnlichen Grundelementen ein. Für moderne Verhältnisse sieht es jedoch ziemlich "verdreht" aus.
Und hier beginnen die Unterschiede für die Benutzer. Das Erscheinungsbild dessen, was der Benutzer auf dem Bildschirm sieht, hängt von mehreren Subsystemen ab. Es ist die Desktop-Umgebung, die einen als Desktop bezeichneten Bereich bereitstellt. Es ist ein Fenstermanager, der das Erscheinungsbild von Programmfenstern (Fensterdekorationen) bestimmt und häufig, aber nicht unbedingt. integriert in die Desktop-Umgebung und schließlich ist es eine Bibliothek von Schnittstellenelementen. Was und wie der Benutzer auf dem Bildschirm sieht, wird durch Kombinationen der oben genannten Komponenten bestimmt.
In der Praxis führt dies dazu, dass dasselbe Programm, das in verschiedenen Fenstermanagern gestartet wurde, unterschiedliche Fensterdekorationen aufweisen kann - unterschiedliche Titel, Fensterrahmengrößen, unterschiedliche Minimierung, Vollbild- und Schließschaltflächen. Der Fenstermanager definiert dies alles. Innerhalb eines einzelnen Fenstermanagers können jedoch verschiedene Programme je nach verwendeter Bibliothek unterschiedliche Arten von Schnittstellenelementen aufweisen. Aus Gründen der Fairness sollte beachtet werden, dass Sie eine solche Vielfalt in Windows beobachten können, jedoch viel seltener, da die überwiegende Mehrheit der Windows-Programme Standard-GDI + verwendet oder darum gewickelt ist.
Was wird der Linux-Benutzer auf dem Desktop sehen? Zunächst ist es GNOME oder KDE, die meisten Distributionen basieren auf diesen Desktop-Umgebungen. Sie sind jedoch nicht darauf beschränkt, und verschiedene Linux-Anbieter bieten etwa ein Dutzend verschiedene Umgebungen an. Bei den Bibliotheken der Schnittstellenelemente liegen hier zwei Bibliotheken an der Spitze - GTK und Qt. Beide Bibliotheken sind plattformübergreifend. Wenn ein Programm unter Linux und Windows vorhanden ist, wird es höchstwahrscheinlich mit GTK oder Qt geschrieben. Es gibt jedoch Ausnahmen, z. B. hat Xamarin eine Version der Windows Forms Library für Linux und macOS erstellt. Manchmal verteilen Windows Manager-Entwickler auch ihre Widget-Bibliotheken. Auf diese Weise wird deutlich, woher eine solche Vielzahl grafischer Benutzeroberflächen für Linux stammt.
Linux aus Sicht der Anwendungsprogrammierer
All dies gilt auch für die Programmierung. Wenn Sie einen Server oder ein Konsolendienstprogramm schreiben, müssen Sie in den allermeisten Fällen keine Anweisungen zur bedingten Kompilierung verwenden - modernes Linux ist gut genug standardisiert und vollständig POSIX-kompatibel. Darüber hinaus können Sie mit autoconf Programme nicht nur für Linux, sondern auch für jedes POSIX-kompatible System schreiben, von BSD bis zu allen Arten von Exoten.
Sie müssen wahrscheinlich kein Paketformat auswählen - verwenden Sie sowohl DEB als auch RPM und Sie werden fast alle Anwendungsfälle abdecken. Bei Serviceprogrammen müssen Sie wahrscheinlich auf das Format der Startskripte achten, damit das Installationsprogramm den Autostart Ihres Service korrekt registriert. In meinem Fall musste ich auf die Position der Schriftarten achten, da verschiedene Anbieter unterschiedliche Pfade zum Speichern von Schriftarten verwenden. Eine rekursive Suche, die mit / usr / share / fonts beginnt, hilft Ihnen hier jedoch - alle Schriftarten außer den benutzerdefinierten befinden sich auf diesem Pfad. Bei den benutzerdefinierten Schriftarten, die in / home / user installiert sind, gibt es einige Verwirrung und Wackeleffekte, und verschiedene Anbieter bieten mindestens zwei Hierarchien an - ~ / .fonts und ~ / .local / share / fonts.
Bei Grafikprogrammen ist die Komplexität etwas größer. Angesichts der unterschiedlichen Desktop-Umgebungen des Zoos müssen Sie deren Besonderheiten berücksichtigen. Beispielsweise werden sogenannte Desktop-Benachrichtigungen von den meisten Desktop-Umgebungen unterstützt, funktionieren jedoch möglicherweise nicht mit einigen exotischen Fenstermanagern.
Zum Schluss noch ein paar wichtige Punkte, die signifikante Unterschiede zwischen den Verteilungen bewirken. Trotz der Ähnlichkeit aller modernen Linuxes können bei Distributionen mit erhöhtem Schutz Probleme auftreten, d. H. diejenigen, bei denen das obligatorische Zugangssystem verwendet wird. Beispielsweise sind einige Ressourcen standardmäßig in allen klassischen Distributionen verfügbar, verursachen jedoch in der geschützten Version von Linux einen Zugriffsfehler. Es ist unmöglich, im Voraus vorherzusagen, wo und wie das Programm in diesem Fall fehlschlagen wird. Die einzige Lösung besteht darin, auf geschützten Distributionen zu testen. Oder eine schnelle Lösung des Problems, nachdem der Benutzer den technischen Support kontaktiert hat.
Der zweite Punkt ist die Popularität der Distribution. Wenn Sie eine nicht sehr verbreitete Bibliothek oder ein nicht sehr verbreitetes Framework als Teil des Produkts verwenden, enthält eine solche Distribution möglicherweise eine alte oder unvollständige Version dieser Bibliothek. In meiner Praxis trat diese Situation in einer der Distributionen mit Unterstützung für Codepage 1251 in der System.Text.Encoding-Bibliothek für C # auf. Es gibt nur einen Weg, um mit solchen Problemen umzugehen: Da das Problem in anderen Linux-Distributionen nicht auftritt, sollten Sie sich an den technischen Support des Entwicklers dieser Distribution wenden, das Problem ausführlich beschreiben und sagen, dass es in anderen Distributionen kein Problem gibt.
Ausgabe. Wenn Sie geschützte Linux-Versionen nicht berücksichtigen, sind moderne Distributionen aus Sicht von Systemadministratoren und Programmierern sehr ähnlich. Oft sind die Unterschiede zwischen verschiedenen Generationen einer Distribution desselben Anbieters signifikanter als die Unterschiede zwischen modernen Distributionen. Aus Sicht der Benutzer besteht der Hauptunterschied in der Auswahl und Konfiguration der Desktop-Umgebung und der mit der Distribution gelieferten Software.