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
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 -dfafter building run bootparamd with
# ./bootparamd -drarpd
# ./rarpd -d -l enp5s0teaftp for teaftp you are gonna run it within the folder where you have your inetboot
# teaftpand finally make sure your nfs server is running
# systemctl start nfs-server.serviceFinally 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? :(