Estoy leyendo algunos tutoriales sobre cómo cargar EFI stub (efistub) en el kernel de Linux. Estas instrucciones a menudo usan el parámetro de arranque del kernel add_efi_memmap
. El hardware previsto es Intel x64 con 8 GB de RAM. Mi configuración actual está ejecutando grub-efi
bootloader y kernel v3.13.
Arranque GRUB sin el add_efi_memmap
argumento de arranque:
23
BIOS-e820 líneas contadas pordmesg | grep BIOS-e820: | wc -l
243
Líneas de memoria EFI contadas pordmesg | grep efi:\ mem | wc -l
- Zona DMA:
24
páginas reservadas - Memoria: 7840568K / 8283384K disponible
- 442816K reservado
El arranque GRUB con add_efi_memmap
y el tamaño del mapa de memoria EFI parece diferir:
23
Lineas BIOS-e82057
Líneas de memoria EFI- Zona DMA:
22
páginas reservadas - Memoria: 7885076K / 8283384K disponible
- 398308K reservado
EFI stub boot sin add_efi_memmap
:
22
Lineas BIOS-e82060
Líneas de memoria EFI- Zona DMA:
21
páginas reservadas - Memoria: 7885012K / 8283384K disponible
EFI stub boot con add_efi_memmap
:
22
Lineas BIOS-e82066
Líneas de memoria EFI- Zona DMA:
21
páginas reservadas - Memoria: 7882124K / 8283384K disponible
Después de leer más información, como se indica a continuación, no puedo determinar si agregar add_efi_memmap
o no. Hace algo extra que no parece absolutamente necesario arrancar. Por otro lado, puede dar una mejor visión (más completa) de la memoria utilizable.
¿En qué casos se debe usar este argumento de arranque add_efi_memmap para el arranque del stub EFI? ¿Aumentaría / disminuiría la velocidad de arranque del stub EFI, y aumentaría o disminuiría la memoria libre, disponible para aplicaciones? ¿Cómo (mejor) verificar si mi mapa de memoria EFI incluye más entradas que mi mapa E820?
Alguna documentación de add_efi_memmep ya consultada:
add_efi_memmap : incluye el mapa de memoria EFI de la RAM física disponible.
Si el mapa de memoria EFI tiene entradas adicionales que no están en el mapa E820, puede incluir esas entradas en el mapa de memoria de núcleos de RAM física disponible utilizando el siguiente parámetro de línea de comando del núcleo. - https://www.kernel.org/doc/Documentation/x86/x86_64/uefi.txt
En lugar de agregar siempre las entradas del mapa de memoria EFI (si está presente) al mapa de memoria después de encontrar inicialmente las entradas del mapa de memoria del BIOS E820 y / o las entradas del mapa de memoria de la línea de comando del kernel, en su lugar, solo agregue tales entradas de mapa de memoria EFI adicionales si la opción de arranque del núcleo :
add_efi_memmap
se especifica - http://www.gossamer-threads.com/lists/linux/kernel/937817
El arranque se congela : si el arranque se bloquea sin ningún mensaje de error después de que GRUB cargue el kernel y el ramdisk inicial, intente eliminar el parámetro del kernel add_efi_memmap. - https://wiki.archlinux.org/index.php/GRUB#Boot_freezes
Este parche cambia el comportamiento del cargador kexec cuando la
add_efi_memmap
opción está presente en la línea de comando del núcleo actualmente en ejecución, para leer el mapa de memoria del núcleo en/proc/iomem
lugar de/sys/firmware/memmap
.En los sistemas EFI, a veces falta la tabla e820 o está incompleta. Sistemas como estos utilizan la
add_efi_memmap
opción de agregar entradas de la tabla de memoria de EFI a la tabla de memoria del núcleo para crear una imagen completa de la memoria del sistema; sin embargo, el uso de la opción no agrega estas entradas a la tabla utilizada para rellenar/sys/firmware/memmap
, que debe ser una copia original inmaculada.El cargador kexec usa el mapa de memoria prístino por defecto, lo que causa problemas cuando el cargador no tiene una imagen completa del sistema y carga incorrectamente el kernel o el ramdisk en lugares que no son realmente utilizables. Este cambio hace que el cargador kexec verifique la línea de comando del núcleo en ejecución para la
add_efi_memmap
opción y, si la encuentra, utilizará el mapa modificado en lugar del mapa original. - http://lists.infradead.org/pipermail/kexec/2011-April/005014.html
La solución (pirateo), a la que llegaron los desarrolladores del kernel de Linux en 2009 después de una serie de inicios falsos fue agregar una opción de línea de comando del kernel,
add_efi_memmap
para decirle al kernel que mire el mapa de memoria EFI y lo use para arreglar varias entradas en el mapa de memoria E820. - http://blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html
fuente