उनके बीच क्या अंतर है?
छवि : सामान्य लिनक्स कर्नेल बाइनरी इमेज फ़ाइल।
zImage : लिनक्स कर्नेल छवि का एक संपीड़ित संस्करण जो स्वयं निकालने वाला है।
uImage : एक छवि फ़ाइल जिसमें U-बूट आवरण ( mkimage उपयोगिता द्वारा स्थापित ) है जिसमें OS प्रकार और लोडर जानकारी शामिल है।
एक बहुत ही सामान्य अभ्यास (जैसे कि विशिष्ट लिनक्स कर्नेल मेकफाइल) एक zImage फ़ाइल का उपयोग करना है। चूंकि zImage फ़ाइल सेल्फ-एक्स्ट्रेक्टिंग है (अर्थात किसी बाहरी डिकम्प्रेसर की आवश्यकता नहीं है), रैपर यह संकेत देगा कि यह कर्नेल "नहीं संपीड़ित" है, हालांकि यह वास्तव में है।
ध्यान दें कि U- बूट के लेखक / अनुरक्षक एक व्यापक उपयोग का उपयोग करता है (एक व्यापक) का उपयोग करता है।
वास्तव में यह बहुत बेवकूफ है एक uImage के अंदर एक zImage का उपयोग करने के लिए। सामान्य (असम्पीडित) कर्नेल छवि का उपयोग करने के लिए बेहतर है, इसे सिर्फ gzip का उपयोग करके संपीड़ित करें, और इसे mkimage के लिए poayload के रूप में उपयोग करें। इस तरह से यू-बूट प्रत्येक कर्नेल छवि के साथ अभी तक एक और अनलॉकर को शामिल करने के बजाए अनक्रीस्पेशन का काम करता है।
( https://lists.yoctoproject.org/pipermail/yocto/2013-October/01787878 से उद्धृत )
मुझे किस प्रकार की कर्नेल छवि का उपयोग करना है?
आप जो भी प्रोग्राम करना चाहते हैं उसे चुन सकते हैं।
भंडारण की अर्थव्यवस्था के लिए, आपको संभवतः असम्पीडित पर एक संकुचित छवि चुननी चाहिए।
कर्नेल को निष्पादित करने से सावधान रहें (संभवतः लिनक्स कर्नेल) में कर्नेल छवि को मेमोरी में लोड करने से अधिक शामिल है। आर्किटेक्चर (उदाहरण के लिए एआरएम) और लिनक्स कर्नेल संस्करण (जैसे डीटीबी के साथ या बिना) के आधार पर, रजिस्टरों और मेमोरी बफ़र हैं जो कर्नेल के लिए तैयार करना पड़ सकता है। एक उदाहरण में हार्डवेयर इनिशियलाइज़ेशन भी था जिसे यू-बूट ने प्रदर्शन किया था जिसे दोहराया जाना था।
परिशिष्ट
मुझे पता है कि यू-बूट को uImage प्रारूप में कर्नेल की आवश्यकता है।
यह यू-बूट के सभी संस्करणों के लिए सटीक है जिसमें केवल बूटम कमांड है।
लेकिन यू-बूट के अधिक हाल के संस्करणों में बूटज़ कमांड भी हो सकता है जो एक zImage बूट कर सकता है।