Я читаю некоторые уроки, как заглушки EFI (efistub) загружать ядро Linux. В этих инструкциях часто используется параметр загрузки ядра add_efi_memmap. Предполагаемое оборудование - Intel x64 с 8 ГБ оперативной памяти. Моя текущая установка работает под управлением grub-efiзагрузчика и ядра v3.13.
GRUB загрузки без в add_efi_memmapпараметре загрузки:
23Строки BIOS-e820 подсчитываютсяdmesg | grep BIOS-e820: | wc -l243Строки памяти EFI подсчитываютсяdmesg | grep efi:\ mem | wc -l- Зона DMA:
24страницы защищены - Память: 7840568К / 8283384К доступно
- 442816K зарезервировано
GRUB загружается с add_efi_memmap и размер карты памяти EFI, кажется, отличается:
23Линии BIOS-e82057Линии памяти EFI- Зона DMA:
22страницы защищены - Память: 7885076K / 8283384K доступно
- 398308K защищены
EFI заглушка загрузки без add_efi_memmap :
22Линии BIOS-e82060Линии памяти EFI- Зона DMA:
21страницы защищены - Память: 7885012K / 8283384K доступно
EFI заглушки загрузки с add_efi_memmap :
22Линии BIOS-e82066Линии памяти EFI- Зона DMA:
21страницы защищены - Память: 7882124К / 8283384К доступно
После прочтения дополнительной информации - как указано ниже - я не могу понять, добавлять ли add_efi_memmapили нет. Он делает что-то дополнительное, что не кажется абсолютно необходимым для загрузки. С другой стороны, это может дать лучшее (более полное) представление о полезной памяти.
В каких случаях этот загрузочный аргумент add_efi_memmap должен использоваться для загрузки заглушки EFI? Будет ли это увеличивать / уменьшать скорость загрузки заглушки EFI, а также увеличивать или уменьшать объем свободной памяти, доступной для приложений? Как (лучше) проверить, содержит ли моя карта памяти EFI больше записей, чем моя карта E820?
Некоторая документация add_efi_memmep уже рассмотрена:
add_efi_memmap : включает карту памяти EFI доступной физической памяти.
Если в карте памяти EFI есть дополнительные записи, которых нет в карте E820, вы можете включить эти записи в карту памяти ядра доступной физической ОЗУ, используя следующий параметр командной строки ядра. - https://www.kernel.org/doc/Documentation/x86/x86_64/uefi.txt
Вместо того, чтобы всегда добавлять записи карты памяти EFI (если они есть) в карту памяти после первоначального поиска записей карты памяти BIOS E820 и / или записей memmap командной строки ядра, -instead- добавляйте только такие дополнительные записи карты памяти EFI, если опция загрузки ядра :
add_efi_memmapуказано. - http://www.gossamer-threads.com/lists/linux/kernel/937817
Загрузка зависает - если загрузка застревает без каких-либо сообщений об ошибках после загрузки ядра GRUB и начального виртуального диска, попробуйте удалить параметр ядра add_efi_memmap. - https://wiki.archlinux.org/index.php/GRUB#Boot_freezes
Этот патч изменяет поведение загрузчика kexec, когда
add_efi_memmapопция присутствует в командной строке запущенного в данный момент ядра, чтобы/proc/iomemвместо карты считывать карту памяти ядра/sys/firmware/memmap.В системах EFI иногда таблица e820 отсутствует или неполна. Подобные системы используют
add_efi_memmapопцию добавления записей таблицы памяти EFI в таблицу памяти ядра, чтобы построить полную картину памяти системы; однако использование этой опции не добавляет эти записи в таблицу, используемую для заполнения/sys/firmware/memmap, которая должна быть первичной оригинальной копией.Загрузчик kexec по умолчанию использует нетронутую карту памяти, что вызывает проблемы, когда загрузчик не имеет полной картины системы и неправильно загружает ядро или виртуальный диск в местах, которые на самом деле не используются. Это изменение заставляет загрузчик kexec проверять наличие параметра в командной строке работающего ядра
add_efi_memmapи, если он его находит, будет использовать измененную карту вместо исходной карты. - http://lists.infradead.org/pipermail/kexec/2011-April/005014.html
Решение (взлом), к которому разработчики ядра Linux пришли в 2009 году после нескольких неудачных попыток, заключалось в добавлении параметра командной строки ядра
add_efi_memmap- чтобы ядро посмотрело на карту памяти EFI и использовало ее для исправления различных записей. в карте памяти E820. - http://blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html