मुझे UEFI / EFI बूट में कर्नेल तर्क के रूप में add_efi_memmap निर्दिष्ट करने की आवश्यकता है?


29

मैं कुछ ट्यूटोरियल पढ़ रहा हूं कि कैसे EFI स्टब (efistub) लिनक्स कर्नेल को लोड करता है। ये निर्देश अक्सर कर्नेल बूट पैरामीटर का उपयोग करते हैं add_efi_memmap। इरादा हार्डवेयर Intel x64 है जिसमें 8GB RAM है। मेरा वर्तमान सेटअप grub-efiबूटलोडर और कर्नेल v3.13 चला रहा है ।

GRUB बूट के बिनाadd_efi_memmap बूट तर्क:

  • 23BIOS-e820 लाइनों द्वारा गिना जाता हैdmesg | grep BIOS-e820: | wc -l
  • 243EFI मेमोरी लाइनों द्वारा गिना जाता है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

जवाबों:


1

उस मामले के लिए बूट लोडर, या ग्रब, e820 जैसे मेमोरी मैप को फिर से बनाता है, मुझे लगता है कि यही कारण है कि आप GRUB और EFI स्टब लोडर के बीच अलग-अलग मान देख रहे हैं।

लिनक्स स्रोत कोड में एक टिप्पणी है जो कहती है कि ईएफआई "अधिकतम 128 प्रविष्टियों से अधिक की अनुमति देता है जो कि ई 820 विरासत (जीरोपेज) मेमोरी मैप में फिट हो सकती हैं।" ऐसा लगता है कि आपके द्वारा पोस्ट किए गए नंबरों के अनुसार मामला नहीं है, इसलिए मुझे संदेह है कि add_efi_memmap को जोड़ना सहायक है ... हालांकि, यह निश्चित रूप से इस तालिका को पार्स करने के लिए चोट नहीं पहुंचाता है ...


1

यदि आपका लिनक्स वितरण सफलतापूर्वक EFI STUB जूते है, तो add_efi_memmap का उपयोग करने की कोई आवश्यकता नहीं है। यह कर्नेल कमांड लाइन विकल्प आजकल शायद ही कभी आवश्यक है - यूईएफआई फर्मवेयर और उसी के लिए लिनक्स कर्नेल समर्थन में 2009 के युग के बाद से काफी सुधार हुआ है।

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