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