Ich lese gerade ein paar Tutorials, wie man mit EFI-Stub (efistub) den Linux-Kernel lädt. Diese Anweisungen verwenden häufig Kernel-Boot-Parameter add_efi_memmap
. Die vorgesehene Hardware ist Intel x64 mit 8 GB RAM. Mein aktuelles Setup ist grub-efi
Bootloader und Kernel v3.13.
GRUB- Boot ohne das add_efi_memmap
Boot-Argument:
23
BIOS-e820 Zeilen gezählt vondmesg | grep BIOS-e820: | wc -l
243
EFI-Speicherzeilen gezählt vondmesg | grep efi:\ mem | wc -l
- DMA-Zone:
24
Seiten reserviert - Speicher: 7840568K / 8283384K verfügbar
- 442816K reserviert
GRUB booten mit add_efi_memmap
und die EFI Memory Map-Größe scheint sich zu unterscheiden:
23
BIOS-e820-Leitungen57
EFI-Speicherzeilen- DMA-Zone:
22
Seiten reserviert - Speicher: 7885076K / 8283384K verfügbar
- 398308K reserviert
EFI-Stub- Boot ohne add_efi_memmap
:
22
BIOS-e820-Leitungen60
EFI-Speicherzeilen- DMA-Zone:
21
Seiten reserviert - Speicher: 7885012K / 8283384K verfügbar
EFI Stub Boot mit add_efi_memmap
:
22
BIOS-e820-Leitungen66
EFI-Speicherzeilen- DMA-Zone:
21
Seiten reserviert - Speicher: 7882124K / 8283384K verfügbar
Nachdem ich mehr Informationen gelesen habe, kann ich nicht herausfinden, ob ich sie hinzufügen soll add_efi_memmap
oder nicht. Es macht etwas extra, was nicht unbedingt notwendig zu sein scheint, um hochzufahren. Auf der anderen Seite kann es eine bessere (vollständigere) Sicht auf den nutzbaren Speicher geben.
In welchen Fällen sollte dieses Boot-Argument add_efi_memmap für den EFI-Stub-Boot verwendet werden? Würde dies die EFI-Stub-Startgeschwindigkeit erhöhen / verringern und den für Anwendungen verfügbaren freien Speicher erhöhen oder verringern? Wie kann ich (besser) überprüfen, ob meine EFI-Speicherkarte mehr Einträge enthält als meine E820-Karte?
Einige Dokumente zu add_efi_memmep wurden bereits konsultiert:
add_efi_memmap : EFI-Speicherzuordnung des verfügbaren physischen Arbeitsspeichers einschließen.
Wenn die EFI-Speicherzuordnung zusätzliche Einträge enthält, die nicht in der E820-Zuordnung enthalten sind, können Sie diese Einträge mithilfe des folgenden Kernel-Befehlszeilenparameters in die Kernel-Speicherzuordnung des verfügbaren physischen Arbeitsspeichers aufnehmen. - https://www.kernel.org/doc/Documentation/x86/x86_64/uefi.txt
Anstatt immer EFI-Speicherzuordnungseinträge (falls vorhanden) zur Speicherzuordnung hinzuzufügen, nachdem anfänglich entweder E820-BIOS-Speicherzuordnungseinträge und / oder Kernel-Befehlszeilen-Memmapeinträge gefunden wurden, fügen Sie -instead- nur solche zusätzlichen EFI-Speicherzuordnungseinträge hinzu, wenn die Kernel-Startoption aktiviert ist :
add_efi_memmap
ist angegeben. - http://www.gossamer-threads.com/lists/linux/kernel/937817
Boot friert ein - Wenn das Booten nach dem Laden des GRUB-Kernels und der ersten Ramdisk ohne Fehlermeldung hängen bleibt, entfernen Sie den Kernelparameter add_efi_memmap. - https://wiki.archlinux.org/index.php/GRUB#Boot_freezes
Dieser Patch ändert das Verhalten des kexec Loader , wenn die
add_efi_memmap
Option auf der aktuell laufende Kernel Kommandozeile vorhanden ist, die Kernel - Speicherkarte aus lesen/proc/iomem
statt/sys/firmware/memmap
.Auf EFI-Systemen fehlt manchmal die e820-Tabelle oder ist unvollständig. Systeme wie diese verwenden die
add_efi_memmap
Option, EFIs Speichertabelleneinträge zur Speichertabelle des Kernels hinzuzufügen, um ein vollständiges Bild des Systemspeichers zu erstellen. Wenn Sie diese Option verwenden, werden diese Einträge jedoch nicht zu der Tabelle hinzugefügt, die zum Auffüllen verwendet/sys/firmware/memmap
wird. Hierbei handelt es sich um eine makellose Originalkopie.Der kexec-Loader verwendet standardmäßig die unberührte Speicherzuordnung. Dies führt zu Problemen, wenn der Loader kein vollständiges Bild des Systems hat und den Kernel oder die Ramdisk an Orten falsch lädt, die nicht wirklich verwendbar sind. Diese Änderung veranlasst den Kexec-Loader, die Befehlszeile des laufenden Kernels auf die
add_efi_memmap
Option zu überprüfen und, falls sie gefunden wird, die geänderte Map anstelle der ursprünglichen Map zu verwenden. - http://lists.infradead.org/pipermail/kexec/2011-April/005014.html
Die Lösung (Hack), die die Linux-Kernel-Entwickler 2009 nach einer Reihe von Fehlstarts gefunden hatten, bestand darin, eine Kernel-Befehlszeilenoption hinzuzufügen,
add_efi_memmap
- um den Kernel anzuweisen, die EFI-Speicherzuordnung zu überprüfen und sie zum Korrigieren verschiedener Einträge zu verwenden in der E820-Speicherkarte. - http://blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html