grub-mkimage - `/srv/tftp/boot/grub/x86_64-efi/core.efi.mod를 열 수 없습니다. 해결 방법은 무엇입니까?

grub-mkimage - `/srv/tftp/boot/grub/x86_64-efi/core.efi.mod를 열 수 없습니다. 해결 방법은 무엇입니까?

새로운 부트로더를 구축하려고 하는데 안타깝게도 해당 주제에 대해 아는 바가 많지 않습니다. 나는 다음의 지침을 따르고 있습니다.PXE를 통해 UEFI 시스템으로 설치 프로그램을 부팅하는 중 문제 발생.

나는 먼저 다음을 실행합니다.

grub-mknetdir --net-directory=/srv/tftp/ --subdir=/boot/grub
Netboot directory for x86_64-efi created. Configure your DHCP server to point to /srv/tftp/boot/grub/x86_64-efi/core.efi

이것이 작동하는 것 같아서 다음 명령으로 넘어갔습니다.

root@vogon:~# grub-mkimage -O x86_64-efi /srv/tftp/boot/grub/x86_64-efi/core.efi --prefix='tftp,192.168.50.9)/boot/grub' efinet tftp
grub-mkimage: error: cannot open `/srv/tftp/boot/grub/x86_64-efi/core.efi.mod': No such file or directory.

다음 .mod파일을 볼 수 있습니다 /srv/tftp/boot/grub/x86_64-efi/.

root@vogon:~# file /srv/tftp/boot/grub/x86_64-efi/*
/srv/tftp/boot/grub/x86_64-efi/acpi.mod:                 ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
/srv/tftp/boot/grub/x86_64-efi/adler32.mod:              ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
/srv/tftp/boot/grub/x86_64-efi/affs.mod:                 ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
/srv/tftp/boot/grub/x86_64-efi/afs.mod:                  ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
...

efinet.modtftp.mod존재하지만 core.efi.mod물론 존재하지 않습니다. 이 core.efi파일은 다음과 다릅니다 .mod.

root@vogon:~# file /srv/tftp/boot/grub/x86_64-efi/core.efi
/srv/tftp/boot/grub/x86_64-efi/core.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows

이 문제를 어떻게 해결할 수 있나요?

답변1

일반적으로 이러한 명령은 표준 tftp 디렉터리에 호스팅되는 BIOS 및 uefi에 대한 부팅 이미지를 생성해야 합니다.

apt-get install grub-pc-bin grub-efi-amd64-bin
mkdir -p /srv/tftp
grub-mknetdir --net-directory /srv/tftp/

verbose 플래그를 사용하면 grub-mkimage사용 중인 명령을 볼 수 있습니다 grub-mknetdir.

# grub-mknetdir --net-directory /srv/tftp/ -v
...
grub-mknetdir: info: grub-mkimage --directory '/usr/lib/grub/i386-pc' --prefix '/boot/grub' --output '/srv/tftp/boot/grub/i386-pc/core.0'  --dtb '' --format 'i386-pc-pxe' --compression 'auto'  'tftp' 'pxe'
...
grub-mknetdir: info: grub-mkimage --directory '/usr/lib/grub/x86_64-efi' --prefix '/boot/grub' --output '/srv/tftp/boot/grub/x86_64-efi/core.efi'  --dtb '' --format 'x86_64-efi' --compression 'auto'  'tftp' 'efinet'

이러한 명령을 사용자 정의에 간단히 적용할 수 있습니다.

grub-mkimage --directory '/usr/lib/grub/x86_64-efi' --prefix '(tftp,192.168.50.9)/boot/grub' --output './core.efi' --format 'x86_64-efi' --compression 'auto'  'tftp' 'efinet'

답변2

root@vogon:~# grub-mkimage -O x86_64-efi /srv/tftp/boot/grub/x86_64-efi/core.efi --prefix='tftp,192.168.50.9)/boot/grub' efinet tftp

이 옵션을 놓쳤습니다 -o.

노력하는 대신세워핵심 이미지 /srv/tftp/boot/grub/x86_64-efi/core.efi분명히 원하는 대로 이 명령은 옵션이 아닌 모든 인수가 GRUB 모듈 이름이라고 가정하므로 접미사를 추가 .mod하고 .../core.efi.mod이를 GRUB 이미지에 병합하여 기본적으로 표준 출력으로 출력합니다.

다음으로 변경해 보세요.

grub-mkimage -O x86_64-efi -o /srv/tftp/boot/grub/x86_64-efi/core.efi --prefix='tftp,192.168.50.9)/boot/grub' efinet tftp

문제가 발생하는 경우 적어도 GRUB의 오류 메시지가 표시되도록 UEFI 디스플레이 드라이버 모듈을 포함할 efi_gop수도 있습니다.efi_uga

관련 정보