wizardhatreal

Sun OpenFirmware Network Booting

This guide is by no means perfect but I think I got everything mostly right. If I didn’t then good luck everybody else!

You are gonna need a few things installed to do a RARP network boot for Solaris 10

rpcbind is in the arch repos https://archlinux.org/packages/core/x86_64/rpcbind/

in 2021 bootparamd was removed from inetutils so we have to build it ourselves. The inetutils version will probably work but I know this one works https://github.com/vogelchr/netkit-bootparamd/tree/master actually that link is dead for whatever reason so here is a mirror. https://codeberg.org/zombiemkv/netkit-bootparamd

rarpd is also ancient history so here is a fork that I know works https://github.com/QTechIndustries/rarpd/tree/master

teaftp is in the AUR on Arch Linux https://aur.archlinux.org/packages/teaftp

You’re gonna need the MAC address of the Sun machine you are trying to boot You can find it by looking at the banner when it is booting, or by looking at the physical NVRAM chip on the board. In my case mine is 00:14:4F:D2:10:56 sunbanner on openboot you are gonna put it in /etc/ethers with a hostname the hostname doesnt matter just keep it consistent

You will also need the inetboot file from your Solaris (or other OS) installation media. On sol-10-u11-ga-sparc-dvd.iso it is located at Solaris_10/Tools/Boot/platform/sun4u/inetboot within the iso copy it to a folder somewhere it doesnt really matter /teaftp works fine. Make sure to grab the correct inetboot for your system in my case its the sun4u one however if your on an UltraSparc T system then you’ll want the sun4v one When the Sun machine boots it looks for a boot file named after its IP address (the one you assign in /etc/hosts but in hexadecimal). In my case it is C0A80102 So, symlink or copy the inetboot file to a filename matching the hex IP. In my case: ln -s inetboot C0A80102

/etc/ethers
00:14:4F:D2:10:56 ultra25

in /etc/hosts you are gonna specify an ip that isnt in use by anything else, preferably one that isnt in the dhcp range or has a reservation

/etc/hosts
192.168.1.2 ultra25

In /etc/bootparams for root= and install= you are gonna put your NFSv2 server’s IP there along with the path where you have the Solaris DVD mounted. The gateway= entry includes your router’s IP and subnet mask in hexadecimal.

/etc/bootparams
ultra25 root=192.168.1.10:/mnt/dvd/Solaris_10/Tools/Boot install=192.168.1.10:/mnt/dvd gateway=192.168.1.1:0xffffff00 rootopts=:rsize=32768

Now for the fun part. You’re gonna need an NFS server. I think but I’m not entirely sure that it has to be an NFSv2 server which most linux distros today don’t support. However OpenBSD does so I use OpenBSD and it works and I’m too scared to mess my setup to see if linux actually works

I did look into adding NFSv2 support back into my linux kernel and although I succsesfully recompiled my kernel with the feature enabled, the userspace utilities unfortunatly don’t support NFSv2.

/etc/exports
/mnt/dvd/ -alldirs -ro -network=192.168.1 -mask=255.255.255.0

run rpcbind

# rpcbind -df

after building run bootparamd with

# ./bootparamd -d

rarpd

# ./rarpd -d -l enp5s0

teaftp for teaftp you are gonna run it within the folder where you have your inetboot

# teaftp

and finally make sure your nfs server is running

# systemctl start nfs-server.service

Finally when the machine is booting press Stop + A on the keyboard to get to the ok prompt or if you dont have those fancy buttons then connect over serial and send breaks. Run

ok boot net:rarp

And hopefully the machine is booting from the network. It is working right?? No? :(