Mr.Coffee Specification & Boot Sequence
Mr.Coffee is one of the earliest JavaStations and is recoognisable by its
distinctive compact rectangular shape. It is actually based on a Sun drive
case, though the plastic is a different colour and the rear has holes for
the usual PC-style connectors. The name also derives from a coffee-machine
manufacturer of the same name.
The basic spec. for the machine is as follows:
Here is the boot sequence for my Mr.Coffee (OpenBoot 2.30):
| ||OpenBoot sends RARP who-is
|Get RARP reply ethernet_addr is ip_addr from
|Krups now sets its ip address.|
|OpenBoot sends a TFTP request for a filename derived from the
ip address (hexip.SUN4M).|
|Get file from boot server (this is the PROLL image).|
|OpenBoot starts PROLL.|
|PROLL sends BOOTREQUEST from 0.0.0.0 to 255.255.255.255
|Get BOOTREPLY from boot server.1|
|PROLL now sets its ip address.|
|PROLL sends a TFTP request for hexip.PROL.|
|Get file from boot server (this is the linux kernel image).|
|PROLL starts Linux.|
|(Optional) Linux sends BOOTREQUEST and gets a BOOTREPLY with
its ip address.|
||This must be at least 300 bytes long and must either contain no options,
or RFC1048 options terminated by a 255 (ff) byte. It can however be sent
to the broadcast ethernet address.|
Note the constraint on BOOTREPLY. Weird Solutions' DHCP
Turbo truncates its BOOTREPLY packet after the 255 (ff) byte of the options,
and PROLL prints "BOOTP: Invalid record.".
Mr.Coffee differs from the Krups in that it uses a RARP server to find its
ip address initally, but once PROLL is up and running, BOOTP is used instead,
in the same way that it is with PROLL on the Krups. It should be noted that
the filename of the boot image is not contained within the RARP reply - it is
derived from the ip address given to the JavaStation, with ".SUN4M" appended.
The RARP daemon will usually check for the existence of such a file on the boot
server before responding however.
Most DHCP servers support both DHCP and BOOTP (DHCP is an extension of BOOTP).
Notice how there is no way to pass the ip address from OpenBoot to PROLL, or
from PROLL to Linux.