Booting the DECstation via a network using bootp and tftp


This document is originally by Paul M. Antoine 12/11/95 which was updated by Thomas Riemer 1/23/96 for the DECstation 2100/3100. At the Linux DECstation site there is a 'Hardware Maintenance Guide' for Personal DECstation 5000's in postscript format available. It contains the mentioned commands and there options.

The DECStation 5000 Hardware Operator's manual hints at the ability to boot with bootp/tftp on page 6 of Appendix F of the User's Guide. It is also mentioned on page 8 of Appendix 8 in the Hardware Maintenance Guide. It is, however, very vague about how to set this up. The User's Guide for the 2100/3100's is even more vague. These notes are intended to clarify this method of booting for these types of MIPS DECStation.

Normal booting:
---------------
After booting a decstation, depending on your configuration, you will automatically be dumped to a prompt ">>" or not. If not, a control C will usually do the job. If this does not do the job, there is a reset jumper on the board the for the 5000.

Assuming that you have reached the Boot Prom prompt ">>", the commands depend on the version of DECStation that is being used:

For DecStation 5000's

For DecStation 2100/3100's

The DecStation 5000 Hardware User's Guide states that there are two alternatives to the standard boot command, namely: It does not mention the tftp option in Chapter 11 (page 10), where one might expect to find such a mention. The tftp option is mentioned on page 8 of Appendix C in the Hardware Maintenance Guide.

The DecStation 2100 Hardware Users's Guide states that there are two alternates as well:

In both cases we will concentrate on a third option to which the respective User's Manuals barely allude: Booting with bootp/tftp.

Booting with bootp/tftp:
------------------------

Neither manual mentions much of the specifics of booting using the tftp protocol, but when you issue the command:

The DECStation sends out a bootp request first, an arp request after that, and finally is able to initiate a tftp session to load the file. There are, however, some tricks to this.

Setting up bootpd:
------------------

First you need to configure bootpd on your Linux box so that it will respond to the request. Most Linux setups I've seen are reasonably configured in inetd.conf so that inetd will start the bootpd daemon, but the bootptab file will probably need some work. Here's my example bootptab file:

	# First, define a global entry which specifies the stuff
	# every host uses.
	#
	allhost:bf=null:\
		:ht=1:\
		:ds=192.168.1.6:\
		:sm=255.255.255.0:\
		:gw=192.168.1.6:\
		:ts=192.168.1.6:\
		:lp=192.168.1.6:\
		:vm=rfc1048:bs=auto:
	#
	# Define all individual entries.
	# hostname:ht=1:ha=ether_addr_in_hex:ip=ip_addr_in_dec:tc=allhost:
	#
	salty:ha=08002B2D90C0:ip=192.168.1.3:\
		:hd=/usr/home/mips/decstation/:tc=allhost:

The bootpd manual entry is quite good, so refer to that for the meaning of most of the tags, though I will explain a few of them:
ha: is host ethernet address, get this by copying down what you see when you type 'cnfg' at the monitor prompt on the DECStation.
ip: the IP address you want to assign the DECStation
hd: the directory where boot files can be found
bf: the boot file. I've set this to 'null' in the 'allhost' definition so that I can specify the file on the monitor command line. You may in fact want to use a specific file for testing, rather than having to type in a boot command line on the DEC all the time.


I found that even though I specified both an IP address and an ethernet address to bootpd, the copy of bootpd I have was unable to add an arp entry for it. I therefore had enter one manually, using the following: Note that this may have been fixed in newer copies of bootpd (mine's a couple of years old from an ancient Debian release and I suspect a library problem).

Tom Reimer notes, however: This seems to have been fixed as I did not need to do this. I used bootp: Version 2.4.
It also may depend when the DECstation boots, e.g. if it fails to boot and then the `boot` command is typed on the console then the bootp server needs to know the DECstation's hardware address. On the other hand if the DECstation boots automatic then the server doesn't need to know the machines hardware address.

I believe there is a kernel configuration that needs to be enabled on the Linux kernel and this is done automatically.

In either case... the Linux machine can then respond when the DEC boot monitor ethernet code does an arp request to find it's IP address before initiating the tftp transfer.

Tricks & Traps:
---------------

Having set all the above up on the Linux host, it's now time to try a remote boot with a command at the DEC boot monitor prompt. Try this on a 5000:

Assuming you copied vmunix (I used a copy of Ultrix for testing) to the /home/mips/decstation directory, you would presume that this command would load it. But no, as you'll see if you run bootpd in debug mode, in fact it tried to load /vmunix (i.e. an absolute path!).

O.K., so we next try:

Nope, we get FNF? as a response (i.e. file not found). So then we try: No again! Now the boot monitor is confused about the name of the script to use, because it uses the / as both a seperator, AND sends it as part of the filename!

It seems that the only way around this is to specify the file in the bootptab using the bf tag, so you can issue:

and have it grab the right file, OR you must specify the entire path in the boot command, e.g.: Unfortunately the DECStation 2100/3100's can only use tftp by specifying the full path name thus: So on Tom's 2100... the command is: Tom note that an alternative for the 5000 is to give the bootpath in the bootptab file using the hd= tag. So for example, the bootptab looks like this:
.default:\
        :bf=dec_vmlinux:\
        :dn=bernstein.com:\
        :hd=/data/tftpd:\        
        :sa=206.20.83.129:\
        :hn:ip=206.20.83.1:\
        :ds=206.20.83.11:\
        :gw=206.20.83.133:\
        :sm=255.255.255.128:

triv:ha=08002B154445:tc=.default:ip=206.20.83.144:

testdec:ha=08002B1C1EC2:tc=.default:ip=206.20.83.143:
Note the line bf=dec_vmlinux, the tag bf is the bootfile, and that is found directory specified by the line hd=/data/tftpd. When these are concatenated they form the full path name (for Tom's machine).

In fact, what this means is that you can actually make the command to boot even cleaner:

Does the job on the 5000 once the bootptab is set up. Sadly, the 2100 is not quite so fortunate, so the full path name is always necessary: However, if anyone else figures out how to give either the 2100/3100 or 5000's boot monitor a relative filename, *please* let us know!

Paul M. Antoine (paul@softway.com.au)
Thomas Riemer (triemer@wesleyan.edu)