Я читаю кілька підручників, як 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 -l
243
Лінії пам'яті EFI, що підраховуютьсяdmesg | grep efi:\ mem | wc -l
- Зона DMA:
24
сторінки зарезервовані - Пам'ять: 7840568K / 8283384K доступно
- 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
сторінки зарезервовані - Пам'ять: 7882124K / 8283384K доступно
Прочитавши додаткову інформацію - як зазначено нижче - я не можу зрозуміти, додавати 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 та / або записи пам'яті командного рядка ядра, -instead- додайте такі додаткові записи карти пам'яті EFI, якщо параметр завантаження ядра :
add_efi_memmap
вказано. - http://www.gossamer-threads.com/lists/linux/kernel/937817
Завантаження заморожується - якщо завантаження застрягло без повідомлення про помилку після завантаження GRUB ядра та початкового ramdisk, спробуйте видалити параметр ядра 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