I was wondering if it was possible to make a PXE bootable image from a dos utility firmware. For some specifics the firmware updater is usually to be installed on a USB stick. I have all the flat files. Should I be fine just dumping the flat files on my tftpboot server and then just adding in the proper bits for the pxemenu or is the process a bit more involved?
I found FreeDOS but they do not supply a bigger image than 1.44MB which is an issue because the firmware rom alone is 5MB in size. I tried creating a larger image using these steps but have not had any success as each time I go to boot into the image it does not display the usual FreeDOS menu (it only prints out FreeDOS and gives no command prompt).
EDIT: I was able to get the rom running off the FreeDOS image from here but of course when running the rom it says that the rom is corrupted because the entire rom is not actually on there and is only partially there due to there being only 1.44MB of space on the image. To further complicate things the rom will only run when himem.exe and emm386.exe are running (they are started by selecting the second option on FreeDOS).
EDIT2: I finally got the USB stick to work after adding the flat files to the stick and the COMMAND.COM from a custom freedos usb stick I found. Still with copying the files to a USB image and trying to boot from PXE it refuses to boot.
You can see a step-by-step tutorial here: http://www.smop.co.uk/mediawiki/index.php/PXE_booting_floppy_images
Or try to search for "boot ISO via PXE", "boot DOS via PXE", etc.
Extended edit
The following is tested and working.
All you need is the Full FreeDOS ISO, a recent Linux LiveCD, an installed Linux and a Virtual Machine.
Then this is what I did:
dd if=/dev/sda of=/tmp/freedos.img
(replace /dev/sda with the correct device name of the virtual harddisk)/tmp/freedos.img
to a real machine (SCP, SMB, FTP or whatever).If it works and you see the copied programs everything is fine and you can shutdown the system again. If not, repeat from step 5).
syslinux
package. This is easier then compiling your own binaries or download precompiled images from somewhere.After the install locate the
memdisk
binary in the filesystem. Mine was at/usr/lib/syslinux/memdisk
.memdisk
andfreedos.img
to the tftp server of your PXE environment and configure it with the following configuration entry..
Boot via PXE and enjoy FreeDOS from network.
As an exercise for the reader you should try iPXE which is an Open Source PXE firmware. With it you can skip all the tftp/PXE crap and instead boot via HTTP! In this case you can boot from the iPXE boot loader and enter the following commands:
dhcp
gives you any IP from your DHCP server just to communicate with 192.168.1.1 or whatever your (internal) webserver is. You could also set a static IP instead. The other commands download and install the bootloader and the disk image from HTTP and then boot the image. Impressive.You can use memdisk to do boot disk images (e.g. from a floppy disk or hard drive) or iso images. For example, here is my PXE configuration for booting DBAN.
This is enough to work with some vendors update tools. However, it looks like the firmware update is not distributed as an image, but as a number of files.
What I would try to do is use the HPQUSB.exe utility to prepare a USB key, make an image of the USB key, then boot that image using memdisk.