Saya membaca beberapa tutorial cara EFI stub (efistub) memuat kernel Linux. Instruksi ini sering menggunakan parameter boot kernel add_efi_memmap
. Perangkat keras yang dimaksud adalah Intel x64 yang memiliki RAM 8GB. Setup saya saat ini adalah menjalankan grub-efi
bootloader dan kernel v3.13.
GRUB booting tanpa satu add_efi_memmap
argumen boot:
23
Garis BIOS-e820 dihitung olehdmesg | grep BIOS-e820: | wc -l
243
Garis memori EFI dihitung olehdmesg | grep efi:\ mem | wc -l
- Zona DMA:
24
halaman disediakan - Memori: 7840568K / 8283384K tersedia
- 442816K dilindungi undang-undang
Boot GRUB dengan add_efi_memmap
dan ukuran peta memori EFI tampaknya berbeda:
23
Garis BIOS-e82057
Garis memori EFI- Zona DMA:
22
halaman disediakan - Memori: 7885076K / 8283384K tersedia
- 398308K dilindungi undang-undang
Boot rintisan EFI tanpa add_efi_memmap
:
22
Garis BIOS-e82060
Garis memori EFI- Zona DMA:
21
halaman disediakan - Memori: 7885012K / 8283384K tersedia
Boot rintisan EFI dengan add_efi_memmap
:
22
Garis BIOS-e82066
Garis memori EFI- Zona DMA:
21
halaman disediakan - Memori: 7882124K / 8283384K tersedia
Setelah membaca informasi lebih lanjut - seperti yang diuraikan di bawah ini - saya tidak tahu apakah akan menambahkan add_efi_memmap
atau tidak. Itu melakukan sesuatu yang ekstra yang tampaknya tidak mutlak diperlukan untuk boot. Di sisi lain, ia dapat memberikan tampilan memori yang dapat digunakan (lebih lengkap) yang lebih baik.
Dalam kasus apa argumen boot add_efi_memmap ini digunakan untuk booting EFI rintisan? Apakah itu menambah / mengurangi kecepatan boot EFI rintisan, dan menambah atau mengurangi memori bebas, tersedia untuk aplikasi? Bagaimana cara (lebih baik) memeriksa apakah peta memori EFI saya memasukkan lebih banyak entri daripada peta E820 saya?
Beberapa dokumentasi add_efi_memmep sudah dikonsultasikan:
add_efi_memmap : sertakan peta memori EFI dari RAM fisik yang tersedia.
Jika peta memori EFI memiliki entri tambahan yang tidak ada di peta E820, Anda dapat memasukkan entri tersebut dalam peta memori kernel dari RAM fisik yang tersedia dengan menggunakan parameter baris perintah kernel berikut. - https://www.kernel.org/doc/Documentation/x86/x86_64/uefi.txt
Alih-alih selalu menambahkan entri peta memori EFI (jika ada) ke dalam peta memori setelah awalnya menemukan entri peta memori E820 BIOS dan / atau entri memmap baris perintah kernel, -hanya- hanya menambahkan entri peta memori EFI tambahan tersebut jika opsi boot kernel :
add_efi_memmap
ditentukan. - http://www.gossamer-threads.com/lists/linux/kernel/937817
Beku boot - Jika boot macet tanpa ada pesan kesalahan setelah GRUB memuat kernel dan ramdisk awal, coba hapus parameter kernel add_efi_memmap. - https://wiki.archlinux.org/index.php/GRUB#Boot_freezes
Patch ini mengubah perilaku loader kexec ketika
add_efi_memmap
opsi ada pada baris perintah kernel yang sedang berjalan, untuk membaca peta memori kernel dari/proc/iomem
bukan/sys/firmware/memmap
.Pada sistem EFI, kadang-kadang tabel e820 hilang atau tidak lengkap. Sistem seperti ini menggunakan
add_efi_memmap
opsi untuk menambahkan entri tabel memori EFI ke tabel memori kernel untuk membangun gambaran lengkap memori sistem; Namun, menggunakan opsi tidak menambahkan entri ini ke tabel yang digunakan untuk mengisi/sys/firmware/memmap
, yang dimaksudkan sebagai salinan asli yang asli.Loader kexec menggunakan peta memori asli secara default, yang menyebabkan masalah ketika loader tidak memiliki gambaran lengkap dari sistem dan memuat kernel atau ramdisk yang salah di tempat-tempat yang sebenarnya tidak dapat digunakan. Perubahan ini membuat loader kexec memeriksa baris perintah kernel yang berjalan untuk
add_efi_memmap
opsi dan jika menemukannya, akan menggunakan peta yang dimodifikasi bukan peta asli. - http://lists.infradead.org/pipermail/kexec/2011-April/005014.html
Solusinya (retas), tiba di oleh pengembang kernel Linux pada tahun 2009 setelah sejumlah kesalahan mulai adalah menambahkan opsi baris perintah kernel,
add_efi_memmap
- untuk memberitahu kernel untuk melihat peta memori EFI dan menggunakannya untuk memperbaiki berbagai entri di peta memori E820. - http://blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html