Назад | Перейти на главную страницу

pxelinux.0 не пытается загрузить ldlinux.c32

Я настраивал PXE-сервер для автоматизации развертывания Linux. Все работало весело, пока что-то волшебным образом не сломалось (то есть я, должно быть, что-то изменил, но не могу понять, что это было).

фрагмент dhcpd.conf (некоторая информация удалена в целях конфиденциальности)

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

Сервер pxe (который отличается от сервера DHCP) работает под управлением RedHat 7. Я включил подробное ведение журнала для демона xinetd tftp. Он показывает, что клиент запрашивает pxelinux.0 (а затем клиент показывает информацию о версии PXELINUX), но не показывает, что клиент запрашивает ldlinux.c32, а затем время ожидания клиента истекает.

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

Я попытался жестко закодировать некоторые параметры файла pxelinux.0, используя параметры pxelinux из пакета syslinux, и мне не повезло. Я пробовал много версий pxelinux.0 (в настоящее время использую 6.03, скомпилированный из исходников на машине RedHat 7).

Текущие жестко закодированные параметры:

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'

Я подошел к концу своей метафорической веревки. Любая помощь приветствуется.

это не правильно

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

пожалуйста примите к сведению

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

В вашем случае клиент UEFI 64, использующий параметр DHCP 93 = 9, получит pxelinux.0 как NBP, и это никогда не сработает.

Это был бы лучший подход

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