Auch wenn Linux ein von Grund auf neu geschriebenes System war, war die erste Version von Linux sehr Minix-ähnlich, was ein "Mini-Unix" ist. Es steht in Linus' Ankündigung.
Wikipedia bietet eine kurze Beschreibung der Linux-Geschichte. Wenn Sie mehr über dieses Thema erfahren möchten, ist dieses Buch genau das Richtige für Sie. Dort erfahren Sie, dass Linus Torvalds Unix-Manpages verwendet hat, um zu wissen, welche Systemaufrufe er implementieren muss und wie sie funktionieren müssen.
Die ersten Linux-Kernel mussten mit MINIX gebootet werden, das mit Blick auf ein UNIX-ähnliches Design entwickelt wurde. Nun, Linus verwendete Bücher über UNIX, als er seinen Kernel entwarf. Das Datum seiner Buchbestellung wird sogar archiviert.
Bis heute ist Linux nicht vollständig UNIX-kompatibel, daher wird es als "UNIX-Like" bezeichnet (Mac OS X hingegen ist ein (vollständiges) UNIX).
Der Titel Ihrer Frage lautet einfach "Linux", was nicht nur den Kernel, sondern auch andere Teile davon impliziert. Ich würde argumentieren, dass es noch ähnlicher ist, wenn Sie Dinge außerhalb des Kernels berücksichtigen, um es mit UNIX zu vergleichen. Angesichts von Dingen wie X usw. Der Linux-Kernel allein kommt UNIX ziemlich nahe, aber wenn Sie die GNU-Teile berücksichtigen, kommt er noch näher.
Die Version 0.01 des Kernels kann immer noch heruntergeladen werden. Allerdings habe ich nicht getestet, ob es kompiliert, geschweige denn läuft.
Nein.
Es macht keinen Sinn zu sagen, dass insbesondere die erste Version von Linux "auf Teilen von" Unix basierte. Es war keine Portierung des Unix-Kernels. Es begann nicht mit Unix-Code in den ersten Versionen [Quelle durchsuchen] und ersetzte es im Laufe der Zeit. Linus hatte keinen Zugriff auf den Unix-Quellcode [Interview].
Wovon es kopiert hat, ist die API. Dieselbe API ist in der neuesten Version von Linux enthalten und wird für immer bleiben. In der Regel entfernt Linux keine API, da dies einige Anwendungen beschädigen würde. Was kopiert wird, ist das notwendige Minimum, als Linux (und die erste Version von Linux libc) geschrieben wurde, um existierende Unix-Anwendungen auszuführen. Dies ist eine bekannte grundlegende Fähigkeit von Linux. Das kann man unterschiedlich beschreiben, aber darüber gibt es eigentlich nichts zu streiten.
Z.B. Dieselbe API wird in GNU libc kopiert (die älter als Linux ist). IIRC Linux effektiv aus der API-Dokumentation kopiert (man
Seiten).
Ich möchte das nicht einmal sagen, aufgrund des besten Teils des Designs der Schnittstelle zwischen Unix-Kernel und Anwendungen wie gcc; "alles ist eine Datei". Grundlegende Dateioperationen wurden als Teil der Programmiersprache C standardisiert . Meine Manpages schlagen C89 vor, also etwa ein Jahr früher. Z.B. Windows implementiert dieselbe C-API. Das verschweigt jedoch zu viele knifflige Bits, die keine Dateien sind und/oder die C nicht in den Standard aufgenommen hat, also müssen wir Linux als spezifisch Unix-ähnlich anerkennen.
Insbesondere die API in dieser "ersten" Version von Linux besteht aus 70 Systemaufrufen, ihren Argumentlisten, 40 Fehlercodes ... und überwiegt jede dieser 200 Zeilen, die Terminalsteuerungen definieren, was genau das ist, woran ich dachte, als ich "fummelig" schrieb Bits". Aber sicherlich gibt es später noch mehr.
Wie an anderer Stelle angedeutet, ist dies ein kleiner wunder Punkt. Da es in einer von Microsoft finanzierten "Studie" zur Sprache gebracht und dann jahrelang ohne Beweise prozessiert wurde (SCO gegen IBM). IIRC zeigten sie schließlich ein paar Codezeilen. Es stellte sich heraus, dass es sich bei allen „verletzenden IPs“ (von denen sie behaupteten, IBM habe sie Linux hinzugefügt) nur um einige APIs handelte. Trotz mehrerer Präzedenzfälle zu diesem Zeitpunkt, die das Kopieren von APIs, auch bekannt als Reinraum-Reverse-Engineering, erlauben.
Wie von anderen erwähnt, war die Beziehung zu Minix war fester. Ich glaube, das Dateisystem format wurde von Minix übernommen. Datenstrukturen sind implementierungsspezifischer als die meisten abstrakten APIs, und wenn Sie "auf Teilen von" Minix sagten du würdest nicht unbedingt lügen.
Minix wird auch als Unix-ähnlich (oder „Unix-Klon“, was ein Unix-ähnliches Betriebssystem bedeutet, das jedoch nicht auf seinem Code basiert) bezeichnet. In jeder Hinsicht basiert Linux auf Unix, das gleiche sollte für Minix gelten. (Es gibt auch einige andere Unix-Klone; Wikipedia listet einige proprietäre und verschiedene Kompatibilitätsebenen für Windows auf).
Ich mache ein (freies) Betriebssystem (nur ein Hobby, wird nicht groß und professionell sein wie Gnu) für 386(486) AT-Klone. Das braut sich seit April zusammen und fängt an, sich fertig zu machen. Ich hätte gerne Feedback zu Dingen, die die Leute an Minix mögen/nicht mögen, da mein Betriebssystem ihm etwas ähnelt (gleiches physisches Layout des Dateisystems (ua aus praktischen Gründen).
Ich habe derzeit bash(1.08) und gcc(1.40) portiert, und die Dinge scheinen zu funktionieren. Das bedeutet, dass ich in ein paar Monaten etwas Praktisches bekommen werde, und ich würde gerne wissen, welche Funktionen die meisten Leute wollen würden. Alle Vorschläge sind willkommen, aber ich verspreche nicht, dass ich sie umsetzen werde :-)
Linus ([email protected])
PS. Ja - es ist frei von Minix-Code , und es hat ein Multithread-fs. Es ist NICHT portabel (benutzt 386-Task-Wechsel usw.) und wird wahrscheinlich nie etwas anderes als AT-Festplatten unterstützen, da das alles ist, was ich habe :-(.