This is what I do in order to boot a diskless SPARCstation Classic with Linux. It probably works, with appropriate modifications, for newer Sparcs too.
Ten years ago, this was a pretty state of the art workstation. It has a 50 MHz SPARC processor, 24 megs of memory (EDO SDRAM?), 8 bit graphics connected to a fixed frequency 19" Sun monitor (somewhat too dark-ish after many years of duty), internal and external SCSI, and 10BaseT ethernet. What makes this computer usable today is it's ability to run Linux or *BSD reliably and reasonably fast, but hardly Solaris 8 since it doesn't want to install with less than 64MB of RAM.
When you've got an operating system running on the Sparcstation, you can install an X-server on it and use XDMCP to login to a server (install XDM, GDB or some other login manager on a server machine and use the -query or -broadcast flag when running X). Alternatively, skip login screens and start an X session logged in to a guest account on your server automatically at boot-up - this can be done with some SSH magic.
The Sparcstation Classic I've been plaing with didn't work very well, sometimes not at all, when connected to a switch. If problems arise, they can be solved by connecting a 10BaseT hub between the computer and the switch and/or tinkering with the link-test setting in the Sparcstation's Open Boot PROM.
Software
On the server computer you need (assuming you're going to run GNU/Linux on it):
In a moment I'll briefly explain what configuration is needed for each software package, but first have a look at how a Sparcstation netboots from a Linux server.
Daemon configuration
RARP
Go to ftp://ftp.dementia.org/pub/net-tools and fetch your rarpd or run apt-get install rarpd in Debian. Start it by typing rarpd.
rarpd reads ethernet to IP address mappings from /etc/ethers. Read man ethers and add the client MAC address to IP address mapping to the file, possibly using a name from /etc/hosts
If you don't know the hardware address, use tcpdump to watch the network while the Sparcstation tries to boot.
TFTP
This one's slightly more complicated. Get atftp from ftp://ftp.mamalinux.com/pub/atftp/ or apt-get install tftp in Debian.
Create a directory, say /netboot/tftpboot, and add this line to /etc/inetd.conf:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/local/sbin/in.tftpd /netboot/tftpboot
killall -HUP inetd to commit the changes.
You may now add your kernel to the /netboot/tftboot directory if you wish, as described in compiling a kernel for Sparc and making it available over TFTP.
BOOTP
Install bootpd (apt-get install bootp). Add this line to /etc/inetd.conf:
bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
killall -HUP inetd to commit the changes.
Create /etc/bootptab and add an entry for each host you wish to netboot:
hostname:ha=:ip=:\
:dn=:\
:sm=:\
:ds=:\
:gw=:
NFS server
Install a NFS server (apt-get install nfs-server).
Create the directory /netboot/nfs/<hostname>. This is where the root filesystem will go.
Add a line to /etc/exports sharing that directory:
/netboot/nfs/<hostname> <hostname or IP>(rw,no_root_squash)
Consider this share readable by anyone (at least if you are on a shared network) and choose passwords accordingly.
Now everything to boot a Sparcstation, except for the actual file system and possibly the kernel, should be in place.
Initial Linux installation
This is how you aquire a root filesystem to mount over NFS and a kernel to boot:
You may install your operating system over the network by sharing a netboot-capable kernel over TFTP and installing directly to the NFS share. You don't want to do this the first time (although I was forced to, not having a working floppy drive for the SUN and not wanting the hassle of burning a CD).
Install Linux to a disk and copy it to the NFS server
Connect a SCSI harddrive to the Sparcstation, boot it with install floppies or from a CD. Install to the harddrive. Compile a new kernel and copy the root filesystem to the NFS server.
Boot time kernel parameters
Read linux/Documentation/nfsroot.txt once again.
To boot a Linux 2.2.x kernel, type at the PROM command line:
boot net linux nfsroot=<your server's IP>:<path to NFS share> nfsaddrs=<client's addr>:<nfs server's addr>:<gateway>:<netmask>:<hostname>
To boot a Linux 2.4.x kernel, type:
boot net linux nfsroot=<your server's IP>:<path to NFS share> ip=<client's addr>:<nfs server's addr>:<gateway>:<netmask>:<hostname>
You might need to add root=/dev/nfs to the command line too.
Use the setenv PROM command to add this command line to the apropriate variables. Booting over the network can be automatically invoked when the system is powered on.
When we've booted
Now you should have a nicy and friendly login prompt.
What you want to do now is:
- Install Xsun.
- Setup SSH keys.
- Setup X to start in runlevel ≥3.
- Simplify the default boot scripts a lot.