[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