UEFI를 사용하여 PXE 부팅에 ESXi 설치를 어떻게 설치합니까?

UEFI를 사용하여 PXE 부팅에 ESXi 설치를 어떻게 설치합니까?

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.efiDHCP 구성은 다음과 같이 읽을 것으로 예상됩니다.

...
    } 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.efiipxe.org. 내 환경에서 두 가지 모두 작동하도록 할 수 있지만 iPXE가 나에게는 더 강력해 보입니다.

답변2

해결책을 찾으러 이곳에 오시는 모든 분들을 위해. 이러한 이유로 현재 이 설정을 사용할 수 없습니다.허점Syslinux/GRUB EFI 부트 로더에서. DHCP에서 직접 mboot.efi를 전달해야 합니다. 불행하게도 이는 UEFI 모드에서는 메뉴 기반 선택이 불가능하다는 것을 의미합니다.

관련 정보