dnsmasqとsyslinuxを使用してPXEを介してLinuxカーネルを起動するには?

dnsmasqとsyslinuxを使用してPXEを介してLinuxカーネルを起動するには?

次の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)がカーネルで起動できないことです。 pxeブートがdhcpサーバーからネットワーク情報を取得し、syslinuxブートローダを表示した後、syslinuxブルーブートメニューで停止します。

これは私のpxe 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: Nashaが提案した絶対パスを使用してカーネルを正常に起動できました。 tftp-rootオプションで指定された絶対パスではなく、dhcp-option-force = 210で指定された絶対パスを使用する必要があります。

/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/

TFTPサーバーのpxe.cfg。

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

関連情報