मैं क्यूमु के अंदर एक पूर्ण कर्नेल चलाने में सक्षम होने के अंतिम लक्ष्य के साथ, xnu
कर्नेल को एआरएम आर्किटेक्चर में पोर्ट करना चाहता हूं। जबकि मुझे एहसास है कि यह एक बहुत मुश्किल काम है, मैं अभी भी इसमें जाना चाहता हूं।एक कर्नेल को एक अलग वास्तुकला में पोर्ट करना?
जहाँ तक मुझे पता है, आप कर्नेल (osfmk/arm/start.s
) जहां सामान्य initialisation करना के लिए एक प्रवेश बिंदु लिखने के लिए मतलब कर रहे हैं (MMU और PlatformExpert) जिसके बाद Kext/IOKit उप शुरू किया जा सकता और लोड सीपीयू विशिष्ट एक्सटेंशन (यानी जाल, जीपीआईओ, घड़ी) जो या तो बूटल में लोड हो जाते हैं या बूटलोडर द्वारा लोड किए जाते हैं (क्योंकि एनएएनडी एक्सटेंशन अभी तक उपलब्ध नहीं होने के कारण कर्नेल फाइल सिस्टम से इंटरैक्ट नहीं कर सकता है)।
जब मैं कैसे एआरएम सीपीयू काम पर सामान्य जानकारी प्राप्त करते हैं, मैं नहीं भी जहां xnu
पोर्ट के साथ आरंभ करने के लिए, पता है क्योंकि मैं पूरी तरह से यकीन है कि कैसे करने के लिए नहीं कर रहा हूँ:
- कम करें स्तर डीबगिंग (चूंकि कर्नेल डीबगिंग सुविधाएं स्टार्टअप के दौरान शुरुआती अनुपलब्ध हैं)।
- कर्नेल स्रोत पेड़ के बाकी हिस्सों के साथ एआरएम शाखा को एकीकृत करें (यानी यह सुनिश्चित करना कि
osfmk/kern
में सामान काम कर रहा है)। - प्लेटफ़ॉर्म स्वतंत्र कर्नेल को शुरू करने के लिए एक सैने वातावरण बनाएं (
machine_startup()
); - मुख्य कर्नेल कोड के अंदर कुछ प्लेटफ़ॉर्म विशिष्ट कोड को ठीक करें (अधिकांश प्लेटफ़ॉर्म कोड
osfmk/platform_name
तक सीमित है लेकिन इसमें से कुछ कोosfmk/kern
और अन्य में एकीकृत किया जाना है)।
वहाँ विभिन्न प्लेटफार्मों के लिए XNU (या कम से कम मच) कर्नेल पोर्टिंग पर किसी भी सभ्य गाइड कर रहे हैं, लिनक्स गाइड देखते हैं जैसे?
+1 मैं आपकी हिम्मत की सराहना करता हूं। किसी को कड़ी मेहनत करनी है।मुझे इसके बारे में कुछ भी पता नहीं है, लेकिन मुझे लगता है कि अगर आप इसे शुरू करते हैं तो आप वह होंगे जो शायद डिबगिंग गाइड लिख रहे होंगे! काई कहो ब्रो। –