Qemu'nun içinde tam bir çekirdek çalıştırabilmenin nihai hedefi ile, ARM mimarisine xnu
çekirdeğini bağlamak istiyorum. Bunun çok zor bir görev olduğunu anladığım halde, yine de buna devam etmek istiyorum.Çekirdeği farklı bir mimariye mi yüklüyorsunuz?
Bildiğim kadarıyla, kextel (osfmk/arm/start.s
) için başlangıç noktası (MMU ve PlatformExpert) yaptığınız ve Kext/IOKit alt sistemlerinin başlatılabildiği ve CPU'ya özel uzantıların yüklenebileceği bir giriş noktası yazmanız gerekiyordu (önyükleme, GPIO, saat) ya ikiliye önceden yüklenir veya önyükleyici tarafından yüklenir (, çünkü çekirdek, NAND uzantılarının henüz kullanılamaması nedeniyle dosya sistemi ile etkileşimde bulunamaz, çünkü).
- düşük yapın: Ben nasıl ARM CPU çalışmalarına genel bir fikir var iken ben nasıl tamamen emin değilim çünkü
, ben bile, nerede
xnu
portu ile başlamak için bilmiyorum seviye hata ayıklama (çekirdek hata ayıklama olanakları başlangıçta erken kullanılamaz olduğundan). - ARM dalını çekirdek kaynak ağacının geri kalanıyla bütünleştirin (örn.
osfmk/kern
numaralı belgenin çalışmakta olduğundan emin olun). - Platform bağımsız çekirdeği başlatmak için bir akıl ortamı oluştur (
machine_startup()
); - Platformun belirli kodlarını ana çekirdek kodunun içinde düzeltin (platform kodunun çoğu
osfmk/platform_name
ile sınırlıdır, ancak bazılarınınosfmk/kern
ve diğerleri ile tümleştirilmesi gerekir). Farklı platformlara XNU (veya en azından Mach) çekirdek taşıma herhangi terbiyeli kılavuzları Linux kılavuzları vardır, tıpkı
var mı?
+1 Cesaretinizi alkışlıyorum. Birisi sert şeyler yapmak zorunda.Bu konuda hiçbir şey bilmiyorum ama eğer bunu baştan başlayacak olursanız, muhtemelen hata ayıklama rehberini yazacak olan siz olacaksınız! Kai Kaha kardeşim. –