Aktualizacja 19 kwietnia 2015 r .:
Po dwóch latach nadal wydaje się, że zainteresowanie tą sferą jest bardzo małe. Jednak społeczność Hackintosha jest nadal bardzo aktywna, co oznacza, że jeden z niewielu programów ładujących innych firm niż Apple, które są w stanie uruchomić Xnu (Chameleon i widelce), jest nadal obsługiwany i może uruchamiać Yosemite. Istnieją również historie sukcesu uruchamiania systemu OS X Yosemite w QEMU. Ponadto, dzięki (obecnie zatrudnionemu przez Apple) programistowi, który obsługuje Winocm , mamy port ARM jądra Xnu . Jest najbardziej aktywnym programistą, którego znam w tej dziedzinie.
Niedługo pojawi się także kontynuacja systemu Mac OS X Amit Singh . Zwykle nie lubię wspominać o osobistych stronach ludzi; serwer blogów z wszystkimi informacjami wydaje się jednak trochę zawodny, więc zobacz pole informacyjne na stronie ameaijou na Twitterze.
Udało mi się zbudować łańcuch narzędzi programistycznych Apple'a (self-host, jednak „Darwin SDK” został również przeniesiony do Linuksa ). Wierzę, że system operacyjny Darwin może być jeszcze możliwy do zbudowania od zera - prawie wszystko, czego nam brakuje, to niektóre Kexty typu open source. Obserwuj tę przestrzeń, a jeśli wiesz, jak wzbudzić zainteresowanie, daj mi znać! :)
Krótkie odpowiedzi na to pytanie:
Technicznie: tak
Praktycznie: nie *
Z kodami binarnymi: Prawdopodobnie, ale także nielegalne (nieprzetestowane)
Z kodami binarnymi dla ogólnego sprzętu: jak wyżej (nieprzetestowane)
* chyba że pracujesz w Apple (* odchrząkuje gardło w kierunku Kalifornii *)
Dłuższa odpowiedź:
To będzie raczej długie. Proponuję kawę. Jeśli nie masz czasu / ochoty na przeczytanie wszystkiego, możesz przejść do „Uwagi końcowe”.
Praktycznie możliwe (nie):
Niestety, Apple wycofało kod źródłowy zbyt wielu niezbędnych KEXT - ów i plików binarnych Darwina, aby kompilacja systemu operacyjnego Darwin była czysto możliwa ze źródła. Nadal jest to technicznie możliwe (możesz sam napisać źródło, aby poprawnie go załatać), ale po prostu nie mam czasu, umiejętności ani chęci, aby to zrobić (i wątpię, by społeczność finansująca tłum była bardzo zainteresowana).
Nic dziwnego, że kluczowym punktem zwrotnym było wydanie Darwin 10, który wprowadził xnu do ziemi x86_64. Większość niezbędnych źródeł istniała wcześniej, ale były tylko x86. Z biegiem czasu znaczenie „Apple Open Source” wydaje się zmieniać na „Open Source tylko na sprzęcie Apple”, ponieważ KEXT Apple'a są teraz specyficzne dla całego sprzętu, więc nawet gdybyś mógł wszystko podnieść i działając (patrz poniżej) nadal będziesz ograniczony do sprzętu Apple.
Technicznie możliwe (Tak):
Jednak nie wszystko jest stracone. Poradnik LFS przydał się i na pewno wszystkie niezbędne konfiguracje można przeprowadzić bez budowania systemu operacyjnego Darwin. Ponadto przedstawione kroki dają niemal dokładną mapę drogową ścieżki, pomijając jądro, KEXT i bootloader. Udało mi się jednak rozwiązać problem bootloadera (przynajmniej dla sprzętu Apple).
Jeśli jesteś zainteresowany, oto pełny przegląd tego, co będziesz musiał zrobić:
- Wymaż partycję (najlepiej 8 GB lub więcej) na dysku (wewnętrznym lub zewnętrznym - nie ma znaczenia) i sformatuj ją jako Mac OS Extended (Journaled) (HFS +).
Upewnij się, że ma tabelę partycji GUID (GPT), a gdy to zrobisz, ma partycję EFI. Najłatwiej to zrobić za pomocą Narzędzia dyskowego Apple, ale możesz to zrobić w wierszu polecenia, jeśli chcesz (gdzie indziej znajdują się samouczki). Ważne jest, aby podczas uruchamiania distil list diskNsM
następujące informacje były poprawne:
Typ partycji: Apple_HFS
System operacyjny można zainstalować: Tak
Media tylko do odczytu: nie
Głośność tylko do odczytu: nie
Teraz postępuj zgodnie z przewodnikiem LFS (z adaptacjami).
Wstaw (używając oczywiście rzeczywistego punktu montowania) do iDFS=/Volumes/DarwinOS
.bashrc
.bash_profile
Utwórz katalog użytkownika (na chown
końcu 0: 0):
sudo mkdir -v "$DFS"/usr
Wpisz root
:
sudo su -
Utwórz katalog źródeł i ustaw lepki bit:
mkdir -v "$DFS"/sources # Make sure you still have $DFS defined; if not, redefine it.
chmod -v a+wt "$DFS"/sources
Stwórz katalog narzędzi i stwórz do niego dowiązanie symboliczne, abyśmy mogli później łatwo go dodać do $ PATH (nadal root
przy okazji):
mkdir -v "$DFS"/tools
ln -sv "$DFS"/tools /
logout # Leave root
Pobierz źródło wszystkich pakietów, które chcesz. Tu oczywiście utkniesz. Nie ma wszystkich niezbędnych. (Nawiasem mówiąc, wolę GNU binutils
w każdym razie).
Zakładając, że rzeczywiście możesz pobrać wszystkie potrzebne, kontynuujmy.
Utwórz upośledzonego użytkownika specjalnie dla DFS (sugerowane przez 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.
Pamiętaj, że musisz ręcznie ustawić homedir nowego użytkownika na komputerze Mac:
sudo mkdir /Users/lfs
sudo chown -R lfs:staff /Users/lfs/
Teraz przyznaj nowemu użytkownikowi dostęp do źródeł i narzędzi
sudo chown -v lfs $DFS/tools
sudo chown -v lfs $DFS/sources
Zaloguj sie:
su - lfs
Password: dfs
Uruchom następujące polecenie, aby wyczyścić środowisko (z LFS):
cat > ~/.bash_profile << "EOF"
echo "Entering clean environment…"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Teraz uruchom następujące polecenie (zobacz LFS, aby dowiedzieć się, co robi, jeśli nie jesteś pewien):
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's /configure
jest dość elastyczny. Spróbuj grep *-
wzorca lub po prostu uruchom, gcc -v
aby zobaczyć, jak skonfigurowano komputer hosta i skopiuj go.
- Teraz wyloguj się z użytkownikiem lfs i zaloguj się ponownie. Powinieneś mieć czyste środowisko.
- Odtąd wszystko odbywa się wewnątrz użytkownika LFS. Zauważysz, że byłem trochę leniwy w konwersji tylko połowy symboli „LFS” na symbole „DFS”. Przepraszam za to, ale masz pomysł.
OK, teraz do hipotetycznej części.
Odtąd całkiem nieźle będzie standardowa procedura LFS: Wyodrębniaj źródła, buduj, instaluj, testuj, usuwaj źródła. Zauważ, że 2 przejścia binutils, GCC i Glibc są nadal konieczne, ALE RÓWNIEŻ musisz mieć kopię roboczą libc++.1.dylib
- i musisz to zrobić również w 2 przebiegach. Możesz zobaczyć stronę libcxx projektu LLVM, aby uzyskać więcej szczegółów. Po skompilowaniu możesz go włożyć /usr/lib
. Musisz skompilować i zainstalować jądro Xnu ( w Internecie jest kilka samouczków, jak to zrobić), a następnie zainstalować KEXT. Nawet jeśli wszystkie wymagane KEXT są dostępne, nadal musisz ręcznie umieścić je w pakiecie .kext. Znów są tutoriale dotyczące ręcznego tworzenia KEXT w wierszu poleceń.
Ostatnim bitem jest uruchomienie systemu. Aby to zrobić, uruchom następujące polecenie:
"$DFS/usr/sbin/bless" --folder "$MOUNT/System/Library/CoreServices" --bootefi --verbose
W rzeczywistości miejsce, w którym można pobłogosławić, tak naprawdę nie robi różnicy. Ten folder jest po prostu standardem Apple.
W każdym razie, zakładając, że jądro i KEXTs były we właściwych miejscach, trzeba było odpowiednie kopie dyld
, launchd
itp na miejscu i boot.efi
działa poprawnie, system powinien pracować i startowy!
Uwaga: jeśli naprawdę chciałeś, możesz uruchomić fałszywkę - launchd
to tylko skrypt uruchamiający monit bash - to właśnie robi PureDarwin Nano .
Ponownie, oczywiście, jeśli chcesz, sam napisz KEXT i pliki binarne - jest to technicznie możliwe. Zadzwoń, kiedy skończysz.
Z kodami binarnymi: Prawdopodobnie, ale także nielegalne (nieprzetestowane)
Dlaczego więc nie możesz po prostu zgrać plików binarnych, plików KEXT i wymaganych plików z Mountain Lion, pobłogosław głośność i gotowe? Cóż, prawdopodobnie możesz. Ale potrzebujesz również licencji, aby to zrobić. Ponadto, jeśli to zrobisz, po prostu zrobiłeś kopię Mountain Lion. Czy to nie ma sensu?
Z kodami binarnymi dla ogólnego sprzętu: jak wyżej (nieprzetestowane)
To dość dużo jest projekt OSx86. Znów od razu masz problemy prawne. Nie ma wątpliwości, że te dwie ostatnie metody są zdecydowanie możliwe - fakt, że możesz uruchomić Mountain Lion na ogólnym sprzęcie, jest tego dowodem - ale chodziło o to, aby móc legalnie skompilować własny system operacyjny Darwin ze źródła.
Dygresja
Być może zauważyłeś, że celowo unikałem czegoś 32-bitowego. W świecie, w którym każdy większy system operacyjny jest dostępny w wersji 64-bitowej, nie ma sensu kompilować wersji 32-bitowej. Jabłko rzeczywiście dostarczają obrazy dysków Darwina (Darwin aż 9) tutaj . Działały idealnie na moim pudełku Windows.
Uwagi końcowe
Myślę, że pod koniec dnia ludzie nie kupują Maca dla Darwina, oni kupują Maca dla Aqua. W rezultacie wsparcie dla Darwina jako samodzielnego produktu typu open source stopniowo spadło do tego stopnia, że tak naprawdę jest to tylko symboliczny gest dla społeczności open source. Innym nieco ironicznym faktem jest to, że aby dowiedzieć się o tym dużo, musisz przejść od razu do projektu OSx86, który nie jest dokładnie usankcjonowany (mówiąc wprost). Nawet wtedy nie ma zbyt wielu informacji. PureDarwin to doskonałe miejsce na początek, a książka Jonathana Levina jest nieocenionym odniesieniem do wszystkich rzeczy xnu.
To był niezwykle edukacyjny rok pracy i jestem prawie tak szczęśliwy, wiedząc, jak to zrobić, jak bym to zrobił. Na pewnym etapie będę musiał przerwać pracę nad tym i teraz jest ten czas. Jako ostatni bezowocny okrzyk do Apple, czy byłoby zbyt wiele, aby poprosić o jeszcze jedną wersję Darwina po wydaniu Mavericks?