Thin Clients : PXE booting 







PXE booting


Sometimes it is useful to be able load the Thin Client's operating system from the network. There are two obvious cases for this:

  1. In the business world firmware upgrades can be performed without having to visit all the outlying terminals. There is also no need to run a centralised management system to support firmware updates on a 'pull' or 'push' basis.
  2. In a development environment you can quickly test new builds without having to go through a "flash-the-firmware-and-see-if-it-works" cycle.

However not all Thin Clients support network booting.

Jelte Veldstra had problem (1) in relation to an installation of Optoma ST320Es. I had problem (2) in relation to work I was doing on the Compaq EVO T20. We solved our problems in similar ways - which is essentially to replace the Thin Client's operating system stored in the onboard flash by a program to perform a PXE network boot. It does add an extra step to the boot process but does provide a simple solution to the problem.

[See also an article on using proxyDHCP to set up a local PXE server].

Solution (1)

(Words from Jelte Veldstra)

I recently procured a set of 12 Optoma ST320E thin clients. I needed PXE booting for those. After replacing the BIOS (see the Optoma Firmware tab). I found that hitting the F1 key on those units is a pain and sometimes still tries to boot off the flash storage. I found another way which may be of help to others.

Using I created a gPXE 1.0.1 USB keychain diskimage for the RTL8139 NIC. I customised it by taking out the options for SAN booting and wireless options. This image was written onto the flash storage of the thin client (dd if=[PXE image file] of=/dev/sda). Now the ST320E can PXE boot irrespective of the BIOS used (original Optoma or Fujitsu). The downside may be that the contents of the flash storage are overwritten (backup made first of course! (cat /dev/sda > backupfile.out)) and switching between booting PXE and booting Windows CE is not possible with this approach.

Solution (2)

My approach was similar - but I started with the source of Grub Legacy and stripped out everything other than the network boot code. This also allowed me to use alternative ports for the DHCP server which is useful in a development setup. (Where Jelte was hitting F1 on power-up I was hitting the P key on the Evo T20 to select my alternative server).

In retrospect I was a too enthusiastic in my pruning of Grub - it would have been useful to have left in the code to allow USB booting. Although I did this work some time ago I still have not got round to documenting/packaging this up as download option on this site. Maybe one day....


Any comments? email me.    Last update October 2011