मैं कुछ ट्यूटोरियल पढ़ रहा हूं कि कैसे EFI स्टब (efistub) लिनक्स कर्नेल को लोड करता है। ये निर्देश अक्सर कर्नेल बूट पैरामीटर का उपयोग करते हैं add_efi_memmap
। इरादा हार्डवेयर Intel x64 है जिसमें 8GB RAM है। मेरा वर्तमान सेटअप grub-efi
बूटलोडर और कर्नेल v3.13 चला रहा है ।
GRUB बूट के बिनाadd_efi_memmap
बूट तर्क:
23
BIOS-e820 लाइनों द्वारा गिना जाता हैdmesg | grep BIOS-e820: | wc -l
243
EFI मेमोरी लाइनों द्वारा गिना जाता हैdmesg | grep efi:\ mem | wc -l
- डीएमए जोन:
24
पेज आरक्षित हैं - मेमोरी: 7840568K / 8283384K उपलब्ध
- 442816K आरक्षित
GRUB बूट के साथ add_efi_memmap
और EFI मेमोरी मैप का आकार भिन्न प्रतीत होता है:
23
BIOS-e820 लाइनें57
ईएफआई मेमोरी लाइनें- डीएमए जोन:
22
पेज आरक्षित हैं - मेमोरी: 7885076K / 8283384K उपलब्ध
- 398308K आरक्षित
बिना EFI स्टब बूट add_efi_memmap
:
22
BIOS-e820 लाइनें60
ईएफआई मेमोरी लाइनें- डीएमए जोन:
21
पेज आरक्षित हैं - मेमोरी: 7885012K / 8283384K उपलब्ध
EFI स्टब बूट के साथ add_efi_memmap
:
22
BIOS-e820 लाइनें66
ईएफआई मेमोरी लाइनें- डीएमए जोन:
21
पेज आरक्षित हैं - मेमोरी: 7882124K / 8283384K उपलब्ध
अधिक जानकारी पढ़ने के बाद - जैसा कि नीचे लिखा गया है - मैं यह पता नहीं लगा सकता कि क्या जोड़ना है add_efi_memmap
या नहीं। यह कुछ अतिरिक्त करता है जो बूट करने के लिए बिल्कुल आवश्यक नहीं लगता है। दूसरी ओर यह प्रयोग करने योग्य स्मृति को बेहतर (अधिक पूर्ण) दृश्य देने के लिए दे सकता है।
EFI स्टब बूटिंग के लिए किन मामलों में इस add_efi_memmap बूट तर्क का उपयोग किया जाना चाहिए ? क्या EFI स्टब बूट गति को बढ़ाएगा / घटाएगा, और अनुप्रयोगों के लिए उपलब्ध मुफ्त मेमोरी को बढ़ाएगा या घटाएगा? कैसे (बेहतर) जाँच करें कि अगर मेरे EFI मेमोरी मैप में अधिक प्रविष्टियाँ हैं तो मेरा E820 मैप?
कुछ add_efi_memmep प्रलेखन पहले से ही परामर्श:
add_efi_memmap : उपलब्ध भौतिक RAM का EFI मेमोरी मैप शामिल करें।
यदि EFI मेमोरी मैप में E820 मैप में अतिरिक्त प्रविष्टियाँ नहीं हैं, तो आप निम्न कर्नेल कमांड लाइन पैरामीटर का उपयोग करके उन प्रविष्टियों को उपलब्ध भौतिक RAM के कर्नेल मेमोरी मैप में शामिल कर सकते हैं। - https://www.kernel.org/doc/Documentation/x86/x86_64/uefi.txt
हमेशा E820 BIOS मेमोरी मैप्स प्रविष्टियों और / या कर्नेल कमांड लाइन मेममैप प्रविष्टियों को खोजने के बाद मेमोरी मैप में हमेशा EFI मेमोरी मैप एंट्रीज (यदि मौजूद है) जोड़ने के बजाय, तो आइंस्टीन- केवल ऐसे अतिरिक्त EFI मेमोरी मैप एंट्रीज जोड़ें, यदि कर्नेल विकल्प विकल्प :
add_efi_memmap
निर्दिष्ट है। - http://www.gossamer-threads.com/lists/linux/kernel/937817
बूट फ़्रीज - यदि कर्ब और प्रारंभिक रैमडिस्क लोड करने के बाद बूटिंग बिना किसी त्रुटि संदेश के अटक जाती है, तो add_efi_memmap कर्नेल पैरामीटर को हटाने का प्रयास करें। - https://wiki.archlinux.org/index.php/GRUB#Boot_freezes
यह पैच kexec लोडर के व्यवहार को बदलता है जब
add_efi_memmap
विकल्प वर्तमान में चल रहे कर्नेल की कमांड लाइन पर मौजूद होता है,/proc/iomem
इसके बजाय कर्नेल मेमोरी मैप को पढ़ने के लिए/sys/firmware/memmap
।ईएफआई प्रणालियों पर, कभी-कभी ई 820 टेबल गायब या अपूर्ण होती है। सिस्टम
add_efi_memmap
की मेमोरी की पूरी तस्वीर बनाने के लिए इन जैसे सिस्टम EFI की मेमोरी टेबल प्रविष्टियों को कर्नेल मेमोरी टेबल में जोड़ने के विकल्प का उपयोग करते हैं ; हालांकि, विकल्प का उपयोग करने के लिए इन प्रविष्टियों को पॉप्युलेट करने के लिए उपयोग की गई तालिका में नहीं जोड़ा जाता है/sys/firmware/memmap
, जो कि एक मूल मूल प्रति है।Kexec लोडर डिफ़ॉल्ट रूप से प्राचीन मेमोरी मैप का उपयोग करता है, जो समस्याओं का कारण बनता है जब लोडर में सिस्टम की पूरी तस्वीर नहीं होती है और उन स्थानों पर कर्नेल या रैमडिस्क को लोड करता है जो वास्तव में उपयोग करने योग्य नहीं हैं। यह परिवर्तन kexec लोडर को
add_efi_memmap
विकल्प के लिए चल रहे कर्नेल की कमांड लाइन की जाँच करता है और यदि यह मिल जाता है, तो मूल नक्शे के बजाय संशोधित नक्शे का उपयोग करेगा। - http://lists.infradead.org/pipermail/kexec/2011-April/005014.html
लिनक्स कर्नेल डेवलपर्स द्वारा 2009 में झूठे शुरू होने के बाद समाधान (हैक), कर्नेल कमांड लाइन विकल्प को जोड़ने के लिए था,
add_efi_memmap
- कर्नेल को ईएफआई मेमोरी मैप को देखने और विभिन्न प्रविष्टियों को ठीक करने के लिए उपयोग करने के लिए कहना। E820 मेमोरी मैप में। - http://blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html