Darryl L. Miles wrote:> I would like to create a dialog menu system.  That offered a little bit 
> more than just select of what to boot.
> 
> 
> Outline Requirements (ideals):
> 
>  * That would boot from pxe and keep using the basic ethernet card 
> support (so are zero issues with future ethernet card compatibility, 
> this rules out using a full operating systems like linux/dos/win32 
> unless of course those OSes can be booted and retain the generic BIOS 
> ethernet driver interface for their eth0 ?).
In theory it's possible, but many PXE stacks will crash if you try.
>  * The dialog would be simple, based on 80x25 like text mode, looking 
> much like Red Hat linux installs in text mode, or "make
menuconfig" on
> Linux.
> 
>  * Simple widgets: menu / nagivation, command buttons, editable controls 
> for: textbox, paragraphbox, radio, drop down, checkbox, ipaddress.
> 
> * The engine would load and execute as the operating system, like 
> pxelinux.0 does, then load up a
> 
>  * The whole thing would be driven off TFTP which would load instruction 
> scripts via a TFTP server for the current dialog.  Some minor 
> modification might be made to the HPA TFTP server to allow CGI like 
> execution of a server side script that generates the content of the file 
> being "get".  Various environment variables would be passed to
the CGI
> script, for example the MAC addr, IP addresses, ports numbers, etc...
I've looked into this, and there turns out to be necessary to make a 
modification to the TFTP protocol to make this practical.  I have 
somewhere on my list of things to do to write an Internet Draft for this 
extension.
>  * The instruction sheet has a basic concept of variables, would be text 
> based, kept simple like "default" is right now.
> 
> * There would be a simple mechanism to get and put variable values using 
> a bespoke UDP protocol.  Maybe TFTP is an option here too.  This allows 
> persisting of settings and state to the server.
Yes, TFTP can be used for this.
> Sound impossible ?  The hardest missing pieces from what I can see are 
> mainly dialog widget/control related.
Would Murali's complex menu system be decent starting point?
> Is there an easy development environment for writing pxelinux.0 OS code 
> ?  Is it possible to run a network boot inside an PC architecture 
> emulator.  Can GDB be used in anyway (serial/network) to debug things ?  
> Or is the only way to compile, reboot and crash your victim test system?
"Easy development environment" -- that's in the eye of the
beholder.
I usually use a simulator to do this, usually using Etherboot.  Some 
simulators (e.g. Bochs and qemu) allow you to use gdb, you can use the 
.elf file to get the symbol table.
	-hpa