efi 쉘에서 vmlinuz-linux를 시작하는 방법은 무엇입니까?

efi 쉘에서 vmlinuz-linux를 시작하는 방법은 무엇입니까?

efi 쉘에서 vmlinuz-linux를 시작하는 방법은 무엇입니까? ESP에 들어가서 vmlinuz-linux(vmlinuz-linux는 ESP에 있습니다) 라고 입력했는데 vmlinuz-linux isn't recognized as an internal or external command, operable program, or batch file, 왜 먼저 부트로더를 시작해야 하는지 모르겠습니다.

답변1

/vmlinuz-linux root=PARTUUID=3518bb68-d01e-45c9-b973-0b5d918aae96 initrd=/initramfs-linux.img이것부터 입력해야 했어요https://wiki.archlinux.org/index.php/EFISTUB#Booting_EFISTUB하지만 작동시키려면 /먼저 슬래시를 제거해야 했습니다 .vmlinuz-linux

답변2

부트 로더가 필요한지 여부는 특정 버전의 Linux 커널이 EFI BOOT STUB를 지원하는지 여부에 따라 다릅니다.

자세한 내용은 다음을 참조하세요.https://www.kernel.org/doc/Documentation/efi-stub.txt

답변3

IIRC, EFI 셸은 이름이 .efi. 따라서 이름이 .efi.

커널 파일 이름을 바꿀 수 없는 경우에도 gummiboot/systemd-boot 또는 rEFInd와 같은 다른 부팅 관리자 프로그램을 통해 EFI 스텁 로더를 사용하여 커널을 시작할 수 있습니다. 이러한 도구는 파일 이름 확장자에 대해 신경 쓰지 않습니다. 적어도 쉘만큼은 아닙니다. (rEFInd의 자동 스캔 기능은 *.efi, vmlinuz*, bzImage*및 와 일치 kernel*하지만 두 프로그램의 수동 부팅 구성은 모든 파일 이름에서 작동합니다.)

또한 fpmurphy1이 말했듯이 커널은 EFI 스텁 지원으로 컴파일되어야 합니다. 대부분의 배포판에는 3.3.0 이상의 커널에 이 지원이 포함되어 있지만, 특히 커널을 직접 컴파일하는 경우에는 100% 보편적이지 않을 수 있습니다. (마지막으로 확인한 결과 EFI 스텁 지원은 kernel.org.

답변4

가장 좋은 설명은 Documentation/efi-stub.txt다음 예에 있습니다.

fs0:> bzImage.efi console=ttyS0 root=/dev/sda4

해당 프롬프트에 대해 자세히 설명하지 않으며 fs0:>"기존" 부트 로더를 교체하기 위한 (U)EFI 셸도 언급하지 않습니다. 제 경우에는 Uefi Shell로 부팅한 후 Shell>프롬프트가 표시되고 먼저 ESP/FAT 파일 시스템을 선택해야 합니다. (드라이브 당 하나 이상의 ESP를 가질 수 있습니다)

두 번째 요점은 bzImage에 ".efi" 확장자를 추가하는 것입니다. 그렇게 할 필요는 없습니다(AMI 2.7). 따라서 다음과 같이 줄일 수 있습니다.

fsX:> bzImage root=/dev/sda4 [initrd=...] [...]

.nsh또 다른 혼란은 DOS 스타일 슬래시와 스크립트 에 절대 경로가 필요하다는 점입니다 . 자체 폴더 "distro"에 이미지가 있는 경우 줄은 다음과 같습니다.

distro\bzImage initrd=distro\initrd root=/dev/sdaX

루트 매개변수에는 슬래시가 있습니다. Uefi Shell이 ​​아닌 커널에서 사용됩니다.

관련 정보