[syslinux] pxelinux -> pxeboot load?

Cristi Mitrana cristi.mitrana at gmail.com
Sun Nov 27 12:58:45 PST 2005


On 11/27/05, Steve Finkelstein <stevefink at gmail.com> wrote:
> Hi all,
>
> I've searched the depths of the resources on the internet;  however
> I'm having trouble deploying a pxeboot solution via pxelinux.  So far
> what I have successfully implemented in my infrastructure is a
> successful pxeboot setup for FreeBSD ( without the use of pxelinux ).

 This is the normal way that is supposed to work, so it works normally.

> I'd ultimately like to have a solution that will allow me to choose a
> network install of various Unix-like operating systems including
> FreeBSD, RHAT8, Fedora Core 4, etc; hence the pxelinux route.

 Yes, having a menu with installation options is nice.

> Support for KickStarting linux is clearly the easy part;  I just need
> this to chainload pxeboot and proceed with my existing setup.  Here's
> what I have from dhcpd.conf so far,
[...]
>
> default freebsd
> label freebsd
>   kernel pxeboot.0
>   append ramdisk_size=100000 network load_ramdisk=1 prompt_ramdisk=0
>   initrd=pxeboot vga=788 root=/dev/ram

 This is not going to work because pxeboot is the freebsd's equivalent
of pxelinux,
it's just gets loaded by a PXE compabible card and then takes over the boot,
in your case loads the boot/loader.rc configuration file , in pxelinux
case it loads a pxelinux.cfg/default (as a last resort). So pxeboot is
not a valid 'kernel' image that pxelinux can boot.

> Everything is okay on the DHCP end, as I mentioned prior, that I can
> pxeboot without pxelinux, I just can't chainload the pxeboot or load a
> kernel.
>

 The only way to chainload pxeboot is to make a new PXE net-boot and
instruct the dhcp server to load pxeboot instead of pxelinux.
 Here is my workaround: get the etherboot package from
www.etherboot.org, it has PXE support for some time. Make a an
etherboot *.zlilo image for several cards that you know that you must
support (hopefully you won't have any that etherboot does not
support).
 This is done by 'make bin/card1--card2--card3--cardx--..--.zlilo',
and it's 2 '-') from etherboot's 'src' dir. Get the file you obtained,
rename it to 'etherboot.zli' and move it to your tftp directory.

 ( alternatively, you can do 'make bin/undi.zlilo' and add 'append
keeppxe' in you pxelinux.cfg/ file so it just re-uses the network
stack already loaded by pxelinux and no need for a supported driver in
this case; this did not work for me when I tested, so I cannot comment
on that).

 The in the pxelinux.cfg/ file add another entry ('freebsd') which
loads etherboot.zli as a kernel.   All you have to do now is to
instruct dhcp to load a different boot file when etherboot will make a
new PXE boot.
 <snip>
class "Etherboot" {
        # Catch all etherboot requests in this class
        match if substring(option vendor-class-identifier,0,9)="Etherboot";

        # Send the ETHERBOOT VCI so that it knows
        option vendor-encapsulated-options 3c:09:45:74:68:65:72:62:6f:6f:74:ff;

        # this should be you FreeBSD root dir, required by the boot loader.
        option root-path "x.x.x.x:/usr/local/export/pxe";
        filename "pxeboot";
}
</snip>

--
mitu




More information about the Syslinux mailing list