Przeczytałem i podjąłem Linux From Scratch (i BLFS) i zastanawiałem się, czy mogę postępować zgodnie z tym przewodnikiem, aby stworzyć dystrybucję Darwina, zastępując xnu
jądro? Czy proces byłby zupełnie inny niż ten opisany w BAEL?
Moje obecne rozumienie jest takie, że wszystko, co byłoby wymagane, aby system był „Darwin”, a nie „Linux”, stanowiłoby podstawienie jądra. Czy to jest poprawne?
EDYTOWAĆ:
W odpowiedzi na komentarz zabójcy dopracuję to pytanie. Podczas gdy ogólnie szukam informacji na ten temat, szczególnie szukam czegoś w rodzaju „ Przewodnika tworzenia dystrybucji Darwina ”, podobnie jak LFS, to „ Przewodnika tworzenia dystrybucji w systemie Linux ”.
Rozumiem, że takie informacje prawdopodobnie będą pochodzić tylko od ludzi z Puredarwin , OpenDarwin lub GNU / Darwin, więc jest to coś w rodzaju wezwania do pomocy. Poradnik „ How-We-Made-PureDarwin-Nano-Start-To-Finish ”, taki jak LFS, byłby idealny, ale wiem, że to wiele wymaga.
Odpowiedzi:
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ć:
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:Teraz postępuj zgodnie z przewodnikiem LFS (z adaptacjami).
Wstaw (używając oczywiście rzeczywistego punktu montowania) do i
DFS=/Volumes/DarwinOS
.bashrc
.bash_profile
Utwórz katalog użytkownika (na
chown
końcu 0: 0):Wpisz
root
:Utwórz katalog źródeł i ustaw lepki bit:
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):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):
Pamiętaj, że musisz ręcznie ustawić homedir nowego użytkownika na komputerze Mac:
Teraz przyznaj nowemu użytkownikowi dostęp do źródeł i narzędzi
Zaloguj sie:
Uruchom następujące polecenie, aby wyczyścić środowisko (z LFS):
Teraz uruchom następujące polecenie (zobacz LFS, aby dowiedzieć się, co robi, jeśli nie jesteś pewien):
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.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:
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 iboot.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?
źródło
Oczywiście, zrozumiałeś, że LFS jest przeznaczony dla Linuksa, a Darwin bardzo różni się od stosowanego LFS w Linuksie, więc nie jest możliwe, abyś spróbował zastosować LFS w systemach Darwin.
Istnieje wiele prób wymiany / ulepszenia systemów Darwin przez społeczność. podczas gdy projekt OpenDarwin nie odnosi wielkiego sukcesu, zgadnij, że kod Apple jest zbyt trudny, podczas gdy pozostaje jeszcze jeden projekt PureDarwin:
PureDarwin SourceForge
PureDarwin HomePage
Najpierw załóż konto programisty, chwyć ich narzędzia do budowania, a następnie możesz wykonać kroki w celu stworzenia własnego niestandardowego jądra.
Jądro Darwina nie ma tej samej architektury co jądro Linuksa, więc nie można go zastąpić jądrem Linux, dlatego należy je skompilować.
Właściwie wszystko, co musisz zrobić, to trzymać się 100% projektu PureDarwin, a następnie wywołać następujący skrypt: Google Code - Jądro przełączania Pure Darwin z niestandardowymi obrazami jądra, które stworzyłeś, będą w porządku.
Ale jeśli chodzi o to, jak zbudować dobrze działające jądro Darwina, byłoby to nowe pytanie.
źródło