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:
- 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 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:
Partitionstyp: Apple_HFS
Betriebssystem kann installiert werden: Ja
Schreibgeschützte Medien: Nein
Schreibgeschütztes Volume: Nein
Folgen Sie nun der LFS-Anleitung (mit Anpassungen).
Fügen Sie (offensichtlich unter Verwendung des tatsächlichen Einhängepunkts) in und einDFS=/Volumes/DarwinOS
.bashrc
.bash_profile
Erstellen Sie das Benutzerverzeichnis ( chown
ganz am Ende 0: 0):
sudo mkdir -v "$DFS"/usr
Geben Sie ein root
:
sudo su -
Machen Sie das Quellverzeichnis und setzen Sie das Sticky-Bit:
mkdir -v "$DFS"/sources # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
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):
mkdir -v "$DFS"/tools
ln -sv "$DFS"/tools /
logout # Leave root
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):
sudo dscl . -create /Users/lfs
sudo dscl . -create /Users/lfs UserShell /bin/bash
sudo dscl . -create /Users/lfs RealName "LFS DFS"
sudo dscl . -create /Users/lfs UniqueID "2070" # whatever you like
sudo dscl . -create /Users/lfs PrimaryGroupID 20 # Default 'staff'
sudo dscl . -create /Users/lfs NFSHomeDirectory /Users/lfs
sudo dscl . -passwd /Users/lfs dfs # Again to taste.
Beachten Sie, dass Sie das Homedir des neuen Benutzers auf einem Mac manuell erstellen müssen:
sudo mkdir /Users/lfs
sudo chown -R lfs:staff /Users/lfs/
Gewähren Sie nun dem neuen Benutzer Zugriff auf die Quellen und Werkzeuge
sudo chown -v lfs $DFS/tools
sudo chown -v lfs $DFS/sources
Anmeldung:
su - lfs
Password: dfs
Führen Sie den folgenden Befehl aus, um die Umgebung (von LFS) zu bereinigen:
cat > ~/.bash_profile << "EOF"
echo "Entering clean environment…"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Führen Sie nun den folgenden Befehl aus (siehe LFS für Informationen, wenn Sie sich nicht sicher sind):
cat > ~/.bashrc << "EOF"
set +h
umask 022
DFS=/Volumes/*DarwinOS* # As previously
LC_ALL=POSIX
LFS_TGT=$(uname -m)-dfs-darwin1242 # Look inside gcc/configure for possibilities!
PATH=/tools/bin:/bin:/usr/bin # Note symlink from before
export LFS LC_ALL LFS_TGT PATH
echo ".bashrc script complete. Environment is ready."
EOF
GCC /configure
ist sehr flexibel. Versuchen Sie, das *-
Muster zu überprüfen , oder führen Sie den Befehl aus , um gcc -v
zu sehen, wie Ihr Host-Computer konfiguriert wurde, und kopieren Sie das Muster .
- Melden Sie sich jetzt vom lfs-Benutzer ab und wieder an. Sie sollten jetzt eine saubere Umgebung haben.
- Alles von nun an findet innerhalb des lfs-Benutzers statt. Sie werden feststellen, dass ich nur die Hälfte der "LFS" -Symbole in "DFS" -Symbole konvertiert habe. Tut mir leid, aber Sie haben die Idee.
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:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
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 und boot.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?