This is a braindump with a bit of copy paste from my server.
If you (or anyone) needs any further clarification, or would like me to dust off the IPX and netboot it (using a serial console), let me know.
Most of the netbooting effort went into the sun4c (IPX), then moved onto sun4m (Sparc 5, should be OK with SS10/SS20), and then sun4u (Ultra 5/10).
Never got around to netbooting Solaris 8 and upwards (was on the to-do list for work and then dropped off).
For the record, you can ufsdump old Solaris UFS file systems by netbooting to Solaris 7 regardless of the release on disc.
Similarly, if you have ufsdumps generated from an old Solaris release, you can netboot to Solaris 7 to restore.
Braindump:
I've got a diskless SparcIPX (sun4c, pretty much a lunchbox version of the SS2).
This has booted to:
Solaris 1.1.2 (aka SunOS 4.1.4) (For old time's sake, it was the first version of SunOS I got trained and worked on back in the day)
Solaris 2.3, (because I had to support other systems, and I wanted a Solaris 2.3 environment to play with, even if those other systems were sun4m)
Solaris 7. (prototype for netbooting other boxes to allow network based backups)
Solaris version selection is clunky - need to edit files on the server to switch, never got as far as trialling some kind of boot menu on the client, or maybe trying some kind of specific boot path.
The server was last used to boot the IPX into an unpatched install of Solaris 2.3
The IPX is set to "boot net" on power up (dremmelled 48T02, with CR2032 holder+new crystal soldered on the back).
The boxes use RARPD, bootparamd and nfsd as detailed elsewhere in the thread
The objective was to get the box to boot diskless so that I could t
My server runs Slackware 13.37 x64 (old, v old) but it works. Attempts to create a backup solution using Slackware 15.0 failed (long story, see the end).
/etc/exports:
/home/data/sunos/export/root/sparcipx 192.168.x.y/255.255.255.255(fsid=1401,rw,sync,no_subtree_check,no_root_squash)
/home/data/sunos/export/exec/sparcipx 192.168.x.y/255.255.255.255(fsid=1402,rw,sync,no_subtree_check,no_root_squash)
Note the /32 netmask - the exec share could be expanded for more than one client, but the root is a "per client"
Hint:
The two shared "directories" are actually where two loopback mounted filesystems can be found.
/etc/fstab contains
/home/data/sunos/export/images/root.S23unp.sun4c.sparcipx.20210314 /home/data/sunos/export/root/sparcipx ext4 loop 0 0
/home/data/sunos/export/images/usr.S23unp.sun4c.sparcipx.20210314 /home/data/sunos/export/exec/sparcipx ext4 loop 0 0
and root.S23unp.sun4c.sparcipx.20210314 and usr.S23unp.sun4c.sparcipx.20210314 are/were 4Gb files that hold the respective file systems (Solaris 2.3 unpatched for sun4c for hostname sparcipx)
This constrains the total available space on the NFS share to 4G, so you will never get package installer scripts asking "How much free space on /usr and /" , receiving a message which cause an overflow which is interpreted as "no space"
The files were created using dd, and mkfs.ext4 <filename>
To be honest I can't remember how I generated contents of the file systems - the notes have been long lost. I have vague memories of either booting the SPARC box off CD-ROM, or using a Solaris x86 virtual machine to install the required Sparc packages to an alternate filesystem tree.
(The Solaris 1.1.2 install was done by installing to hard disk, booting off CDROM, mount NFS, copying across, edit as required).
Swap is exported as
/home/data/sunos/export/swap/ 192.168.x.y/255.255.255.248(fsid=1300,rw,insecure,no_subtree_check,no_root_squash)
Note 1: You are exporting the directory containing the swapfile (/home/data/sunos/export/swap/) see below for the actual swapfile
Note 2: The /29 subnet - this directory can serve more than one box
Swap
See /etc/exports above
For the ipx this is a 128Mb file with the T (sticky) bit set.
Size was set as memory*2 to suit Solaris 1.1.2 (and more than enough for anything else), and the box only supports upto 64Mb but had 56Mb fitted.
For Solaris 2.x onwards, use "normal rules"/common sense when defining the amount of space required.
Can't remember if I did any kind of mkswap type command. ISTR that Solaris just uses the space as is.
so the basic idea is
# dd if=/dev/zero of=/home/data/sunos/export/swap/sparcipx bs=1048576 count=128
# chmod 1600 /home/data/sunos/export/swap/sparcipx
# ls -alh /home/data/sunos/export/swap/sparcipx
and expect to see - note the "T":
-rw------T 1 root root 128M Jul 5 2021 sparcipx
/etc/bootparams (used by bootparamd)
sparcipx root=servername:/home/data/sunos/export/root/sparcipx swap=servername:/home/data/sunos/export/swap/sparcipx rootopts=:rsize=32768 domainname=myinternaldnsdomainname
Note the root entry points to a shared directory, swap points to a
file in a shared directory. Can't remember why I set rsize and boot failed if domainname wasn't set.
/etc/ethers (used by rarpd)
8:00:20:c0:ff:ee<tab>192.168.x.y
Replace the obviously madeup MAC (as seen in the Sun NVRAM/hostid FAQ) with the actual MAC of the client.
/tftpboot (or wherever your tftpboot "root" directory is sat)
For my IPX (sun4c) I have the following files/links
lrwxrwxrwx 1 root root 18 Mar 2 2021 C0A8458C.SUN4C -> inetboot.S23.sun4c
-rw-r--r-- 1 root root 162932 Feb 19 2020 inetboot.S23.sun4c
My version of tftpd is happy following soft links, your mileage may vary...
Server OS setup notes
At boot time:
bootparamd gets started using "/usr/sbin/rpc.bootparamd -s" (log to syslog)
rarpd gets started using "/usr/sbin/rarpd -v -e" (verbose on, respond if MAC is in /etc/ethers)
For my release of Slackware I used iputils-s20101006-x86_64-1 for rarpd and netkit-bootparamd-0.17-x86_64-2.
A lot of the setup was "smoke and mirrors" to be honest. The client tells you nothing other than something failed, the error reporting for the server functions varies from cryptic down to none at all.
When I came to create a virtual machine to be run using Virtualbox on a laptop, to allow netbooting of Solaris 7 on Sparc 5/Ultra 5/Ultra 10 to backup/restore Solaris 2.3 and Solaris 2.6. I tried using Slackware 15.0 (the latest release) as the server and I couldn't get NFS to work properly. I threw my hands in the air, said "sod it" and went back to using Slackware 13.37 as the thing was a "tool" not a production system).
If you are using Debian or Ubuntu you may have the same frustration, however once you find out which packages work, you'll find it a lot easier to recreate in the future

I stuck with Slackware as it's really easy for me to strip out unwanted/not needed stuff for a virtual machine which would spend most of its life consuming hard disc space.
Hope this helps