SunBlade 100!
When Mike gave me a serial console, he also sent me home with a SunBlade 100 workstation and a matching LCD (unfortunately he has no spare keyboards, but I can deal). It had no hard disk, but was otherwise complete, and he made sure to use one of his working keyboards to put it into prom mode (otherwise I’d need a serial terminal to send a break signal to interrupt the boot, apparently? Oh how I wish I had one of those!) before he sent it off.
Today after work, for want of something to do, I played around with it a bit. After speaking with someone who used to work at Sun, they said it was unlikely I would find a copy of Solaris that was suitable for it (they’re picky I guess?), and that one of the BSDs would be the best bet. NetBSD it is, if only for something different (my X-serve has OpenBSD already). I downloaded an ISO, burned it to a CD-R, stuck it in the drive and ran boot cdrom
and… nothing. It doesn’t like the disc. Not sure if it’s because the brand of CD-R is disagreeable or the drive is not working.
I thought for a moment about where the fuck I would have put the ATAPI CD-ROM drive I used to put the hacked OS on my OG Xbox, and then I thought “hey, I can try netbooting it”. There are several guides out there, but all are in some shape way or form incomplete for my purposes.
The first step was setting up DHCP to send the bootp configuration. This isn’t really the first step, you can do other stuff before you run into it, but it’s the first thing I did. This was problematic because my DHCP server is my Unifi UDM-SE, and while I thought about setting up a VLAN so I could have another DHCPd on there instead, I thought that might be a bit rough to get internet after the fact, and this should be doable.
Since I already have custom dnsmasq configurations for things like Steam Cache, it was pretty trivial to throw at the end of that config:
dhcp-option=option:root-path,/export/sunblade/root
dhcp-option=option:server-ip-address,<ip of nfs server>
A quick kill
of the dnsmasq process to restart it and we’re off to the races. Could I have limited the scope of this to only the Sun? Sure, but it didn’t matter, as it’s only temporary.
Next, it’s over to my temporary Ubuntu Jammy machine which is going to be my NFS and TFTP server. Install some packages, unwrap NetBSD in the correct place, and configure tftpd:
apt install nfs-kernel-server tftpd-hpa
mkdir -p /export/sunblade/root
cd /export/sunblade/root
wget http://ftp.netbsd.org/pub/NetBSD/NetBSD-10.0/sparc64/binary/kernel/netbsd-GENERIC.gz
gunzip netbsd-GENERIC.gz
mv netbsd-GENERIC netbsd
wget http://ftp.netbsd.org/pub/NetBSD/NetBSD-10.0/sparc64/installation/misc/instfs.tgz
tar -zxvf instfs.tgz
cat > /etc/ethers
<mac of netboot client> <ip of netboot client>
^D
cd /srv/tftp/
wget http://ftp.netbsd.org/pub/NetBSD/NetBSD-10.0/sparc64/installation/netboot/ofwboot.net
# replace with hex represenation of netboot client IP address
mv ofwboot.net 0A000002
# note: rw is required, netbsd sysinst won't proceed without it for some reason?
cat > /etc/exports
/export/sunblade/root *(rw,no_root_squash,no_subtree_check)
^D
exportfs -rav
Now if like me you get “Unknown error: code 60” and an ICMP “port unreachable” error when you tcpdump
to try work out what the fuck is going on, edit /etc/nfs.conf
and turn udp on and nfsv2 on (not sure if v2 is required, but the NetBSD docco mentioned it somewhere):
[nfsd]
udp = y
vers2 = y
Then restart the nfs service and run boot net netbsd
at the ok
prompt and it should eventually start sysinst for you. The rest of the install is fairly trivial.