back to main

So you want to flash the PROM on your SPARC without installing Solaris?

I had the same question and after searching a bit on the Internet the only suggestion I found was to just swap disks and do a minimal install of Solaris, all for the purpose of flashing the PROM--what a drag!  There has to be a better way to do this...  Well guess what?  There is!

Roughly the steps are:

* Get the PROM flash update from

* Get the MAC address of your primary NIC on the SPARC box (usually hme0 or le0--er, Happy Meal or Lancer to you Linux users, I believe).  You can get this from the "ok prompt" by typing .enet-addr.

* power-off the SPARC box and set the jumper to allow the PROM to be flashed (jp2 on Ultra 5/10 machines).

* Unzip the flash update and copy the appropriate file to /tftpboot on the machine you will be net-booting off of (I used an OpenBSD 4.0/macppc box--this can also be done with Windows[1]).

* Make sure you have tftpboot configured in your inetd/xinetd.  On OpenBSD it's configured as such in /etc/inetd.conf:
tftp            dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -s /tftpboot

* If inetd isn't running, start it, otherwise send it a SIGHUP.

* Decide what IP address you want to give your SPARC box.  Put the IP and hostname in /etc/hosts in the normal fashion (if you haven't already).

* Put the MAC address and hostname in /etc/ethers (just like /etc/hosts).  Mine looks like this (well, totally fake address & hostname aside):
f:0:80:66:1e:79 sparcy

* Now the silly part:  convert the IP address of your SPARC box to hex...  Don't ask me why, Sun boxes simply demand it and you must comply:
$ HEXIP=`echo | awk -F . '{ printf "%02X%02X%02X%02X\n", $1, $2, $3, $4 }'`
$ cd /tftpboot
$ ln flash-update-file $HEXIP
Moved a bit of trivia about earlier Sun boxen[2]

* OK, now start rarpd (in debugging mode so we can see if it answers):
# rarpd -ad

* Now power your SPARC back on and send it a break before it starts booting a kernal.  At the ok prompt, type:
ok boot net

and watch it go.  Hopefully you did everything right and you don't[3] get:
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet

If you did things right you will see a byte-counter in the upper left corner like:

this will continue to count up until it has downloaded the entire flash file.  When it is done it will execute automatically.

* When you get:
       Firmware Release(s)                Firmware Release(s)                   
 Currently Existing in the System      Available for Installation  /  Install?  

--------------------------------- ------------------------------------------- OBP 3.11.9 1998/03/06 10:31 OBP 3.31.0 2001/07/25 20:36 no POST 2.2.9 1998/02/19 17:54 POST 3.1.0 2000/06/27 13:56 no Type sa if you wish to select all available firmware releases for installation. Type h for help, quit to exit, or cont to continue:
go with: sa, then cont, then [enter]

* If everything goes well, you should see:
Erasing the top half of the Flash PROM.                                         
Programming OBP into the top half of the Flash PROM.                            
Verifying OBP in the top half of the Flash PROM.                                
Erasing the bottom half of the Flash PROM.                                      
Programming OBP into the bottom half of Flash PROM.                             
Verifying OBP in the bottom half of the Flash PROM.                             
Erasing the top half of the Flash PROM.                                         
Programming POST into the top half of Flash PROM.                               
Verifying POST in the top half of the Flash PROM.                               
Programming was successful.                                                     
Resetting ...                                                                   
Restoring previous NVRAM environment settings...                                
#power-cycles =       73                                                        
local-mac-address? =  true                                                      
security-#badlogins =  0                                                        
nvramrc =                                                       
Resetting ...

* If you get in trouble, you can try running tcpdump on your tftpboot/rarpd server to make sure it can see the Sun box' ARP requests and/or what file it's trying to download from the tftpboot server.

* OK, so that was pretty complex, but believe me it's worth saving the time over installing Solaris, IMO.  At the very least you now know how to setup tftpboot and rarpd.  If you ever want to boot a diskless workstation, you're only the NFS setup away from accomplishing it.

[1]If you don't have a *n*x box to setup RARP & TFTP, follow these tips from Dr. Christopher Blencowe to perform the steps on Windows:
a) A rarpd is available for Windows at

* You need to create a text file (rard.tbl) with the MAC/IP table.

* You need to exclude (/XS) subnets if you are multi-homed (multiple NICs on the windows machine).  You also may disable those NICs temporary within windows system -> network properties.

* Caveat: When you have multiple IP addresses assigned to a NIC, rarpd seems to fail (at least on WXP SP2: No IPAddr for TCP params key) to start at all. Simply remove all but one IP address (the one within the subnet you intend to use) from the NIC temporary and re-apply them after you finished upgrading your SUN machine.

b) A tftpd is available for Windows at

* You need to rename the flash image as you described and put the file aside the windows binaries.

* You simple have to start a) and b) (no install or further config required) and "boot net" the machine.

As I usually have any kind of windows around here, I assume, this is another (quick) possibility in case you don't have a debian or bsd available, you also do not have to fiddle in your system or a one-time action.

I made the things above on a W2K SP4 machine with an Ultra-10 upgrade.

Thanks for the tip, Dr. Blencowe!

[2]If you were net boot'ing a Sun4c or Sun4m, they would require ${HEXIP}.SUN4C/${HEXIP}.SUN4M, respectively.  Apparently those boxen do not use the same flashable PROM though, so none of this applies to them--just a bit of trivia (tip from henning@, because I am a Sun n00b).

[3] This happened to me because I was a n00b and thought Sun boxen used DHCP.  Naturally I found out they use RARP insead.  Don't worry, you can still start rarpd at this point and the box will discover it's IP.

back to main