Настройка PXE-сервера на dnsmasq + UEFI

Доброго времени суток. Есть такой вопрос по настройке PXE-сервера на dnsmasq.

Есть сервер(на archlinux, но это не суть важно)

На нем 2 сетевых интерфейса: enp3s0(на нем должен работать DHCP-сервер) и enp4s0(смотрит в Internet)

pacman -S syslinux

cp /usr/lib/syslinux/bios/{lpxelinux.0,menu.c32,memdisk,chain.c32,libutil.c32,ldlinux.c32} /hdd/pxe/

nano /hdd/pxe/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
TIMEOUT 600

MENU TITLE PXE BOOT MENU
#MENU INCLUDE pxelinux.cfg/graphics.conf

LABEL Boot Local HDD
kernel chain.c32
append hd0 0

LABEL TestTools - >
KERNEL menu.c32
APPEND pxelinux.cfg/testtools

LABEL Utils - >
KERNEL menu.c32
APPEND pxelinux.cfg/utils

LABEL OS - >
KERNEL menu.c32
APPEND pxelinux.cfg/os

/hdd/pxe/pxelinux.cfg/{TestTools,Utils,OS} // отдельные файлы настроек, вида /hdd/pxe/pxelinux.cfg/TestTools

PROMPT 0
MENU TITLE test

LABEL < - Main Menu
KERNEL menu.c32
APPEND pxelinux.cfg/default

LABEL Memtest
MENU LABEL RAM test Memtest 5.01
KERNEL memdisk
APPEND iso initrd=images/memtest86+-5.01.iso
pacman -S dnsmasq

nano /etc/dnsmasq.conf
interface=enp3s0
dhcp-range=192.168.1.2,192.168.1.10,12h
enable-tftp
tftp-root=/hdd/pxe

dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-match=set:efi-x86_64,option:client-arch,9
dhcp-match=set:efi-x86,option:client-arch,6
dhcp-match=set:bios,option:client-arch,0

dhcp-boot=tag:efi-x86_64,"syslinux.efi"
#dhcp-boot=tag:efi-x86_64,"ipxe.1e77e6bfd61e.efi" // Загрузка клиента по PXE в UEFI режиме, тут конкретно Arch Linux Netboot, этот пункт работает
#dhcp-boot=tag:efi-x86_64,"Shell.efi" // Тут EFI-Shell, работает

dhcp-boot=tag:bios,"lpxelinux.0" // Загрузка клиента по PXE в Legacy(BIOS) режиме

systemctl start/enable dnsnasq

В Legacy(BIOS) режиме клиенты грузятся по PXE, меню работают - вопросов нет.
Собственно вопрос: Как я должен загрузить то же меню в UEFI-режиме? Клиент переключен в UEFI-only, по PXE IP-адрес получает.
Меню не грузятся.
Насколько я понимаю нужно подсунуть клиенту efi-файл?
Скопировав из /usr/lib/syslinux/efi64/syslinux.efi в /hdd/pxe результата не добился
После любых манипуляций с dnsmasq.conf делаю systemctl restart dnsmasq.
из вашей писанины ничего непонятно.
минимально необходимо:
запуск syslinux:
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,syslinux.efi
dhcp-option-force=209,syslinux.cfg
запуск ipxe:
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,ipxe.1e77e6bfd61e.efi
если вам не нужен доступ к uefi vars нечего с ним заморачиваться:
dhcp-boot=tag:bios,lpxelinux.0
dhcp-option-force=209,syslinux.cfg
а если
irzhyk
Меню не грузятся.
посмотреть ошибки можно так:
# journalctl -u dnsmasq -f
Ошибки в тексте-неповторимый стиль автора©
Спасибо за ответ, поясню для чего заморочился с UEFI - современные ноуты идут с отключенным CSM по умолчанию, я хочу не переключаться в Legacy-режим. Но иногда попадаются с BIOS. За путаницу в посте - извиняюсь, пытался дать всю информацию, закоментированные строчки оставил чтобы показать ход моих действий. Из ответа я понял что не хватает /hdd/pxe/syslinux.cfg и "dhcp-option-force=209,syslinux.cfg" строчки в dnsmasq.conf ? Само меню(без пунктов, они в /hdd/pxe/pxelinux.cfg) это файл /hdd/pxe/menu.c32 ? И оно будет грузиться и с файла lpxelinux.0(для BIOS) и с файла syslinux.efi(для UEFI)?
Наверно косяк у вас в этом:
$ ls -la /usr/lib/syslinux/bios/menu.c32
$ ls -la /usr/lib/syslinux/efi64/menu.c32
$ ls -la /usr/lib/syslinux/efi32/menu.c32

irzhyk
dhcp-option-force=209,syslinux.cfg
syslinux.cfg и pxelinux.cfg одно и тоже, по идеи pxelinux.cfg даже правильнее если он будет лежать в корне с *.efi то эта строчка и не надо.
Ошибки в тексте-неповторимый стиль автора©
Настроил так, что сервер понимает какая(BIOS или UEFI) система подключена. При загрузке UEFI-системы:

>>Start PXE over IPv4.
Station IP address is 192.168.1.10
Server IP address is 192.168.1.1
NBP filename is syslinux.efi
NBP filesize is 176176 Bytes
Downloading NBP file ...

Success to download NBP file.
Getting cashed packet
My IP is 192.168.1.10

На этом все, через время система ребутится.
Вот лог(гугление не помогло):

[user@irzhyk pxe]$ journalctl -u dnsmasq -f
-- Logs begin at Mon 2017-10-02 18:06:47 EEST. --
ноя 24 14:18:56 irzhyk systemd[1]: Stopped A lightweight DHCP and caching DNS server.
ноя 24 14:18:56 irzhyk systemd[1]: Starting A lightweight DHCP and caching DNS server...
ноя 24 14:18:56 irzhyk dnsmasq[18821]: dnsmasq: syntax check OK.
ноя 24 14:18:56 irzhyk systemd[1]: Started A lightweight DHCP and caching DNS server.
ноя 24 14:18:56 irzhyk dnsmasq[18822]: started, version 2.78 DNS disabled
ноя 24 14:18:56 irzhyk dnsmasq[18822]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify
ноя 24 14:18:56 irzhyk dnsmasq[18822]: DBus support enabled: connected to system bus
ноя 24 14:18:56 irzhyk dnsmasq-dhcp[18822]: DHCP, IP range 192.168.1.2 -- 192.168.1.10, lease time 12h
ноя 24 14:18:56 irzhyk dnsmasq-dhcp[18822]: DHCP, sockets bound exclusively to interface enp3s0
ноя 24 14:18:56 irzhyk dnsmasq-tftp[18822]: TFTP root is /hdd/pxe
ноя 24 14:19:11 irzhyk dnsmasq-dhcp[18822]: DHCPDISCOVER(enp3s0) 3c:97:0e:98:ba:b9
ноя 24 14:19:11 irzhyk dnsmasq-dhcp[18822]: DHCPOFFER(enp3s0) 192.168.1.10 3c:97:0e:98:ba:b9
ноя 24 14:19:15 irzhyk dnsmasq-dhcp[18822]: DHCPREQUEST(enp3s0) 192.168.1.10 3c:97:0e:98:ba:b9
ноя 24 14:19:15 irzhyk dnsmasq-dhcp[18822]: DHCPACK(enp3s0) 192.168.1.10 3c:97:0e:98:ba:b9

ноя 24 14:19:15 irzhyk dnsmasq-tftp[18822]: error 8 User aborted the transfer received from 192.168.1.10
ноя 24 14:19:15 irzhyk dnsmasq-tftp[18822]: failed sending /hdd/pxe/syslinux.efi to 192.168.1.10

ноя 24 14:19:15 irzhyk dnsmasq-tftp[18822]: sent /hdd/pxe/syslinux.efi to 192.168.1.10
ноя 24 14:19:15 irzhyk dnsmasq-tftp[18822]: sent /hdd/pxe/ldlinux.e64 to 192.168.1.10
ноя 24 14:19:15 irzhyk dnsmasq-tftp[18822]: sent /hdd/pxe/pxelinux.cfg/default to 192.168.1.10
ноя 24 14:19:15 irzhyk dnsmasq-tftp[18822]: sent /hdd/pxe/menu.c32 to 192.168.1.10

Еще раз, syslinux.efi - требует свой menu.c32? Из /usr/lib/syslinux/efi64 ? Или вопрос в правах на файл?
irzhyk
syslinux.efi - требует свой menu.c32? Из /usr/lib/syslinux/efi64 ?
Конечно, и всё остальное тоже.

p.s. покажите
$ cat /hdd/pxe/pxelinux.cfg/default
Ошибки в тексте-неповторимый стиль автора©
Странно, я всю директорию /usr/lib/syslynux/efi64 копировал в /hdd/pxe/ - и ничего не получилось..

[user@irzhyk ~]$ cat /hdd/pxe/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
TIMEOUT 600

MENU TITLE PXE BOOT MENU

LABEL Boot LocalHDD
localboot 0x80
append SLX=0x80

LABEL TestTools - >
KERNEL menu.c32
APPEND pxelinux.cfg/testtools

LABEL Utils - >
KERNEL menu.c32
APPEND pxelinux.cfg/utils

LABEL OS - >
KERNEL menu.c32
APPEND pxelinux.cfg/os

LABEL Windows - >
KERNEL menu.c32
APPEND pxelinux.cfg/windows
Как то так попробуйте:
ui menu.c32
timeout 3000
default select

LABEL existing
MENU LABEL Boot existing OS
COM32 chain.c32
APPEND hd0 0
ну и
# journalctl -u dnsmasq -f 
Ошибки в тексте-неповторимый стиль автора©
Получилось!!! Еще толком не разобрался, но по вашему совету кажется получается!! Правда лог пишет какие-то ошибки:

ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: error 8 User aborted the transfer received from 192.168.1.10
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: failed sending /hdd/pxe/syslinux.efi to 192.168.1.10
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: sent /hdd/pxe/syslinux.efi to 192.168.1.10
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: sent /hdd/pxe/ldlinux.e64 to 192.168.1.10
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/01-3c-97-0e-98-ba-b9 not found
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/C0A8010A not found
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/C0A8010 not found
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/C0A801 not found
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/C0A80 not found
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/C0A8 not found
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/C0A not found
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/C0 not found
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/C not found

Сейчас немного разберусь, и еще задам пару вопросов. Огромное спасибо за помощь - уже реально год бьюсь
Насколько я понимаю, в строчке лога
ноя 24 16:49:38 irzhyk dnsmasq-tftp[19248]: file /hdd/pxe/pxelinux.cfg/01-3c-97-0e-98-ba-b9 not found
01-3c-97-0e-98-ba-b9 - это MAC-адрес клиента, но мне это ни о чем не говорит..
 
Зарегистрироваться или войдите чтобы оставить сообщение.