Chcę przesłać jądro xnu
do architektury ARM, z ostatecznym celem jest możliwość uruchomienia pełnego jądra wewnątrz Qemu. Chociaż zdaję sobie sprawę, że jest to bardzo trudne zadanie, nadal chcę to zrobić.Przenoszenie jądra do innej architektury?
O ile wiem, masz za zadanie napisać punkt wejścia do jądra (osfmk/arm/start.s
) gdzie można zrobić ogólny inicjalizacji (MMU i PlatformExpert), po którym podsystemy kext/IOKit mogą być uruchamiane i obciążenie CPU konkretnych rozszerzeń (pułapki, GPIO, zegar), które są albo prelinkowane do pliku binarnego, albo ładowane przez bootloader (, ponieważ jądro nie może wchodzić w interakcje z systemem plików, ponieważ rozszerzenia NAND nie są jeszcze dostępne).
Chociaż mam ogólne pojęcie o tym, jak pracy procesorów ARM, ja nawet nie wiem od czego zacząć z portu w xnu
, ponieważ nie jestem do końca pewien, jak:
- Czy niska debugowanie poziomu (ponieważ funkcje debugowania jądra są niedostępne na początku uruchamiania).
- Zintegruj gałąź ARM z resztą drzewa źródłowego jądra (np. Upewniając się, że działa w trybie
osfmk/kern
). - Utwórz rozsądne środowisko do uruchamiania jądra niezależnego od platformy (
machine_startup()
); - Napraw kod specyficzny dla platformy wewnątrz głównego kodu jądra (większość kodu platformy jest ograniczona do
osfmk/platform_name
, ale część z nich musi być zintegrowana zosfmk/kern
i innymi).
Czy są jakieś przyzwoite prowadnice nad przeniesieniem xnu (lub przynajmniej Mach) jądra na różnych platformach, podobnie jak istnieją prowadnice Linux?
+1 Cieszę się z Twojej odwagi. Ktoś musi ciężko pracować.Nie wiem nic na ten temat, ale przypuszczam, że jeśli to uruchomisz, to prawdopodobnie będziesz pisał przewodnik debugowania! Kai Kaha bracie. –