Re: PXE-compliant boot server request?

Marty Connor <[email protected]> Thu, 2 Mar 2006 11:21:20 -0500
Newsgroups gmane.network.etherboot.devel
Message-ID <[email protected]>
On Feb 28, 2006, at 3:24 PM, Roland Kuhn wrote:
>>> I'm struggling with the automatic network installation setup at  
>>> our institute, which requires more PXE-compliance than currently  
>>> offered by etherboot. To be specific, it requires the  
>>> PXE_BOOT_ITEM selection to be present in the DHCPREQUEST, and it  
>>> requests via DHCP_DISCOVERY_CONTROL that neither broadcast nor  
>>> multicast be used for that packet. I'm thinking about adding that  
>>> functionality, but there are two ways: hard-coding the specifics  
>>> for this setup or handling the involved protocol. What do you  
>>> think? Does this have a chance of inclusion?
>>> Ciao,
>>>                     Roland
>> Improved PXE compatibility is certainly one of our goals, and if  
>> your changes work toward that end, they are likely to be included.
>> Handling the protocol would be more likely to be included, of  
>> course (as I am sure you would do).
>>
>> Thanks for writing, and we look forward to seeing what you come up  
>> with.
> Here's my first try: it works for me (TM), I've successfully booted  
> several machines with this patch. The PXE boot menu is printed, but  
> I've not implemented a selection, it uses always the first entry. I  
> trust that someone knowing etherboot better than me can easily add  
> a small question prompt with a timeout.
>
> The function principle is the following: If the DHCP reply  
> contained vendor encapsulated options with a boot menu, we parse it  
> and store it for later. In case of proxyDHCP only the packet from  
> the proxy server is relevant. After that the server address given  
> for the first boot menu item is queried on port 4011 using another  
> DHCPREQUEST-type packet, including the selected boot item. The  
> server sends back a DHCP reply with a filename and new options,  
> which are copied to the KERNEL_BUFFER and BOOTP_DATA_ADDR  
> respectively. From there on everything is as usual.
>
> This is used to implement a three phase booting: after the  
> procedure outlined above an image like pxelinux is loaded, which in  
> turn loads the kernel and initrd as configured on the boot server.  
> The initrd contains boot scripts which configure the network using  
> normal DHCP (without PXE extensions) and receive in the filename  
> field e.g. the name of a kickstart installation config file. PXE  
> extensions are necessary to facilitate this distinction between  
> booting and installation and enable the usage of the filename field  
> with two different values in different phases of the boot procedure.
> Ciao,
> Roland
> <pxe.patch>

Hi Roland,

Thank you very much for the patch!

The code looks good.  It's nicely structured, and clean.
I'd like to have Michael Brown take a look at it, since he  
implemented the PXE support, and knows the most about it.

It would also be very nice to have a test case.  Can you think of  
something relatively simple that will exercise the code?
I'd like to try it here, but am not sure how to set it up.  It looks  
like I need to run a proxyDHCP server as well as DHCP server.

Also, when you say:

> PXE extensions are necessary to facilitate this distinction between  
> booting and installation and enable the usage of the filename field  
> with two different values in different phases of the boot procedure.

Did you mean that you had to create and implement extensions to PXE,  
or that there were existing parts to PXE that were not implemented in  
Etherboot, and you implemented them?

Thanks a lot for your work.  I hope we can get it into a release  
soon.  I'm working on getting out 5.4.2, but until I put it on rom-o- 
matic.net, I think feedback will be slow because people have to get  
it from CVS, and then compile, which is some work to figure out if  
you don't do it all the time.

Please let us know about testing.  It would be really cool to have  
PXE-based menus.  I'd enjoy seeing an example.
As you say, it would be nice to have an interactive prompt that  
allows choosing of the desired image.  I'm sure someone will add that  
soon.

I just found this link:

    http://www.rembo.com/rembo/kbase/kb01102802.html

which talks about creating menus, but not in too much detail.

While we're at it, here's a nice page that talk about using PXELINUX  
to boot a number of systems:

    http://www.fefe.de/netboot/how-to-netboot-installer.html

This is neat stuff.  Now we just have to document the capabilities so  
people actually know what is possible.

Marty




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642