Booting a Personal DECStation 5000/2x via bootp/tftp Paul M. Antoine 12/11/95 The DECStation manual hints at the ability to boot with bootp/tftp on page 6 of Appendix F of the User's Guide. It is, however, very vague about how to set this up. These notes are intended to clarify this method of booting, and were done late one Sunday night after an entire day of hacking. I will therefore be excused if there are any inaccuracies... caveat emptor! Console Command: The normal console command for booting a Personal DECStation 5000/2x is something like this: boot 3/rz0/vmunix -a The "3/rz0/vmunix -a" portion of the string can also be stored in the 'boot' environment variable to allow auto-booting. The User's Guide states that there are two alternatives to this command, namely: boot 3/mop/filename and boot 3/tftp/filename I will concentrate on the second of these, as tftp is supported by Linux, and is therefore of most interest to the linux-mips development team. Booting with bootp/tftp: The manual doesn't mention much of the specifics of booting using the tftp protocol, but when you issue to command: boot 3/tftp/vmunix -a 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. 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: arp -s 192.168.1.3 08:00:2B:2D:90:C0 ...so that it the Linux machine responds when the DEC boot monitor ethernet code does an arp request to find it's IP address before initiating the tftp transfer. 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). 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: boot 3/tftp/vmunix Now, 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., we next try: boot 3/tftp vmunix Nope, we get FNF? as a response (i.e. file not found). So then we try: boot 3/tftpvmunix 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: boot 3/tftp and have it grab the right file, OR you must specify the entire path in the boot command, e.g.: boot 3/tftp/home/mips/decstation/vmunix However, if anyone else figures out how to give the boot monitor a relative filename, *please* let me know. Paul M. Antoine (paul@softway.com.au)