Linux 커널을 EFI 스텁 (efistub)로드하는 방법에 대한 자습서를 읽고 있습니다. 이 명령어들은 종종 커널 부트 매개 변수를 사용합니다 add_efi_memmap
. 의도 된 하드웨어는 8GB RAM을 가진 Intel x64입니다. 현재 설정에서 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-e820 라인57
EFI 메모리 라인- DMA 영역 :
22
예약 된 페이지 - 메모리 : 7885076K / 8283384K 사용 가능
- 398308K 예약
EFI 스텁 부팅 없이 add_efi_memmap
:
22
BIOS-e820 라인60
EFI 메모리 라인- DMA 영역 :
21
예약 된 페이지 - 메모리 : 7885012K / 8283384K 사용 가능
EFI 스텁 부팅 과 add_efi_memmap
:
22
BIOS-e820 라인66
EFI 메모리 라인- DMA 영역 :
21
예약 된 페이지 - 메모리 : 7882124K / 8283384K 사용 가능
추가 정보를 읽은 후-아래에 인라인으로-추가 여부를 알 수 add_efi_memmap
없습니다. 부팅하는 데 꼭 필요한 것 같지 않은 추가 작업을 수행합니다. 반면에 사용 가능한 메모리에 대한 더 나은 (더 완전한) 견해를 줄 수 있습니다.
어떤 경우에이 add_efi_memmap 부팅 인수를 EFI 스텁 부팅에 사용해야합니까? 그러면 EFI 스터브 부팅 속도가 증가 / 감소하고 사용 가능한 메모리가 증가 또는 감소합니까? 내 EFI 메모리 맵에 내 E820 맵보다 많은 항목이 포함되어 있는지 확인하는 방법은 무엇입니까?
일부 add_efi_memmep 설명서는 이미 참조되었습니다 :
add_efi_memmap : 사용 가능한 물리적 RAM의 EFI 메모리 맵을 포함합니다.
EFI 메모리 맵에 E820 맵에없는 추가 항목이있는 경우 다음 커널 명령 줄 매개 변수를 사용하여 사용 가능한 물리적 RAM의 커널 메모리 맵에 해당 항목을 포함시킬 수 있습니다. -https : //www.kernel.org/doc/Documentation/x86/x86_64/uefi.txt
E820 BIOS 메모리 맵 항목 및 / 또는 커널 명령 줄 memmap 항목을 처음 찾은 후 항상 EFI 메모리 맵 항목 (있는 경우)을 메모리 맵에 추가하는 대신 커널 부팅 옵션 인 경우 이러한 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
이 패치는
add_efi_memmap
옵션이 현재 실행중인 커널의 명령 행에 있을 때 대신 kexec 로더의 동작을 변경하여/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
많은 잘못된 시작 후 2009 년에 Linux 커널 개발자가 도달 한 솔루션 (해킹)은 커널 명령 줄 옵션을 추가하는 것이 었습니다
add_efi_memmap
. 커널에 EFI 메모리 맵을보고이를 사용하여 다양한 항목을 수정하도록 지시했습니다. E820 메모리 맵에서. -http : //blog.fpmurphy.com/2012/08/uefi-memory-v-e820-memory.html