Network booting FreeBSD on sparc64 systems
*BSD, Hardware, Open Source, Sun Microsystems and SPARC June 13th, 2007I’ve been network booting SPARC systems for a while now, ever since my last run in with a faulty floppy drive on a SPARCstation 2. NetBSD makes it easy - the standard installation includes a diskless client filesystem which can simply be extracted onto the boot server. It wasn’t quite so straightforward with FreeBSD, so here are a few pointers…
My boot server is running NetBSD 3.1 and I booted FreeBSD 6.2, so if you’re using different software you may need to make some adjustments. YMMV.
- On the boot server, configure rarpd(8) as usual, adding the entry for your machine’s MAC address to /etc/ethers. For example (for a machine called test02):
08:00:20:b2:2f:b6 test02 - Extract the FreeBSD base fileset to the appropriate location on your boot server (for example, /export/install/fb62_sp64).
- Extract the FreeBSD GENERIC kernel fileset to boot/ in your diskless filesystem.
- Within your diskless root, symlink boot/GENERIC to boot/kernel (boot/GENERIC is a directory that contains the kernel and its modules).
- Put boot/loaders from the diskless filesystem into your tftp root directory and symlink it to your machine’s IP address in hex. For example, the filename for 192.168.1.92 is C0A8015C.
- Export your diskless root filesystem via NFS and add the necessary dhcpd.conf stanza. For example:
host test02.pimp.org.za {
hardware ethernet 08:00:20:b2:2f:b6;
fixed-address 192.168.1.92;
option host-name "test02";
option root-path "/export/install/fb62_sp64";
} - Boot your machine - “boot net” from the PROM should do it.
A few tips:
- It’s normally a good idea to update the machine’s OpenBoot PROM to the latest release. Old PROMs often have subtle bugs.
- Extracting FreeBSD filesets is simple:
cat 6.2-RELEASE/base/base.* > /tmp/base.tar.gz
tar -xzvpf /tmp/base.tar.gz -C /export/install/fb62_sp4
Update: Fixed incorrect command to extract sets (thanks John Messenger!)

June 13th, 2007 at 4:13 pm
> cp 6.2-RELEASE/base/base.* > /tmp/base.tar.gz
This looks wrong. I think you mean
cat 6.2-RELEASE/base/base.* > /tmp/base.tar.gz
Regards,
— John
June 13th, 2007 at 4:18 pm
Whoops, you’re right - thanks. I’ll correct it now.