Определение нового местоположения для файлов конфигурации syslinux при настройке PXELinux

Я работаю над макетом PXE-сервера для того места, где я работаю. Я пытаюсь разместить файлы изображений и файл конфигурации в местах, где все будет немного организовано. Несмотря на то, что мой dhcpd.conf указывает параметры конфигурации, необходимые для указания PXELinux, где искать файлы конфигурации, он по-прежнему не находит указанные файлы.

Вот что выглядит мой /etc/dhcp/dhcpd.conf вроде, вот где, я полагаю, проблема.

option space PXE;
option PXE.mtftp-ip             code 1 = ip-address;
option PXE.mtftp-cport          code 2 = unsigned integer 16;
option PXE.mtftp-sport          code 3 = unsigned integer 16;
option PXE.mtftp-tmout          code 4 = unsigned integer 8;
option PXE.mtftp-delay          code 5 = unsigned integer 8;
option arch                     code 93 = unsigned integer 16;

option space pxelinux;
option pxelinux.magic                   code 208 = string;
option pxelinux.configfile              code 209 = text;
option pxelinux.pathprefix              code 210 = text;
option pxelinux.reboottime              code 211 = unsigned integer 32;

ddns-update-style none;

option domain-name "lab.solignis.com";
option domain-name-servers ns01.lab.solignis.com;

default-lease-time 600;
max-lease-time 7200;

authoritative;
log-facility local7;

subnet 192.168.147.0 netmask 255.255.255.0 {
        range 192.168.147.100 192.168.147.254;
        option subnet-mask 255.255.255.0;
        option routers 192.168.147.2;
        option broadcast-address 192.168.147.255;
        default-lease-time 600;
        max-lease-time 7200;

        class "pxeclients" {

                match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
                next-server 192.168.147.10;

                if option arch = 00:00 {
                        option pxelinux.configfile "common.cfg";
                        option pxelinux.pathprefix "/configs/";
                        filename "/pxelinux/images/BIOS/pxelinux.0";
                } elsif option arch = 00:06 {
                        #option pathprefix "/configs/";
                        #option configfile "/EFIx64/default";
                        filename "/images/EFIx64/syslinux.efi";
                } elsif option arch = 00:07 {
                        #option pathprefix "/configs/";
                        #option configfile "/EFIx64/default";
                        filename "/images/EFIx64/syslinux.efi";
                } elsif option arch = 00:09 {
                        #option pathprefix "/configs/";
                        #option configfile "/EFIx64/default";
                        filename "/images/EFIia32/syslinux.efi";
                }
        }

}

Части конфигурации были скомпилированы из различных частей документации, закомментированные части - старые части, которые я еще не исправил, не обращаю на них внимания. На данный момент я просто хочу, чтобы стандартный BIOS работал ( arch = 00:00 ).

Вот как выглядит моя файловая структура для моего каталога tftpboot.

server01@server01:/var/lib/tftpboot$ tree
.
└── pxelinux
    ├── configs
    │   └── common.cfg
    └── images
        ├── BIOS
        │   ├── ldlinux.c32
        │   └── pxelinux.0
        ├── EFIia32
        │   └── syslinux.efi
        └── EFIx64
            └── syslinux.efi

6 directories, 5 files

Я был почти уверен, что он у меня есть правильно настроить pxelinux, но он не видит файл конфигурации, поэтому что-то настроено неправильно. Может ли кто-нибудь дать представление о том, что я неправильно сконфигурировал? Я весь день бился головой об этом.

1
задан 19 October 2016 в 22:46
2 ответа

Обратите внимание, что configfile относится к pathprefix:

            if option arch = 00:00 {
                    option pxelinux.configfile "common.cfg";
                    option pxelinux.pathprefix "/pxelinux/configs/";
                    filename "/pxelinux/images/BIOS/pxelinux.0";

это будет выглядеть для конфигурационного файла под названием /pxelinux/configs/common.cfg на TFTP сервере.

если это не удастся, просто получите перехват трафика Wireshark и посмотрите запросы на файл TFTP и куда они указывают.

.
1
ответ дан 3 December 2019 в 23:39

Сегодня я боролся с этим и, наконец, заставил его работать. Ключом был этот небольшой раздел в вики PXELINUX (у меня был ISC dhcp-4.2.5-79.el7.centos.x86_64 на CentOS 7.8):

В версиях ISC dhcp выше 3.0 сайт -local пробелы параметров начинаются с 224, а не 128 (чтобы соответствовать RFC 3942), поэтому вы должны определить параметры PXELINUX 208-211 как обычные параметры DHCP, а не локальные параметры сайта. Например:

 option magic      code 208 = string;
 option configfile code 209 = text;
 option pathprefix code 210 = text;
 option reboottime code 211 = unsigned integer 32;

В группе или классе загрузки PXELINUX (где бы у вас ни были параметры, связанные с PXELINUX, такие как параметр «имя файла»), вы должны добавить, например:

 # Always include the following lines for all PXELINUX clients
 option magic f1:00:74:7e;
 if exists dhcp-parameter-request-list {
  # Always send the PXELINUX options (specified in hexadecimal, ie: 208 = 0xd0, 209 = 0xd1, etc.)
  option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
 }
 # These lines should be customized to your setup
 option configfile "configs/common";
 option pathprefix "/tftpboot/pxelinux/files/";
 option reboottime 30;
 filename "/tftpboot/pxelinux/pxelinux.bin";
0
ответ дан 16 June 2020 в 16:07

Теги

Похожие вопросы