August 17, 2025

Sun 3 bootrom souce - Network booting

I have notes on setting this up for the 3/280: It boils down to setting up rarpd and tftpd on your linux server. I already did that, so I first just need to add information for the rarpd server. This involves editing the file /etc/ethers, not to mention assigning an IP address for this machine. So I add an entry to my /etc/hosts:
192.168.0.28    kale
Then I add an entry to my /etc/ethers so it looks like this:
08:00:20:00:04:B1               192.168.0.30
08:00:20:01:DB:00               192.168.0.28
I see this on my 3-160 console, running the original bootrom:
Auto-boot in progress...

EEPROM boot device...Boot: ie(0,0,0)
Requesting Internet address for 8:0:20:1:DB:0
I do the following on my linux system:
su
dnf install rarpd
systemctl start rarpd.service
Note that rarp takes place at a more basic level that tcp or udp, so there is no need to tinker with firewall rules.

I am not seeing a response, but I go back to my notes from the 3/280 setup and rediscover the fact that rarpd will not respond if it does not see a bootable image in the tftpboot directory. How about that? What I can do is this:

service rarpd stop
rarpd -e -v -d
The "-e" switch tells it not to bother to check for a bootable image. And this works! Now I see:
EEPROM boot device...Boot: ie(0,0,0)
Requesting Internet address for 8:0:20:1:DB:0
Using IP Address 192.168.0.28 = C0A8001C
tftp: time-out.
tftp: time-out.

Now we need tftpd

su
dnf install -y tftp-server
ln -s /var/lib/tftpboot /tftpboot
systemctl enable rarpd.service
I make the link based on my old notes for the 3/280. I believe that rarpd looks into /tftpboot This serves files out of /var/lib/tftpboot. After the above install, this directory exists, but is empty. I am now running Fedora 42. I have an old backup from when I ran Fedora 41 of the stuff in this directory, so I do this:
( cd /u2/root_f41/var/lib/tftpboot; tar cf - . ) | tar xpvf -
ls -l C0*
lrwxrwxrwx 1 root root 13 May 20 08:18 C0A8001E -> sun3_test.bin
ln -s sun3_test.bin C0A8001C
ls -l C0*
lrwxrwxrwx 1 root root 13 Aug 17 18:09 C0A8001C -> sun3_test.bin
lrwxrwxrwx 1 root root 13 May 20 08:18 C0A8001E -> sun3_test.bin
So, I make a symbolic link to some test executable that I was once successfully booting on the 3/280. Then we do this:
systemctl start tftp.service
systemctl status tftp.service
I reset the sun, but it is still timing out on tftp. I look at my log file and see:
Aug 17 18:16:40 trona in.tftpd[46857]: connect: Invalid argument
Aug 17 18:17:12 trona in.tftpd[46863]: connect: Invalid argument
I run wireshark with capture filter "port tftp". After a bit of a wait, I see a request packet on port 69 for the file C0A8001C, just as we expect.

There is always some weird problem setting this stuff up. I wonder what it is this time.

And now it works!

I cycle power on the 3-160 and get:
EEPROM: Using RS232 A port.
Selftest Completed.

Sun Workstation, Model Sun-3/160M.
ROM Rev 3.0, 4MB memory installed, Serial #17403.
Ethernet address 8:0:20:1:DB:0, Host ID 110043FB.


Testing 4 Megabytes of Memory ... Completed.

Auto-boot in progress...

EEPROM boot device...Boot: ie(0,0,0)
Using IP Address 192.168.0.28 = C0A8001C
Booting from tftp server at 192.168.0.5 = C0A80005
Downloaded 2776 bytes from tftp server.

Starting test
Ready%
So there it is! It has booted a standalone executable I wrote when I was fooling around with my 3-280. This demonstrates that my "ie" chip and cable and connection are all OK.

I can type "q" to this demo and it returns to the ROM.

But we need to set up the firewall for tftp

The above was done with the firewall shut down ( via: systemctl stop firewalld ). We want our firewall to run, so we need to tell it that tftp is allowed.

Here is what we do:

root@trona:/u2/home/tom# firewall-cmd --add-service=tftp --permanent
success
root@trona:/u2/home/tom# firewall-cmd --list-ports
2001/tcp
root@trona:/u2/home/tom# firewall-cmd --reload
success
root@trona:/u2/home/tom# firewall-cmd --list-services
dhcpv6-client mdns ssh tftp
root@trona:/u2/home/tom# firewall-cmd --list-ports
2001/tcp

systemctl status firewalld
The last command above will confirm that the firewall is up and running.
No, tftp does not appear as UDP port 69, it appears as a service (if you do it this way).

Best of all, it works.


Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org