UEFI에서 사용자 정의 커널 및 initrd를 실행하는 방법은 무엇입니까?

UEFI에서 사용자 정의 커널 및 initrd를 실행하는 방법은 무엇입니까?

저는 BIOS가 포함된 개발 머신을 가지고 있으며 커널과 initrd를 컴파일한 후 간단한 작업으로 이를 사용할 수 있습니다 menuentry.

menuentry "mlinux" {
       linux /boot/mlinuz quiet
       initrd /boot/minitramfs
}

그러나 UEFI가 있는 다른 컴퓨터에서 이를 실행하면 실패하고 다음과 같은 결과가 나타납니다.

error: kernel doesn't support EFI handover.
error: you need to load the kernel first.

나는 이것이 내 커널의 UEFI 지원 부족과 관련이 있을 수 있다고 생각하여 EFI_STUB지원(또한 활성화해야 함 ACPI)으로 다시 빌드했습니다. 이제 검은 화면이 나타납니다. echo각 단계 전에 추가하고 제거 하면 메시지가 quiet표시되지만 echo그게 전부입니다. 커널 메시지도 없고 아무것도 없습니다.

이것을 본 후질문우편 엽서, 커널을 다음 위치에 복사했습니다.

  • /boot/efi/mlinuz.efi
  • /boot/efi/EFI/mlinuz.efi
  • /boot/efi/EFI/BOOT/mlinuz.efi

해당 주소를 내 경로로 사용했지만 menuentry파일을 찾을 수 없다는 메시지는 여전히 작동하지 않습니다. 이 파일을 어디에 복사해야 하며 내 파일에는 무엇이 포함되어야 합니까 menuentry?

부가 질문:자체 Linux 커널로 부팅했지만 사용자 정의 커널을 사용하는 경우 initrd프로그램을 시작할 수는 있지만 키보드를 사용하여 상호 작용할 수는 없습니다. 이유를 아시나요? ?

편집하다:linuxefiand를 찾았 initrdefi지만 파일을 찾을 수 없었기 때문에 명령줄에 가서 ls를 사용하여 하드 드라이브를 찾은 다음 ls를 사용했지만 linuxefi (hd0,pt2)/mlinuz64.efi아무 작업도 수행하지 않았습니다.

답변1

빈 화면이 나타나는 경우 문제는 FRAMEBUFFER를 활성화해야 한다는 것입니다.

CONFIG_FB_EFI=y
CONFIG_FRAMEBUFFER_CONSOLE=y

CONFIG_EFI_STUB직접 부팅하는 대신 grub을 사용하면 비활성화할 수도 있습니다 .

관련 정보