Как загрузить ядро ​​Linux поверх PXE с помощью dnsmasq и syslinux?

Являются ли эти параметры dnsmasq.conf точными:

 port=0 interface=enp0s20u2u1 bind-interfaces dhcp-range=192.168.2.50,192.168.2.220,12h dhcp-boot=boot/syslinux/lpxelinux.0 dhcp-option-force=209,boot/syslinux/pxe.cfg dhcp-option-force=210,/ enable-tftp tftp-root=/mnt/pxe/ 

Моя проблема в том, что syslinux (версия 6.03) не загружается в ядро. Я застрял в синем меню загрузки syslinux, после загрузки pxe загрузилась сетевая информация с сервера dhcp и появился загрузчик syslinux.

Это моя файловая система syslinux:

 # Default boot option to use DEFAULT menu.c32 # Prompt user for selection PROMPT 0 # Menu Configuration MENU WIDTH 80 MENU MARGIN 10 MENU PASSWORDMARGIN 3 MENU ROWS 12 MENU TABMSGROW 18 MENU CMDLINEROW 18 MENU ENDROW 24 MENU PASSWORDROW 11 MENU TIMEOUTROW 20 MENU TITLE 64Bit (x64) OS Choice # Return to Main Menu LABEL MainMenu MENU DEFAULT MENU LABEL ^Main Menu KERNEL menu.c32 LABEL rear_nfs TEXT HELP Boot REAR. Allows you to recover bare metal. ENDTEXT MENU LABEL Boot PXE rear KERNEL ../phlaplen.kernel INITRD ../phlaplen.initrd.cgz 

Я предполагаю, что syslinux не находит мое ядро ​​или файл initrd.

В следующем дереве вы видите каталоги и файлы моего TFTP-корня (путь указан в dnsmasq.conf).

 tree . |-- boot | |-- phlaplen.initrd.cgz | |-- phlaplen.kernel | `-- syslinux | |-- altmbr.bin | |-- altmbr_c.bin | |-- altmbr_f.bin | |-- cat.c32 | |-- chain.c32 | |-- cmd.c32 | |-- cmenu.c32 | |-- config.c32 | |-- cptime.c32 | |-- cpu.c32 | |-- cpuid.c32 | |-- cpuidtest.c32 | |-- debug.c32 | |-- dhcp.c32 | |-- disk.c32 | |-- dmi.c32 | |-- dmitest.c32 | |-- elf.c32 | |-- ethersel.c32 | |-- gfxboot.c32 | |-- gptmbr.bin | |-- gptmbr_c.bin | |-- gptmbr_f.bin | |-- gpxecmd.c32 | |-- gpxelinux.0 | |-- gpxelinuxk.0 | |-- hdt.c32 | |-- hexdump.c32 | |-- host.c32 | |-- ifcpu.c32 | |-- ifcpu64.c32 | |-- ifmemdsk.c32 | |-- ifplop.c32 | |-- isohdpfx.bin | |-- isohdpfx_c.bin | |-- isohdpfx_f.bin | |-- isohdppx.bin | |-- isohdppx_c.bin | |-- isohdppx_f.bin | |-- isolinux-debug.bin | |-- isolinux.bin | |-- kbdmap.c32 | |-- kontron_wdt.c32 | |-- ldlinux.c32 | |-- lfs.c32 | |-- libcom32.c32 | |-- libgpl.c32 | |-- liblua.c32 | |-- libmenu.c32 | |-- libutil.c32 | |-- linux.c32 | |-- lpxelinux.0 | |-- ls.c32 | |-- lua.c32 | |-- mboot.c32 | |-- mbr.bin | |-- mbr_c.bin | |-- mbr_f.bin | |-- memdisk | |-- meminfo.c32 | |-- menu.c32 | |-- pci.c32 | |-- pcitest.c32 | |-- phlaplen.initrd.cgz | |-- phlaplen.kernel | |-- pmload.c32 | |-- poweroff.c32 | |-- prdhcp.c32 | |-- pwd.c32 | |-- pxe.cfg | |-- pxechn.c32 | |-- pxelinux.0 | |-- reboot.c32 | |-- rosh.c32 | |-- sanboot.c32 | |-- sdi.c32 | |-- sysdump.c32 | |-- syslinux.c32 | |-- vesa.c32 | |-- vesainfo.c32 | |-- vesamenu.c32 | |-- vpdtest.c32 | |-- whichsys.c32 | `-- zzjson.c32 |-- phlaplen.initrd.cgz `-- phlaplen.kernel 

Что мне не хватает?

Обновление 1: Следуя предложению Наши использовать абсолютный путь, я мог бы успешно загрузить ядро. Мне пришлось использовать абсолютный путь, указанный в dhcp-option-force = 210, а не тот, который указан в опции tftp-root.

/etc/dnsmasq.conf :

 port=0 interface=enp0s20u2u1 bind-interfaces dhcp-range=192.168.2.50,192.168.2.220,12h dhcp-boot=boot/syslinux/lpxelinux.0 dhcp-option-force=209,syslinux/pxe.cfg dhcp-option-force=210,/boot/ enable-tftp tftp-root=/mnt/pxe/ 

pxe.cfg на сервере tftp.

 LABEL rear_nfs TEXT HELP Boot REAR. Allows you to recover bare metal. ENDTEXT MENU LABEL Boot PXE rear KERNEL /phlaplen.kernel INITRD /phlaplen.initrd.cgz