Logo

Thin Clients : Tools 

Software tools for Wyse WinCE based terminals

Overview | makebootp | netboot | unpack | display | evo_eeprom |


makebootp

I wanted a simple tool to build the bootp.bin files I needed during development of the kernels for the various bits of Wyse and HP hardware in my possession. Whilst it would be possible to wrap a script around the individual programs in bundle-tools to achieve my aims there were differences between the Wyse and Compaq setups e.g. the .ce and .bin files had different names. I was after something that built easily from my basic file set and where there was minimal chance of using the wrong files. Out of this requirement makebootp was born. It's also been an educational exercise in putting everything together.

NOTE: This will only work with firmware bundles which hold a list of individual files. It will not work with a bundle which holds a file system image (filesys0 etc).

Inputs

The input files you may need are:
  • The binary firmware package for your particular Windows CE client. (Download this from the HP or Wyse websites).
  • A complied Linux kernel as a bzImage file.
  • A splash screen (poweron.bmp) of your own.
  • An initrd file.

Usage

makebootp [-f firmwarefile] [-b poweron.bmp] [-r ramdisk] [-c cmdline | -C "command line"] [-k kernel] [-L | -l file] [-o outfile] [-v]

where:

-f file  specifies the standard NETXFER image file to use. You need to specify this if you are building something that you want programmed into the thin client's flash memory. If it is omitted the file will be built to just execute in RAM once it has been downloaded.
-b file  This is only relevant if the -f option is being used. This allows you to include a custom bit-map splash screen for your thin client. If it is omitted then the splash screen (poweron.bmp) from the standard firmware package will be used.
-k file  specifies the file holding the linux kernel to use. The default is bzImage
-r file  specifies the initrd file. If it isn't specified then no ram disk is included in the build.
-l file  The program has two inbuilt "loader" programs - one to deal with the case where the main payload is loaded from flash, the other where it has been loaded by NetXfer. The program picks the right one depending on whether the -f option has been specified. If you need to use a different loader then you can include it by using this option.
-L file This option allows you to specify a build based on a single file. i.e. The specified "loader" has no payload associated with it. The program does not include any kernel or ram disk, but a bitmap file can still be specified. (Essentially this option is used when packaging a netboot file for flashing into the thin client's memory.
-c file gives the name of a text file containing a list of command line options.
-C "..." As an alternative to the above the boot options can be specified directly.
-o file specifies the name of an output file. (default bootp.bin)
-vfor verbose mode. Use twice to get a running commentary. Use it three times to get a list of all the files in the bundle.

What it does

makebootp basically packages up a loader, a kernel and a ramdisk.

If the -f option has been used it performs the following actions:

  • It scans the specified NetXfer binary file to locate:
    (i) The file with the BIOS flag set.
    (ii) The matching file with the .bin extension.
    (iii) the k file.
    (iv) the poweron.bmp file (but not if -b option has been used).
  • It takes the loader code, the linux kernel and the initrd file and creates an nk.bin file.
  • It creates a new "bundle" of files comprising:
    (i) The BIOS file.
    (ii) The matching .bin file.
    (iii) The k file.
    (iv) The new nk.bin file.
    (v) The original or replacement poweron.bmp file.
  • Finally it appends the bundle to the initial "flashing code" extracted from the standard firmware file and writes the lot out as a new bootp.bin file.

If the -f option is not used, makebootp just wraps up the loader, kernel and ramdisk in right format for a NetXfer download.

Examples

In building a version of Linux for a Wyse WT3125SE I have the following files sitting around in my working directory:

  • bzImage - the latest kernel that I've built.
  • newcore.gz - the initrd that I'm using.
  • cmdline - a simple text file containing my kernel command line.
    (Entries such as kmap=qwerty/uk with one command per line).
  • F576_Wye74.bin - the Wyse firmware file for the WT3125SE.

To build a test version that will be downloaded and execute in RAM without being flashed into the thin client:

makebootp -r newcore.gz -c cmdline -o ~/ftp/

..to get a bootp.bin file sitting in my ftp directory ready to be downloaded by NetXfer or the netboot code that's previously been flashed into the WT3125SE.

When you're happy everything is working as it should and you want to flash the result into the WT3125SE:

makebootp -f F576_Wye74.bin  -r newcore.gz -c cmdline -o ~/ftp/

..creates the bootp.bin file ready for the standard NetXfer to download and run. At that point the Wyse firmware will write it into the onboard flash.

 


Any comments? email me.    Last update January 2011