Определение нового расположения файлов конфигурации 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 ответ
Обратите внимание, что 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 и куда они указывают.
Я боролся с этим сегодня и наконец заставил это работать. Ключевым моментом был этот небольшой раздел в вики PXELINUX (у меня был ISC dhcp-4.2.5-79.el7.centos.x86_64 на CentOS 7.8):
В версиях ISC dhcp выше 3.0 пробелы локальных параметров сайта начинаются с 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";