Update 19.04.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 von Drittanbietern, die Xnu (Chameleon und Gabeln) booten können, erhalten bleibt und Yosemite booten kann. Es gibt auch Erfolgsgeschichten, die OS X Yosemite in QEMU starten. Dank eines (jetzt bei Apple beschäftigten) Entwicklers, der sich Winocm zulässt, verfügen wir außerdem über einen ARM-Port des Xnu-Kernels . Sie war der aktivste Entwickler, den ich in diesem Bereich kenne.
In Kürze gibt es auch eine Fortsetzung von Mac OS X Interns von Amit Singh . Normalerweise möchte ich nicht gerne die persönlichen Seiten von Personen erwähnen, jedoch scheint der Blogserver mit allen Informationen ein wenig unzuverlässig zu sein. Siehe dazu das Infobox auf der Twitter-Seite von ameaijou .
Ich habe es geschafft, Apples Entwicklungs-Toolchain aufzubauen (ein Selbst-Host, das "Darwin SDK" wurde jedoch auch auf Linux portiert ). Ich glaube, dass ein Darwin-Betriebssystem möglicherweise noch von Grund auf neu erstellt werden kann - alles, was uns fehlen könnte, sind einige Open-Source-Kexts. Schauen Sie sich diesen Raum an und wenn Sie wissen, wie man Interesse weckt, lassen Sie es mich wissen! :)
Kurze Antworten auf diese Frage:
Technisch: Ja
Praktisch: Nein *
Mit binären Cheats: Wahrscheinlich aber auch nicht legal (ungetestet)
Mit Binary Cheats für generische Hardware: Wie oben (nicht getestet)
* außer Sie arbeiten bei Apple (* räuspert sich allgemein in Richtung Kalifornien *)
Längere Antwort:
Das wird ziemlich lange dauern. Ich schlage Kaffee vor. Wenn Sie nicht die Zeit / Neigung 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 von Darwins notwendige KEXTs und Binaries zurückgezogen, um die Erstellung eines Darwin-Betriebssystems ausschließlich aus der Quelle zu ermöglichen. Es ist technisch immer noch möglich (Sie könnten die Quelle selbst schreiben, um sie richtig zu reparieren), 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).
Wenig überraschend war der entscheidende Wendepunkt die Veröffentlichung von Darwin 10, die xnu in x86_64-land brachte. Die meisten notwendigen Quellen waren vor diesem Zeitpunkt in der Nähe, waren jedoch nur x86. Im Laufe der Zeit scheint sich die Bedeutung von Apples "Open Source" auf "Open Source nur für Apple-Hardware" zu verlagern, da Apples KEXTs jetzt von der Größe her sehr hardwarespezifisch sind Wenn Sie ausgeführt werden (siehe unten), sind Sie immer noch auf Apple-Hardware beschränkt.
Technisch möglich (Ja):
Es ist jedoch nicht alles verloren. Die LFS-Anleitung hat sich als nützlich erwiesen, und sicherlich können alle erforderlichen Einstellungen durchgeführt werden, ohne dass das Darwin-Betriebssystem erstellt werden muss. Die vorgestellten Schritte geben Ihnen außerdem eine fast genaue Straßenkarte des vorausgehenden Pfads ohne Kernel, KEXTs und Bootloader. Ich habe es jedoch geschafft, das Bootloader-Problem zu lösen (zumindest für Apple-Hardware).
Wenn Sie interessiert sind, finden Sie hier einen vollständigen Überblick über das, was Sie tun müssen:
- Löschen Sie eine Partition (vorzugsweise 8 GB oder mehr) auf einem Laufwerk (intern oder extern spielt keine Rolle) und formatieren Sie sie als Mac OS Extended (Journaled) (HFS +).
- Stellen Sie sicher, dass es über eine GUID-Partitionstabelle (GPT) verfügt, und dass eine EFI-Partition vorhanden ist. Der einfachste Weg dazu ist das Festplatten-Dienstprogramm von Apple, aber Sie können dies auch in der Befehlszeile tun, wenn Sie möchten (es gibt andere Anleitungen, wie Sie dies tun können). Der wichtige Punkt ist, dass
distil list diskNsM
die folgenden Informationen beim Ausführen korrekt sein sollten:
Partitionstyp: Apple_HFS
Betriebssystem kann installiert werden: Ja
Schreibgeschützte Medien: Nein
Nur-Lese-Volume: Nein
Nun folgen Sie der LFS-Anleitung (mit Anpassungen).
Fügen Sie 'DFS = / Volumes / DarwinOS ' (ohne Anführungszeichen und offensichtlich mit dem tatsächlichen Mount-Punkt) in
.bashrc
und ein.bash_profile
Erstellen Sie das Benutzerverzeichnis (
chown
am Ende 0: 0):sudo mkdir -v $ DFS / usr
Eingabe
root
:sudo su -
Erstellen Sie das Quellverzeichnis und setzen Sie das Sticky-Bit:
mkdir -v $ DFS / sources # Stellen Sie sicher, dass noch $ DFS definiert ist. Wenn nicht, definieren Sie es neu.
chmod -v a + wt $ DFS / sources
Erstellen Sie das Tools-Verzeichnis und erstellen Sie einen Symlink zu ihm, damit wir ihn später leicht zu $ PATH hinzufügen können (
root
übrigens noch im Weg):mkdir -v $ DFS / tools
ln -sv $ DFS / tools /
logout # Wurzel verlassen
Laden Sie den Quellcode aller gewünschten Pakete herunter. Hier stecken Sie natürlich fest. Alle notwendigen sind nicht da. (Übrigens bevorzuge ich GNUs
binutils
sowieso.)
Angenommen, Sie könnten tatsächlich alle herunterladen, die Sie benötigen, lassen Sie uns weitergehen.
Erstellen Sie einen unterprivilegierten Benutzer speziell für DFS (von LFS vorgeschlagen):
sudo dscl. -create / users / lfs
sudo dscl. -create / Users / lfs UserShell / bin / bash
sudo dscl. / users / lfs RealName "LFS DFS" erstellen
sudo dscl. -create / Users / lfs UniqueID "2070" # was auch immer Sie möchten
sudo dscl. -create / Users / lfs PrimaryGroupID 20 # Default 'staff'
sudo dscl. -create / Users / lfs NFSHomeDirectory / Users / lfs
sudo dscl. -passwd / Users / lfs dfs # Wieder abschmecken.
Beachten Sie, dass Sie das Homedir des neuen Benutzers manuell auf einem Mac erstellen müssen:
sudo mkdir / Benutzer / lfs
sudo chown -R lfs: staff / Benutzer / lfs /
Geben Sie dem neuen Benutzer nun Zugriff auf die Quellen und Tools
sudo chown -v lfs $ DFS / tools
sudo chown -v lfs $ DFS / sources
Einloggen:
su - lfs
Passwort: dfs
Führen Sie den folgenden Befehl aus, um die Umgebung (von LFS) zu bereinigen:
cat> ~ / .bash_profile << "EOF"
echo "Reines Umfeld betreten ..."
exec env -i HOME = $ HOME TERM = $ TERM PS1 = '\ u: \ w \ $' / bin / bash
EOF
Führen Sie nun den folgenden Befehl aus (siehe LFS, wenn Sie sich nicht sicher sind):
cat> ~ / .bashrc << "EOF"
set + h
umask 022
DFS = / Volumes / DarwinOS # Wie zuvor
LC_ALL = POSIX
LFS_TGT = $ (uname -m) -dfs-darwin1242 # Siehe gcc / configure für Möglichkeiten!
PATH = / tools / bin: / bin: / usr / bin # Symlink von vorhin beachten
LFS LC_ALL LFS_TGT PATH exportieren
echo ".bashrc-Skript abgeschlossen. Umgebung ist bereit."
EOF
GCC
/configure
ist ziemlich flexibel. Probieren Sie das*-
Muster aus oder führen Sie einfach einen Lauf durch, umgcc -v
zu sehen, wie Ihr Host-Computer konfiguriert wurde, und kopieren Sie ihn.- Melden Sie sich jetzt vom lfs-Benutzer ab und melden Sie sich wieder an. Sie sollten jetzt eine saubere Umgebung haben.
- Ab jetzt findet alles innerhalb des lfs-Benutzers statt. Sie haben bemerkt, dass ich etwas faul war, nur die Hälfte der 'LFS'-Symbole in' DFS'-Symbole zu konvertieren. Tut mir leid, aber Sie haben die Idee.
Okay, jetzt zum hypothetischen Teil.
Von hier aus wird es ein Standard-LFS-Verfahren sein: Quellen extrahieren, erstellen, installieren, testen, löschen. Beachten Sie die 2 Durchgänge von binutils, GCC und Glibc sind noch notwendig, ABER Sie libc++.1.dylib
benötigen AUCH eine Arbeitskopie - und Sie müssen dies auch in 2 Durchgängen tun. Sie finden die libcxx-Seite des LLVM-Projekts für weitere Details. Nach dem Kompilieren können Sie es einfügen /usr/lib
. Sie müssen den xnu-Kernel kompilieren und installieren (dazu gibt es einige Tutorials im Web) und anschließend die KEXTs installieren. Selbst wenn alle erforderlichen KEXTs verfügbar sind, müssen Sie sie dennoch manuell in das .kext-Paket einfügen. Wieder gibt es Tutorials, wie man einen KEXT in der Befehlszeile manuell erstellt.
Das letzte Bit macht das System bootfähig. Dazu führen Sie den folgenden Befehl aus:
"$ DFS / usr / sbin / bless" --folder "$ MOUNT / System / Library / CoreServices" --bootefi --verbose
Eigentlich macht die Lage zum Segen keinen Unterschied. Dieser Ordner ist nur Apple-Standard.
In jedem Fall den Kernel und kexts unter der Annahme, an den richtigen Stellen waren, haben Sie die richtigen Kopien dyld
, launchd
usw. an Ort und Stelle undboot.efi
wurde ordnungsgemäß funktioniert, sollte das System arbeitet und das Boot werden!
Beachten Sie, wenn Sie wirklich wollten, dass Sie ein Faux ausführen könnten - launchd
das ist nur ein Skript, um eine Bash-Eingabeaufforderung auszuführen - das ist der PureDarwin Nano tut.
Schreiben Sie die KEXTs und Binaries auf jeden Fall selbst, wenn Sie möchten. Dies ist technisch möglich. Rufen Sie mich einfach an, wenn Sie fertig sind.
Mit binären Cheats: Wahrscheinlich aber auch nicht legal (ungetestet)
Warum können Sie also nicht einfach die Binaries, KEXTs und erforderlichen Dateien aus Mountain Lion herausreißen, die Lautstärke segnen und loslegen? 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 irgendwie neben dem Punkt?
Mit Binary Cheats für generische Hardware: Wie oben (nicht getestet)
Dieser ziemlich ist das OSx86 - Projekt. Wieder stoßen Sie ziemlich sofort auf rechtliche Fragen. Es ist keine Frage, dass diese beiden letzten Methoden definitiv möglich sind - die Tatsache, dass Sie Mountain Lion mit generischer Hardware ausführen können, ist ein Beweis dafür - aber der springende Punkt war, dass Sie Ihr eigenes Darwin-Betriebssystem aus dem Quellcode legitim zusammenstellen können.
Randnotiz
Sie haben vielleicht bemerkt, dass ich absichtlich alles 32-Bit gemieden habe. In einer Welt, in der jedes größere Betriebssystem in 64-Bit verfügbar ist, ist es nicht sinnvoll, ein 32-Bit-Betriebssystem zu erstellen. Apple hat tatsächlich bieten Disk - Images von Darwin (bis Darwin 9) hier . Sie funktionierten perfekt auf meiner Windows-Box.
Abschließende Bemerkungen
Ich schätze, am Ende des Tages gehen die Leute nicht von Mac für Darwin ab, sie kaufen Mac für Aqua. Daher ist die Unterstützung für Darwin als eigenständiges Open-Source-Produkt allmählich so weit zurückgegangen, dass es wirklich nur eine Zeichenbewegung für die Open-Source-Community ist. Die andere, etwas ironische Tatsache ist, dass Sie, um etwas darüber zu erfahren, direkt in das OSx86-Projekt springen müssen, was nicht gerade sanktioniert ist. Selbst dann gibt es nicht viele Informationen. PureDarwin ist ein hervorragender Ausgangspunkt und Jonathan Levins Buch ist eine unschätzbare Referenz für alle Dinge, die mit Xnu zu tun haben.
Es war ein sehr lehrreiches Jahr der Arbeit, und ich bin fast so glücklich darüber, wie ich es tun würde, als würde ich es tatsächlich tun. Ich werde jedoch irgendwann aufhören, daran zu arbeiten, und jetzt ist es soweit. Als letztes, vergebliches Shout an Apple, wäre es zu viel zu fragen, um nur einen weiteren Build von Darwin zu haben, wenn Sie Mavericks veröffentlichen?