UEFI PXE를 사용하여 일부 ESXi 호스트를 부팅하고 싶지만 다음 메시지가 계속 나타납니다.
테스트를 위해 가상 머신을 사용하고 있으며 패킷 캡처에서 DHCP/TFTP 서버(CentOS 7)에 도달하는 것을 볼 수 있습니다(아래 표시된 것처럼 3번의 재부팅이 캡처되었습니다).
09:18:04.995404 IP 192.168.0.136.rsc-robot > stager.test.lab.tftp: 50 RRQ "efi.x64/syslinux.efi" octet tsize 0 blksize 1468
09:18:04.997399 IP 192.168.0.136.cera-bcm > stager.test.lab.tftp: 42 RRQ "efi.x64/syslinux.efi" octet blksize 1468
...
09:18:40.700760 IP 192.168.0.136.itm-mcell-u > stager.test.lab.tftp: 50 RRQ "efi.x64/syslinux.efi" octet tsize 0 blksize 1468
09:18:40.704583 IP 192.168.0.136.optika-emedia > stager.test.lab.tftp: 42 RRQ "efi.x64/syslinux.efi" octet blksize 1468
...
09:18:57.525302 IP 192.168.0.136.altalink > stager.test.lab.tftp: 50 RRQ "efi.x64/syslinux.efi" octet tsize 0 blksize 1468
09:18:57.528201 IP 192.168.0.136.tunstall-pnc > stager.test.lab.tftp: 42 RRQ "efi.x64/syslinux.efi" octet blksize 1468
나예전에는"mboot.efi"(syslinux 6.03에서 가져온)의 이미지 파일을 직접 가리키는 한 UEFI를 통해 ESXi 설치 프로그램을 실행할 수 있지만 syslinux를 사용하여 PXE 구성 프로필을 전달하고 싶습니다. 기본. 다음과 같이 DHCP를 통해 그곳으로 이동됩니다.
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;
log-facility local7;
allow booting;
allow bootp;
option client-system-arch code 93 = unsigned integer 16;
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
#TFTP Server
option tftp-server-name "192.168.0.250";
next-server 192.168.0.250;
if option client-system-arch = 00:00 {
filename = "bios/pxelinux.0";
} elsif option client-system-arch = 00:07 {
filename = "efi.x64/syslinux.efi";
}
}
subnet 192.168.0.0 netmask 255.255.255.0 {
option domain-name-servers 192.168.0.250;
range 192.168.0.100 192.168.0.145;
}
내 tftpboot/pxelinux.cfg/default 파일:
UI vesamenu.c32
PROMPT 0
menu title UEFI Deployment
MENU INCLUDE graphics.conf
LABEL -
MENU label Standard Builds
MENU DISABLE
LABEL ESXi 6.7
MENU LABEL ^esxi 6.7
MENU INDENT 3
MENU DEFAULT
KERNEL images/ESXiv6.7/mboot.efi
APPEND initrd=/images/ESXiv6.7/boot.cfg ks=nfs://192.168.0.250/nfsshare/ks-prime.cfg
기본 파일을 완전히 이동해도 동일한 결과를 얻을 수 있습니다. 나는 그것을 사용하기 위해 부츠를 밀어 넣을 것이라고 믿지 않습니다.
편집: TFTP 로그를 추가하고 있습니다. syslinux.efi를 로드하지 않는 것 같습니다. 내 BIOS 구현이 해당 pxelinux.0 파일을 로드한 후 이미지에서 boot.cfg 파일을 올바르게 추출한다는 점은 주목할 가치가 있습니다. 이 인스턴스에서는 EFI 기본 파일이 아니라 기본 파일이 실제로 작동한다고 가정합니다.
TFTP UEFI 로그:
Jul 24 08:28:49 stager in.tftpd[49849]: Client ::ffff:192.168.0.136 finished efi.x64/syslinux.efi
Jul 24 08:35:58 stager in.tftpd[50227]: connect: Invalid argument
Jul 24 08:36:05 stager in.tftpd[50233]: connect: Invalid argument
답변1
분명히 UEFI PXE 표준의 일부 버전에서는 DHCP 옵션을 사용하여 부팅 파일 크기를 지정해야 합니다 option boot-size <value>
. 이는 기존 BIOS 기반 PXE 부팅에는 필요하지 않습니다.
다음을 수행하여 올바른 크기 값을 얻을 수 있습니다 du -B 512 syslinux.efi
.
따라서 du
명령이 400개의 블록 크기를 보고 한 경우 syslinux.efi
DHCP 구성은 다음과 같이 읽을 것으로 예상됩니다.
...
} elsif option client-system-arch = 00:07 {
filename = "efi.x64/syslinux.efi";
option boot-size 400;
}
...
이 옵션이 없으면 테스트한 일부 시스템이 UEFI PXE를 사용하여 부팅하지 못했습니다.
UEFI 펌웨어는 VESA VBIOS 확장과 관계없이 고유한 유형의 디스플레이 API를 제공하므로 이 vesamenu.c32
모듈은 UEFI에 문제가 될 수도 있습니다. 나는 약간의 성공을 거두었습니다 menu.c32
.
syslinux.efi
나는 둘 다 테스트했다ipxe.efi
ipxe.org. 내 환경에서 두 가지 모두 작동하도록 할 수 있지만 iPXE가 나에게는 더 강력해 보입니다.
답변2
해결책을 찾으러 이곳에 오시는 모든 분들을 위해. 이러한 이유로 현재 이 설정을 사용할 수 없습니다.허점Syslinux/GRUB EFI 부트 로더에서. DHCP에서 직접 mboot.efi를 전달해야 합니다. 불행하게도 이는 UEFI 모드에서는 메뉴 기반 선택이 불가능하다는 것을 의미합니다.