Looks fine to me.
Splendid! Thanks for your work! I'll update the wiki as soon as the next archiso is built and released. April 1st, presumably.
Eric Toombs (0c6ecb6b) at 25 Mar 14:44
syslinux PXE: Forced all TFTP paths to be absolute
Well, it does now, lol.
Shockingly, using ..
breaks dnsmasq!! So, it looks like archiso will just have to use ::
. This means, unfortunately, the archiso tree must be at the root of the TFTP server. Anyway, it's working now with ::
in tftp-hpa and dnsmasq.
Eric Toombs (fbb60344) at 24 Mar 19:11
syslinux PXE: Forced all TFTP paths to be absolute
Eric Toombs (8c8a59cd) at 24 Mar 19:08
syslinux PXE: Forced all TFTP paths to be absolute
Oh, that. Those instructions don't work. I had to use different DHCP settings from what was recommended. I mean, there isn't even anything located at /arch/boot/syslinux in the archiso tree. These instructions must be outdated.
But if that's where the instructions are supposed to be, I can fix them after this PR goes through.
I was already running tftp-hpa with the --secure
option.
The final path being sent to tftp is not relative. It is absolute. It is just the fragment of the path in the .cfg file that is relative. It is relative to the location of the .c32 files (/syslinux/
in archiso's case). All pxelinux does is prepend the relative piece with /syslinux/
. The actual path sent to the TFTP server is /syslinux/../arch/boot/x86_64/vmlinuz-linux
.
Prefixing the path with ::
might work, but a path relative to syslinux/
is more resilient anyway. It still works when the entire archiso tree is not located at the root of the TFTP server. (It still works, say, if the whole tree is under /archiso
, putting pxelinux.0
at /archiso/syslinux/pxelinux.0
.) If the same TFTP server needs to serve other OS images, this would be very useful. If ::
is used, this would break.
The only potential problem I see is ..
not getting interpreted right by the TFTP server, but that's not the same thing as not allowing relative paths. I couldn't imagine any TFTP server having trouble with that.
Done.
Eric Toombs (c4878869) at 22 Mar 00:22
syslinux PXE: Changed all TFTP paths to relative paths.
I think it is also necessary to say somewhere inside this project how to use the PXE support. Specifically, how to configure the DHCP server. The dnsmasq settings I had to use were
dhcp-boot=/syslinux/lpxelinux.0,<tftpd-hostname>,<tftpd.ip.ad.dress>
dhcp-option-force=209,syslinux.cfg
Where should this be documented?
I thought of that, though I always thought that would be unlikely, since I was just using vanilla tftp-hpa. I enabled verbose logging on my TFTP server to see exactly what paths were being requested. Here is the log.hpa-tftpd-archiso-failure.log
You can see in it that PXELINUX is specifically asking for /syslinux//arch/boot/x86_64/vmlinuz-linux
.
syslinux always interprets TFTP paths as relative to the location of the *.c32 modules, regardless whether a path starts with a slash. Without the ::
that I added to all of these paths, syslinux cannot find these files and the boot fails. It searches for them in /syslinux//%INSTALL_DIR%/boot/x86_64/vmlinuz-linux
, etc.
Eric Toombs (bd256a11) at 18 Mar 02:09
syslinux PXE: Changed all TFTP paths to relative paths.