pxelinux.0 não tenta carregar o ldlinux.c32

1

Estou configurando um servidor PXE para automatizar as implantações do Linux. Tudo estava dando certo até que algo se quebrou magicamente (ou seja, eu devo ter mudado alguma coisa, mas não posso, para a vida de mim, descobrir o que era).

snippet do dhcpd.conf (algumas informações foram removidas para privacidade)

subnet 10.0.65.0 netmask 255.255.255.0 {
  option routers ///;
  option broadcast-address ///;
  option subnet-mask 255.255.255.0;
  range ///;
  class "pxeclients" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    next-server 10.160.65.5;

    if option architecture-type = 00:07 {
      filename "pxe/shim.efi";
    } else {
      filename "pxe/pxelinux.0";
    }
  }
}

O servidor pxe (que é um servidor diferente do servidor DHCP) está executando o RedHat 7. Eu ativei o registro detalhado para o daemon xinetd tftp. Ele mostra que o cliente solicita pxelinux.0 (e, em seguida, o cliente mostra as informações da versão do PXELINUX), mas não mostra que o cliente solicita o ldlinux.c32 e, em seguida, o cliente expira.

Oct 26 13:49:47 tinkerbell in.tftpd[599]: tftp: client does not accept options
Oct 26 13:49:47 tinkerbell in.tftpd[600]: RRQ from 141.212.104.234 filename pxe/pxelinux.0

Tentei codificar em algumas opções para o arquivo pxelinux.0 usando pxelinux-options do pacote syslinux e não tive sorte. Eu tentei muitas versões do pxelinux.0 (atualmente usando 6.03, compilado a partir da fonte na máquina RedHat 7).

Opções atuais de codificação rígida:

utils/pxelinux-options --list /y/pxe/pxelinux.0
-b domain-name          'foo.bar'
-b domain-name-servers  10.0.65.4
-a next-server          10.0.65.5
-a path-prefix          '/pxe/'
-a config-file          'pxelinux.cfg/default'

Estou no final da minha corda metafórica. Qualquer ajuda é apreciada.

    
por Travis DePrato 26.10.2016 / 20:06

1 resposta

1

isso não está correto

if option architecture-type = 00:07 {
  filename "pxe/shim.efi";
} else {
  filename "pxe/pxelinux.0";

considere

DHCP Option 93  Client's pre-OS runtime
      0              BIOS
      6              EFI32
      7              EFI64
      9              EFI64

No seu caso, um cliente UEFI 64 usando a opção DHCP 93 = 9 receberia pxelinux.0 como NBP e isso nunca funcionará.

Esta seria uma abordagem melhor

           if option arch = 00:00 {
                    filename "/pxe/pxelinux.0";
            } elsif option arch = 00:06 {
                    filename "pxe/shim32.efi";
            } elsif option arch = 00:07 {
                    filename "pxe/shim64.efi";
            } elsif option arch = 00:09 {
                    filename "pxe/shim64.efi";
            }
    
por 26.10.2016 / 20:20