UEFI / EFI önyüklemesinde add_efi_memmap'ı çekirdek argümanı olarak ne zaman belirtmem gerekir?


29

Bazı dersleri EFI saplamasının (efistub) Linux çekirdeğini nasıl yükleyeceğini okuyorum. Bu talimatlar genellikle çekirdek önyükleme parametresini kullanır add_efi_memmap. Amaçlanan donanım 8GB RAM'e sahip Intel x64'tür. Geçerli kurulumum grub-efibootloader ve çekirdek v3.13'ü çalıştırıyor .

GRUB önyükleme olmadanadd_efi_memmap önyükleme argüman:

  • 23BIOS-e820 satırları sayılırdmesg | grep BIOS-e820: | wc -l
  • 243EFI bellek hatları tarafından sayılandmesg | grep efi:\ mem | wc -l
  • DMA bölgesi: 24sayfalar ayrıldı
  • Bellek: 7840568K / 8283384K kullanılabilir
  • 442816K ayrılmış

GRUB önyükleme ile add_efi_memmap ve EFI hafıza haritası boyutu farklılık gözüküyor:

  • 23 BIOS-e820 hatları
  • 57 EFI hafıza hatları
  • DMA bölgesi: 22sayfalar ayrıldı
  • Bellek: 7885076K / 8283384K kullanılabilir
  • 398308K saklıdır

EFI saplama önyükleme olmadan add_efi_memmap :

  • 22 BIOS-e820 hatları
  • 60 EFI hafıza hatları
  • DMA bölgesi: 21sayfalar ayrıldı
  • Bellek: 7885012K / 8283384K kullanılabilir

EFI saplama çizme ile add_efi_memmap :

  • 22 BIOS-e820 hatları
  • 66 EFI hafıza hatları
  • DMA bölgesi: 21sayfalar ayrıldı
  • Bellek: 7882124K / 8283384K kullanılabilir

Daha fazla bilgi okuduktan sonra - aşağıda belirtildiği gibi - eklemek isteyip istemediğinizi çözemiyorum add_efi_memmap. Önyükleme için kesinlikle gerekli görünmeyen ekstra bir şey yapıyor. Öte yandan, kullanılabilir belleğin daha iyi (daha eksiksiz) bir görünümünü vermek için verebilir.

Hangi durumlarda bu add_efi_memmap önyükleme argümanı EFI saplama önyüklemesi için kullanılmalıdır? Bu, EFI saplama önyükleme hızını artırır / azaltır ve uygulamalar için boş belleği artırır veya azaltır mı? EFI bellek haritamın E820 haritamdan daha fazla giriş içerip içermediğini (daha iyi) nasıl kontrol edebilirim?


Bazı add_efi_memmep belgelerine zaten danışıldı:

add_efi_memmap : mevcut fiziksel RAM'ın EFI bellek haritasını içerir.
EFI bellek haritasında E820 haritasında olmayan ilave girişler varsa, aşağıdaki çekirdek komut satırı parametresini kullanarak mevcut fiziksel RAM'ın çekirdek bellek haritasındaki girişleri ekleyebilirsiniz. - https://www.kernel.org/doc/Documentation/x86/x86_64/uefi.txt


Başlangıçta E820 BIOS bellek haritası girişlerini ve / veya çekirdek komut satırı memmap girişlerini bulduktan sonra EFI bellek haritası girişlerini (varsa) her zaman bellek haritasına eklemek yerine, yalnızca çekirdek önyükleme seçeneği varsa, bu ek EFI bellek haritası girişlerini ekleyin. : add_efi_memmapbelirtildi. - http://www.gossamer-threads.com/lists/linux/kernel/937817


Önyükleme donuyor - GRUB, çekirdeği ve ilk ramdisk'i yükledikten sonra herhangi bir hata mesajı olmadan takılırsa, add_efi_memmap çekirdek parametresini kaldırmayı deneyin. - https://wiki.archlinux.org/index.php/GRUB#Boot_freezes


Bu düzeltme add_efi_memmap, şu anda çalışan çekirdeğin komut satırında seçenek varken , çekirdek bellek eşlemesini /proc/iomemyerine okumak için kexec yükleyicisinin davranışını değiştirir /sys/firmware/memmap.

EFI sistemlerinde, bazen e820 tablosu eksik veya eksik olabilir. Bunun gibi sistemler add_efi_memmap, sistemin belleğinin tam bir resmini oluşturmak için çekirdeğin bellek tablosuna EFI'nin bellek tablosu girişlerini ekleme seçeneğini kullanır ; ancak, seçeneği kullanmak, bu girişleri /sys/firmware/memmap, bozulmamış bir orijinal kopya olması amaçlanan, doldurmak için kullanılan tabloya eklemez .

Kexec yükleyici varsayılan olarak bozulmamış bellek haritasını kullanır; bu, yükleyici sistemin tam bir resmine sahip olmadığında ve çekirdeği veya ramdisk'i gerçekten kullanılamayan yerlere yanlış yüklediğinde sorunlara neden olur. Bu değişiklik kexec yükleyicisinin add_efi_memmapseçenek için çalışan çekirdeğin komut satırını kontrol etmesini sağlar ve eğer bulursa, orijinal harita yerine değiştirilmiş haritayı kullanır. - http://lists.infradead.org/pipermail/kexec/2011-Nisan/005014.html


2009 yılında Linux çekirdek geliştiricileri tarafından bir dizi yanlış başlangıçtan sonra gelen çözüm (kesmek) bir çekirdek komut satırı seçeneği eklemek idi, add_efi_memmap- çekirdeğe EFI bellek haritasına bakmasını ve çeşitli girişleri düzeltmek için kullanmasını söylemek E820 hafıza haritasında. - http://blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html

Yanıtlar:


1

Önyükleme yükleyicileri ya da Grub, bu konuda e820 gibi bellek haritasını yeniden oluşturuyor, GRUB ve EFI saplama yükleyicisi arasında farklı değerler görmenin nedeni budur.

Linux kaynak kodunda, EFI'nin "e820 eski (sıfır) bellek haritasına sığabilecek maksimum 128 girişden daha fazlasına" izin verdiğini söyleyen bir yorum var. Bu, gönderdiğiniz sayılara göre durum gibi görünmüyor, bu yüzden add_efi_memmap eklemenin faydalı olacağından şüpheliyim ... Ancak, kesinlikle bu tabloyu ayrıştırmanın da bir zararı yok ...


1

Eğer Linux dağıtımınız başarıyla EFI STUB önyüklenirse, add_efi_memmap kullanmaya gerek yoktur. Bu çekirdek komut satırı seçeneğine bugünlerde nadiren ihtiyaç duyulmaktadır - UEFI ürün yazılımı ve bunun için Linux çekirdek desteği 2009 döneminden bu yana önemli ölçüde iyileşmiştir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.