Hi Franklin,
On Tuesday 03 June 2008, Franklin PIAT wrote:
> I had a small home-made script to retrieve and untar Debian Installer
> netboot images.
I've just tried this again after installing your package from unstable.
This time I got it working, but only after debugging and making some
adjustments in the configuration. See bottom of mail for my server setup.
With your documented configuration the client would try to load this file:
/tftpboot/debian-installer/pxelinux.cfg/01-08-00-27-ec-a0-ee
I "fixed" that by creating a symlink to default from that filename.
Next problem was an error because menu.c32 could not be found. Turned out
that the client was looking for (note the double debian-installer/):
/tftpboot/debian-installer/debian-installer/pxelinux.cfg/menu.c32
This I fixed by doing 'ln -s . debian-installer' (symlink to itself).
So the first problem was that pxelinux.configfile was being ignored. And
the second problem that a "default" rootdir was being set.
After following some links on the web I ended up at:
http://syslinux.zytor.com/pxe.php
There I found the magic needed to solve both problems, by using the
following config (line continuation not in original!):
filename "debian-installer/pxelinux.0";
site-option-space "pxelinux";
option pxelinux.magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
# Always send the PXELINUX options (specified in hexadecimal)
option dhcp-parameter-request-list = \
concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
option pxelinux.pathprefix "/";
option pxelinux.configfile "debian-installer/pxelinux.cfg/default";
With this dhcpd configuration both problems were fixed and I could use
di-n-a without the workarounds.
So, two changes:
- adding the 'if exists dhcp-parameter-request-list' bit
- overriding the default rootdir by setting pxelinux.pathprefix
The explanation from that website for the first is:
The "option dhcp-parameter-request-list" statement forces the DHCP
server to send the PXELINUX-specific options, even though they are not
explicitly requested. Since the DHCP request is done before PXELINUX
is loaded, the PXE client won't know to request them.
Regarding the pathprefix. I'd actually prefer to use the default that
seems to be set automatically on the basis of the location of the
original "filename" option: "debian-installer/". Using that would mean
that pxelinux.configfile could just be "pxelinux.cfg/default" and that
the debian-installer prefix could be dropped in all your generated menus.
I also have a feature request: support for custom images.
If I build a netboot image locally, I'd like to be able to add it to the
menu somehow.
Main thing is that these cannot be added to the di-n-a sources config file
as there is no download location for them, so I need some way to just
extract them into place and get them included in the menus.
I see several options.
1) I create a custom "top-level" menu file that I specify in the dhcpd
config and that has as one option to chainload to the di-n-a menu. This
will work and gives complete freedom but disadvantage is an extra menu
level and needing to maintain the menu by hand.
2) The same, but di-n-a learns how to include the custom menu file in the
menu it generates automatically either by
- just appending from a separate file, or
- preserving manually added entries in the file itself (anything after
some magic markers maybe, as grub does)
3) I create a "debian-installer/custom" dir with subdirs and di-n-a is
made smart enough to scan those for images and add them automatically by
running something like 'di-n-a update'.
What do you think? Preferably I'd be able to have several alternative
custom images at the same time.
Cheers,
FJP
# dpkg -l tftpd-hpa dhcp3-server openbsd-inetd
||/ Name Version Description
+++-==============-=============-==========================================
ii dhcp3-server 3.0.4-13 DHCP server for automatic IP address ass
ii openbsd-inetd 0.20050402-6 The OpenBSD Internet Superserver
ii tftpd-hpa 0.43-1.1 HPA's tftp server
Server is Debian Etch (i386).
Attachment:
signature.asc
Description: This is a digitally signed message part.