Eu estou lendo alguns tutoriais como EFI stub (efistub) carregar o kernel do Linux. Essas instruções geralmente usam o parâmetro de inicialização do kernel add_efi_memmap
. O hardware pretendido é o Intel x64 com 8 GB de RAM. Minha configuração atual está executando grub-efi
bootloader e kernel v3.13.
GRUB inicializa sem o argumento add_efi_memmap
boot:
-
23
BIOS-e820 linhas contadas por dmesg | grep BIOS-e820: | wc -l
-
243
Linhas de memória EFI contadas por dmesg | grep efi:\ mem | wc -l
- Zona de DMA:
24
páginas reservadas
- Memória: 7840568K / 8283384K disponível
- 442816K reservados
GRUB inicializa com add_efi_memmap
e o tamanho do mapa de memória EFI parece diferir:
-
23
linhas BIOS-e820
-
57
linhas de memória EFI
- Zona de DMA:
22
páginas reservadas
- Memória: 7885076K / 8283384K disponível
- 398308K reservados
Inicialização EFI de inicialização sem add_efi_memmap
:
-
22
linhas BIOS-e820
-
60
linhas de memória EFI
- Zona de DMA:
21
páginas reservadas
- Memória: 7885012K / 8283384K disponível
Inicialização EFI de inicialização com add_efi_memmap
:
-
22
linhas BIOS-e820
-
66
linhas de memória EFI
- Zona de DMA:
21
páginas reservadas
- Memória: 7882124K / 8283384K disponível
Depois de ler mais informações, conforme descrito abaixo, não consigo adicionar add_efi_memmap
ou não. Faz algo extra que não parece absolutamente necessário para arrancar. Por outro lado, pode dar uma visão melhor (mais completa) da memória utilizável.
Em quais casos esse argumento de inicialização add_efi_memmap deve ser usado para a inicialização via stub do EFI? Isso aumentaria / diminuiria a velocidade de inicialização do stub EFI e aumentaria ou diminuiria a memória livre disponível para aplicativos? Como (melhor) verificar se o meu mapa de memória EFI inclui mais entradas do que o meu mapa E820?
Alguma documentação do add_efi_memmep já consultada:
add_efi_memmap : include EFI memory map of available physical RAM.
If the EFI memory map has additional entries not in the E820 map,
you can include those entries in the kernels memory map of available
physical RAM by using the following kernel command line parameter. - https://www.kernel.org/doc/Documentation/x86/x86_64/uefi.txt
Instead of always adding EFI memory map entries (if present) to the memory map after initially finding either E820 BIOS memory map entries and/or kernel command line memmap entries, -instead- only add such additional EFI memory map entries if the kernel boot option: add_efi_memmap
is specified. - http://www.gossamer-threads.com/lists/linux/kernel/937817
Boot freezes - If booting gets stuck without any error message after GRUB loading the kernel and the initial ramdisk, try removing the add_efi_memmap kernel parameter. - https://wiki.archlinux.org/index.php/GRUB#Boot_freezes
This patch changes the behavior of the kexec loader when the add_efi_memmap
option is present on the currently running kernel's command line, to read the kernel memory map from /proc/iomem
instead of /sys/firmware/memmap
.
On EFI systems, sometimes the e820 table is missing or incomplete. Systems like these use the add_efi_memmap
option to add EFI's memory table entries to the kernel's memory table to build a complete picture of the system's memory; however, using the option does not add these entries to the table used to populate /sys/firmware/memmap
, which is meant to be a pristine original copy.
The kexec loader uses the pristine memory map by default, which causes problems when the loader doesn't have a complete picture of the system and incorrectly loads the kernel or ramdisk in places that aren't actually usable. This change makes the kexec loader check the running kernel's command line for the add_efi_memmap
option and if it finds it, will use the modified map instead of the original map. - http://lists.infradead.org/pipermail/kexec/2011-April/005014.html
The solution (hack), arrived at by the Linux kernel developers in 2009 after a number of false starts was to add a kernel command line option, add_efi_memmap
– to tell the kernel to look at the EFI memory map and use it to fix up various entries in the E820 memory map. - http://blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html