Ich habe Linux From Scratch (und BLFS) durchgelesen und mich gefragt, ob ich dieser Anleitung folgen kann, um eine Darwin Distro durch Ersetzen des xnu
Kernels zu erstellen . Würde sich der Prozess erheblich von dem in LFS beschriebenen unterscheiden?
Mein gegenwärtiges Verständnis ist, dass alles, was erforderlich wäre, um das System "Darwin" anstatt "Linux" zu machen, die Kernel-Substitution wäre. Ist das richtig?
BEARBEITEN:
Als Antwort auf Killermists Kommentar werde ich diese Frage präzisieren. Während ich allgemein nach Informationen zu diesem Thema suche, ist das, was ich speziell suche, so etwas wie ein " Darwin Distro Creation Guide ", ähnlich wie das LFS ein " Linux Distro Creation Guide ".
Ich schätze, dass solche Informationen wahrscheinlich nur von den Leuten von Puredarwin , OpenDarwin oder GNU / Darwin kommen werden, daher ist dies eine Art Hilferuf an sie. Ein " How-We-Made-PureDarwin-Nano-Start-To-Finish " -Handbuch wie LFS wäre perfekt, aber ich weiß, dass das viel verlangt.
Antworten:
Update 19. April 2015:
Nach zwei Jahren scheint das Interesse an diesem Bereich noch sehr gering zu sein. Die Hackintosh-Community ist jedoch nach wie vor sehr aktiv, was bedeutet, dass einer der wenigen Open-Source-Bootloader, die nicht von Apple stammen und zum Booten von xnu (Chameleon and forks) fähig sind und Yosemite booten können. Es gibt auch Erfolgsgeschichten, die OS X Yosemite innerhalb von QEMU booten. Darüber hinaus haben wir dank eines (jetzt bei Apple angestellten) Entwicklers, der Winocm beherrscht , eine ARM-Portierung des xnu-Kernels . Sie war die aktivste Entwicklerin, die ich in diesem Bereich kenne.
Es gibt auch eine Fortsetzung von Amit Singhs Mac OS X Internals, die bald erscheinen wird. Normalerweise erwähne ich die persönlichen Seiten der Leute nicht gern. Der Blog-Server mit all den Informationen scheint jedoch etwas unzuverlässig zu sein, sehen Sie sich also das Info-Feld auf der Twitter-Seite von ameaijou an .
Ich habe es geschafft, Apples Entwicklungs-Toolchain zu erstellen (ein Selbst-Host, aber das "Darwin SDK" wurde auch auf Linux portiert ). Ich glaube, dass ein Darwin-Betriebssystem möglicherweise noch von Grund auf neu erstellt werden kann - alles, was wir vermissen, sind einige Open-Source-Kexts. Beobachten Sie diesen Bereich und lassen Sie es mich wissen, wenn Sie wissen, wie Sie Interesse wecken können! :)
Kurze Antworten auf diese Frage:
Technisch: ja
Praktisch: Nein *
Mit Binary Cheats: Wahrscheinlich, aber auch nicht legal (ungetestet)
Mit Binary Cheats für generische Hardware: Wie oben (ungetestet)
* es sei denn, Sie arbeiten bei Apple (* räuspert sich in allgemeine Richtung von Kalifornien *)
Längere Antwort:
Das wird ziemlich lange dauern. Ich schlage Kaffee vor. Wenn Sie nicht die Zeit / Lust haben, alles zu lesen, können Sie mit "Abschließende Bemerkungen" fortfahren.
Praktisch möglich (Nein):
Leider hat Apple den Quellcode für zu viele der von Darwin benötigten KEXTs und Binaries zurückgezogen, um die Kompilierung eines Darwin-Betriebssystems nur aus dem Quellcode zu ermöglichen. Es ist technisch immer noch möglich (Sie könnten die Quelle selbst schreiben, um sie richtig zu flicken), aber ich habe einfach nicht die Zeit, die Fähigkeiten oder die Neigung, dies zu tun (und ich bezweifle, dass die Crowdfunding-Community sehr interessiert wäre).
Es ist nicht überraschend, dass der wichtigste Wendepunkt die Veröffentlichung von Darwin 10 war, die xnu in x86_64-land brachte. Die meisten der benötigten Quellen waren bereits vorhanden, es handelte sich jedoch nur um x86. Im Laufe der Zeit scheint sich die Bedeutung von Apples "Open Source" zu "Open Source nur auf Apples Hardware" zu verschieben, da Apples KEXTs nun im Großen und Ganzen hardwarespezifisch sind, selbst wenn Sie alles auf- und abrufen könnten Wenn Sie (siehe unten) ausführen, sind Sie immer noch auf Apple-Hardware beschränkt.
Technisch möglich (Ja):
Es ist jedoch nicht alles verloren. Der LFS-Leitfaden hat sich als nützlich erwiesen, und mit Sicherheit können alle erforderlichen Einstellungen vorgenommen werden, ohne dass das Darwin-Betriebssystem tatsächlich erstellt werden muss. Außerdem erhalten Sie mit den vorgestellten Schritten eine fast exakte Roadmap des vor Ihnen liegenden Pfades, abzüglich des Kernels, der KEXTs und des Bootloaders. Ich habe es jedoch geschafft, das Bootloader-Problem zu lösen (zumindest für Apple-Hardware).
Wenn Sie interessiert sind, finden Sie hier eine vollständige Übersicht über Ihre Aufgaben:
Stellen Sie sicher, dass es eine GUID-Partitionstabelle (GPT) und eine EFI-Partition hat. Der einfachste Weg, dies zu tun, ist das Apple Festplatten-Dienstprogramm. Sie können dies jedoch auch über die Befehlszeile tun (es gibt an anderer Stelle Anleitungen dazu). Der wichtige Punkt ist, dass beim Ausführen
distil list diskNsM
die folgenden Informationen korrekt sein sollten:Folgen Sie nun der LFS-Anleitung (mit Anpassungen).
Fügen Sie (offensichtlich unter Verwendung des tatsächlichen Einhängepunkts) in und ein
DFS=/Volumes/DarwinOS
.bashrc
.bash_profile
Erstellen Sie das Benutzerverzeichnis (
chown
ganz am Ende 0: 0):Geben Sie ein
root
:Machen Sie das Quellverzeichnis und setzen Sie das Sticky-Bit:
Erstellen Sie das Tools-Verzeichnis und erstellen Sie einen Symlink, damit wir es später ganz einfach zu $ PATH hinzufügen können (
root
übrigens immer noch):Laden Sie die Quelle aller gewünschten Pakete herunter. Hier steckt man natürlich fest. Alle notwendigen sind nicht da. (Übrigens bevorzuge ich
binutils
sowieso GNUs .)Angenommen, Sie könnten tatsächlich alle benötigten herunterladen, dann machen wir weiter.
Machen Sie einen unterprivilegierten Benutzer speziell für DFS (vorgeschlagen von LFS):
Beachten Sie, dass Sie das Homedir des neuen Benutzers auf einem Mac manuell erstellen müssen:
Gewähren Sie nun dem neuen Benutzer Zugriff auf die Quellen und Werkzeuge
Anmeldung:
Führen Sie den folgenden Befehl aus, um die Umgebung (von LFS) zu bereinigen:
Führen Sie nun den folgenden Befehl aus (siehe LFS für Informationen, wenn Sie sich nicht sicher sind):
GCC
/configure
ist sehr flexibel. Versuchen Sie, das*-
Muster zu überprüfen , oder führen Sie den Befehl aus , umgcc -v
zu sehen, wie Ihr Host-Computer konfiguriert wurde, und kopieren Sie das Muster .Okay, jetzt zum hypothetischen Teil.
Von hier aus wird es ziemlich gut zur Standard-LFS-Prozedur: Quellen extrahieren, erstellen, installieren, testen, Quellen löschen. Beachten Sie, dass die 2 Durchgänge von binutils, GCC und Glibc immer noch erforderlich sind, ABER Sie müssen AUCH eine Arbeitskopie von haben
libc++.1.dylib
- und das müssen Sie auch in 2 Durchgängen tun. Auf der libcxx-Seite des LLVM-Projekts finden Sie einige weitere Details. Einmal kompiliert, können Sie es einfügen/usr/lib
. Sie müssen den xnu-Kernel kompilieren und installieren (es gibt einige Tutorials im Internet, um dies zu tun) und anschließend die KEXTs installieren. Selbst wenn alle erforderlichen KEXTs verfügbar wären, müssten Sie sie manuell in das .kext-Paket einfügen. Wieder gibt es Tutorials, wie man einen KEXT auf der Kommandozeile von Hand erstellt.Das letzte Bit macht das System bootfähig. Dazu würden Sie den folgenden Befehl ausführen:
Eigentlich macht der Ort, an dem gesegnet werden soll, keinen großen Unterschied. Dieser Ordner ist nur Apple-Standard.
In jedem Fall den Kernel und kexts waren an den richtigen Stellen vorausgesetzt, Sie hatten richtige Kopien
dyld
,launchd
etc. statt undboot.efi
wurden ordnungsgemäß funktioniert, soll das System arbeitet und das Boot werden!Wenn Sie es wirklich wollten, können Sie einen Faux ausführen -
launchd
das ist nur ein Skript, mit dem Sie eine Bash-Eingabeaufforderung ausführen können - genau das macht PureDarwin Nano .Schreiben Sie auf jeden Fall die KEXTs und Binaries selbst, wenn Sie möchten - es ist technisch möglich. Ruf mich einfach an, wenn du fertig bist.
Mit Binary Cheats: Wahrscheinlich, aber auch nicht legal (ungetestet)
Also, warum können Sie nicht einfach die Binärdateien, KEXTs und erforderlichen Dateien aus Mountain Lion rippen, die Lautstärke segnen und loslegen? Na ja, das kannst du wahrscheinlich. Dafür benötigen Sie aber auch eine Lizenz. Wenn Sie dies tun, haben Sie im Grunde nur eine Kopie von Mountain Lion erstellt. Ist das nicht nebensächlich?
Mit Binary Cheats für generische Hardware: Wie oben (ungetestet)
Dieser ziemlich ist das OSx86 - Projekt. Wieder stoßen Sie ziemlich sofort auf rechtliche Probleme. Es steht außer Frage, dass diese beiden letzten Methoden definitiv möglich sind - die Tatsache, dass Sie Mountain Lion auf generischer Hardware ausführen können, ist ein Beweis dafür -, aber der springende Punkt dabei war, Ihr eigenes Darwin-Betriebssystem legitim aus dem Quellcode kompilieren zu können.
Randnotiz
Sie haben vielleicht bemerkt, dass ich 32-Bit absichtlich vermieden habe. In einer Welt, in der alle wichtigen Betriebssysteme in 64-Bit verfügbar sind, ist es nicht sinnvoll, ein 32-Bit-Betriebssystem zu kompilieren. Apple hat hier tatsächlich Disk-Images von Darwin (bis Darwin 9) bereitgestellt . Sie funktionierten perfekt auf meiner Windows-Box.
Abschließende Bemerkungen
Letztendlich kaufen die Leute keinen Mac für Darwin, sie kaufen einen Mac für Aqua. Infolgedessen ist die Unterstützung für Darwin als eigenständiges Open-Source-Produkt allmählich so weit zurückgegangen, dass dies für die Open-Source-Community nur noch eine symbolische Geste ist. Die andere, etwas ironische Tatsache ist, dass Sie, um viel darüber zu lernen, direkt in das OSx86-Projekt springen müssen, das nicht genau sanktioniert ist (um es milde auszudrücken). Selbst dann gibt es nicht viele Informationen. PureDarwin ist ein ausgezeichneter Ausgangspunkt, und Jonathan Levins Buch ist eine unschätzbare Referenz für alles, was mit xnu zu tun hat.
Es war ein äußerst lehrreiches Arbeitsjahr, und ich bin fast so glücklich, zu wissen, wie ich es tun würde. Ich werde aber irgendwann aufhören müssen, daran zu arbeiten, und jetzt ist es soweit. Wäre es zu viel verlangt, wenn Sie Apple noch einmal nach Darwin fragen, wenn Sie Mavericks veröffentlichen?
quelle
Offensichtlich haben Sie erkannt, dass das LFS für Linux bestimmt ist und Darwin sich stark von dem angewendeten Linux-LFS unterscheidet. Daher ist es über die Bemühungen einer einzelnen Person hinaus einfach, das LFS auf die Darwin-Systeme anzuwenden.
Es gibt viele Community-Versuche, die Darwin-Systeme zu ersetzen / verbessern. Obwohl das OpenDarwin-Projekt nicht viel Erfolg hat, ist der Code von Apple wohl zu hart, obwohl noch ein Projekt von PureDarwin übrig ist:
PureDarwin SourceForge
PureDarwin HomePage
Besorgen Sie sich zuerst ein Entwicklerkonto, greifen Sie auf die Build-Tools zu, und führen Sie dann die Schritte zum Erstellen Ihres eigenen benutzerdefinierten Kernels aus.
Da der Darwin-Kernel nicht dieselbe Architektur wie der Linux-Kernel hat, kann er nicht durch den Linux-Kernel ersetzt werden. Daher müssen Sie ihn kompilieren.
Eigentlich müssen Sie sich nur zu 100% an das PureDarwin-Projekt halten und dann das folgende Skript aufrufen: Google Code - Pure Darwin Switch Kernel mit den benutzerdefinierten Kernel-Images, die Sie erstellt haben, ist in Ordnung.
Aber wie man einen gut funktionierenden Darwin-Kernel erstellt, wäre eine neue Frage.
quelle