रास्पबेरी पाई बूट कैसे करता है?


57

मेरे पास एक रास्पबेरी मिनी कंप्यूटर है और मैं सोच रहा हूं कि यह कैसे पूरी बूट प्रक्रिया करता है। मैं अपनी खुद की लिपियों के साथ अपनी कर्नेल और इनिट रैमडिस्क को संकलित कर सकता हूं और पीसी पर अपना न्यूनतम लिनक्स सिस्टम बना सकता हूं, लेकिन इसके लिए मुझे कुछ बूटलोडर का उपयोग करने की आवश्यकता है। रास्पबेरी बूटलोडर्स को बिल्कुल भी सपोर्ट नहीं करता है।

यह किसी तरह से अपने GPU का उपयोग करके बूट करने लगता है जो एसडी कार्ड पर कुछ विभाजन (शायद बूट करने योग्य ध्वज के साथ) पढ़ता है जिसे FAT32 में स्वरूपित करने की आवश्यकता होती है, फिर यह वहां से कुछ फाइलें पढ़ता है, जो कि प्रदान की जाती हैं, उदाहरण के लिए रास्पियन।

लेकिन मैं अपने स्वयं के अनुकूलन के साथ अपने कर्नेल को कैसे बूट करूँगा, जिसे मैंने खुद संकलित किया है? मैं कर्नेल छवि / initrd (ram डिस्क) को कहां से कॉपी करूं ताकि रास्पबेरी इसे ढूंढे और इससे बूट करें? मैं मूल रूप से कुछ बहुत ही विस्तृत तकनीकी दस्तावेज़ीकरण की तलाश कर रहा हूं जो रास्पबेरी पर बूट प्रक्रिया का वर्णन करता है या बस इसके बारे में कुछ स्पष्टीकरण देता है।


जवाबों:


59

इस रास्पबेरी पाई मंच पोस्ट से [ loader.binएक कलावाद के रूप में प्रतिबिंबित करने के लिए संपादित ] :

  1. जब रास्पबेरी पाई को पहले चालू किया जाता है, तो एआरएम कोर बंद हो जाता है, और GPU कोर चालू होता है। इस बिंदु पर SDRAM अक्षम है।
  2. GPU पहले चरण के बूटलोडर को निष्पादित करना शुरू कर देता है, जो SoC पर ROM में संग्रहीत होता है। पहला चरण बूटलोडर एसडी कार्ड को पढ़ता है, और दूसरे चरण के बूटलोडर ( bootcode.bin) को L2 कैश में लोड करता है , और इसे चलाता है।
  3. bootcode.binSDRAM को सक्षम करता है, और RAM में SD कार्ड से तीसरे चरण का बूटलोडर (लोडर.बिन) पढ़ता है, और इसे चलाता है। [अधिक हाल के संस्करण तीसरे चरण के बूटलोडर का उपयोग नहीं करते हैं। ]
  4. [यदि लागू हो] loader.binGPU फर्मवेयर पढ़ता है ( start.elf)।
  5. start.elfपढ़ता है config.txt, cmdline.txtऔरkernel.img

loader.binज्यादा कुछ नहीं करता। यह .elfफ़ाइलों को संभाल सकता है, और इसलिए start.elfमेमोरी के शीर्ष पर लोड करने की आवश्यकता है (एआरएम पता शून्य से एसडीआरएएम का उपयोग करता है)। इसमें एल्फ लोडिंग सपोर्ट जोड़ने की योजना है bootcode.bin, जो loader.binअनावश्यक होगा , लेकिन यह कम प्राथमिकता है (मुझे लगता है कि यह आपको बूट पर 100ms बचा सकता है)। [यह परिवर्तन तब से हुआ है। ]

यहां कुछ संसाधन दिए गए हैं जो सहायक हो सकते हैं:


2
क्या इन बिन फ़ाइलों की सामग्री सभी स्वामित्व सॉफ्टवेयर है?
पेट्र

3
@Petr यहां रास्पबेरी पाई फर्मवेयर के लिए जीथब है, मैं इसे अपने उत्तर में संपादित करूंगा।
syb0rg

1
पर रास्पबेरी Pi पूछे जाने वाले प्रश्न के लिए, यह कहते हैं अपने हाथ में ले "आप से एसडी लेकिन एक यूएसबी HD कर सकते हैं बूट करने के लिए है" "प्रारंभिक बूट के बाद। आप एक एसडी कार्ड के बिना बूट नहीं कर सकते हैं।"
syb0rg

1
क्या वह परिनियोजन, जिसे पहले पढ़ा गया है, B ध्वज के साथ कोई भी विभाजन या पहले विभाजन होना चाहिए? क्या होगा अगर मैंने इसे बहुत बड़ा बना दिया है और मैं एसडी कार्ड के अंत में एक और बनाना चाहता हूं जो कि छोटा होगा
पेट्र

1
@Petr आपको एक और सवाल पूछना चाहिए!
syb0rg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.