Como posso obter uma instalação do ESXi para a inicialização do PXE usando o UEFI?

0

Gostaria que o PXE inicializasse alguns hosts ESXi usando o UEFI, mas continue recebendo a seguinte mensagem:

EstoutestandocomumaVMepossovê-laatingindooservidorDHCP/TFTP(CentOS7)emumacapturadepacote(3reinicializaçõesforamcapturadasdaseguinteforma):

09:18:04.995404IP192.168.0.136.rsc-robot>stager.test.lab.tftp:50RRQ"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

Eu era capaz de fazer o instalador do ESXi rodar via UEFI contanto que eu apontasse diretamente para o arquivo de imagem em "mboot.efi", que eu coloquei lá do syslinux 6.03, mas eu deseja usar o syslinux para passar configurações PXE de um arquivo de configuração padrão. Estou direcionando para lá via DHCP, como visto abaixo:

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;
}

Meu arquivo 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

Eu posso mover o arquivo padrão completamente e ter os mesmos resultados. Eu não acredito que a bota esteja sendo empurrada para usá-la.

EDITAR: Eu estou adicionando nos logs do TFTP. Não parece que já passou carregando o syslinux.efi. Vale a pena notar que a minha implementação do BIOS corretamente está puxando o arquivo boot.cfg da imagem depois de carregar seu respectivo arquivo pxelinux.0. Estou assumindo que o arquivo padrão está realmente trabalhando nesta instância e não no arquivo padrão da EFI.

Registros UEFI do TFTP:

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
    
por notsodev 23.07.2018 / 15:51

1 resposta

2

Aparentemente (pelo menos alguma versão do) o padrão UEFI PXE solicita a especificação do tamanho do arquivo de inicialização, usando a opção DHCP option boot-size <value> . Com a inicialização do PXE baseada em BIOS tradicional, isso não era necessário.

Você pode obter o valor de tamanho correto fazendo du -B 512 syslinux.efi .

Portanto, se o comando du informar o tamanho de seu syslinux.efi como 400 blocos, você desejará que sua configuração de DHCP diga algo assim:

...
    } elsif option client-system-arch = 00:07 {
        filename = "efi.x64/syslinux.efi";
        option boot-size 400;
    }
...

Sem essa opção, alguns sistemas que testei não conseguiram inicializar com o UEFI PXE.

O módulo vesamenu.c32 também pode ser problemático com o UEFI, pois o firmware UEFI fornecerá seu próprio tipo de API de exibição que não tem nada a ver com as extensões VESA VBIOS. Eu tive algum sucesso com menu.c32 .

Testei os dois syslinux.efi e ipxe.efi de ipxe.org . Eu poderia fazer os dois funcionarem no meu ambiente, mas o iPXE parecia um pouco mais robusto para mim.

    
por 23.07.2018 / 16:47