Copyright © 2000, 2001, 2002 by The FreeBSD Documentation Project
This text describes how to install and boot the sparc64 port. Only net-booting of the kernel is covered right now.
Warning: The kernel and userland binaries mentioned below are highly experimental (for example, the kernel contains some ATA changes and eeprom handling code). Unless you know what you are doing and are willing to cope with any damage that might arise, you should probably not be trying this! So, use at your own risk!
A sparc64 kernel is booted by having the firmware retrieve and execute a loader program, which in turn fetches and executes the actual kernel. For this boot process you need to set up rarpd and tftp (for the firmware) and bootp (for the loader) on another networked machine. The loader can fetch a kernel using tftp or NFS. All of this is covered in detail below.
You need to add an for the Ethernet address of your sparc box to /etc/ethers on the netboot server. An entry looks like:
Make sure your.host.name is in /etc/hosts or has a valid DNS entry (or use an IP). Then, start rarpd on a network interface that is on the same segment as the sparc machine. For example, if you were using a xl0 network card, you would type rarpd xl0.
Activate tftp in your inetd configuration by uncommenting the tftp line :
tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot
You will then need to download a FreeBSD/sparc64 loader for tftp to serve to your sparc client. There are currently two loaders to choose from :
http://people.freebsd.org/~tmm/loader.gz - (for loading the kernel over tftp).
http://people.freebsd.org/~tmm/loader-nfs.gz - (for loading the kernel via nfs).
Copy the unpacked loader to /tftpboot, and name it after host IP in upper-case hexadecimal notation (or use symlinks). For example, your setup may look like this :
lrwx------ 1 tmm users 9 Jul 24 17:05 /tftpboot/C0A80033 -> boot/loader
-rw-r--r-- 1 tmm users 1643021 Oct 20 18:04 /tftpboot/boot/loader
Create entries for you sparc box in /etc/bootptab :
.default:\ :bf="kernel":dn=local:ds=<your name server>:\ :gw=<your gateway>:ht=ether:hd="/tftpboot/boot/kernel":hn:\ :rp="<your nfs/tftp server>:<your NFS root directory>":\ :sm=<your netmask> luthien:\ ha=<Ethernet address>:ip=<IP of the sparc box>:tc=.default
The Ethernet address must be the same like the one in the tftp example above, but it is specified differently: also in hex, but without colons (something similar to ``0003ba0b92d4'' in that notation). If you aren't using NFS for booting, just use a bogus value (like just '/') for the NFS root directory (this will be fixed later, when 'ts' will become the property to use). The strings given in the 'bf' and 'hd' properties are assembled to the boot file name (if you are booting using tftp). If your kernel is named differently or you use another directory, change these values as required. If you are booting using nfs, remove the 'bf' and 'hd' settings (or change them to specify the directory and file inside the NFS root hierarchy in which the kernel will reside).
Note that bootpd conflicts with dhcpd. dhcpd can also be set up accordingly.
Place the kernel in the directory specified using 'bf' and 'hd' in the bootp setup as above. That should be all that's needed.
Export the root directory that was specified in bootp over NFS, and place the kernel as 'boot/kernel/kernel' inside it (or, if you use 'bf' and 'hd', the file name you have specified this way).
If all goes well, you can now boot the kernel from the sparc by dropping into OpenFirmware (if your box boots another OS automatically, press L1-A or Stop-A to get there, or send a break over the serial console). Now, just type boot net and The Right Thing should happen. Specifically, the loader is retrieved via tftp, it does then do a bootp request and will proceed to load the kernel. Then, it should wait 10 seconds and proceed to execute the kernel.
If something does not work in between, and you suspect tftp/nfs/bootp problems, ethereal is usually a good help. The most common problems are bad file permissions. Also note that rarpd will not answer to packets under some circumstances, refer to the man page for details.
A tarball with many static userland binaries is available here. This does not contain init, which you can get here. You also need a half-way filled /etc and /usr/share; it's probably best to take them from a working box. Boot in single user first, and use pwd_mkdb and cap_mkdb /usr/share/misc/termcap to make sure the db files are correct. Don't forget to adapt rc.conf; I use this minimal one for my Blade 100 :
hostname="<pick one>" defaultrouter="<ip>" ifconfig_gem0="inet <ip> netmask <ip>" network_interfaces="gem0"
You also need to adapt /etc/ttys: remove all the ttyv* entries, and enable the one for the serial console you use, e.g. on a Blade 100 using sio:
ttyd0 "/usr/libexec/getty std.9600" vt100 on secure
If you need the ofw console (the local keyboard / mouse, accessed through OpenFirmware) :
ofw_console "/usr/libexec/getty std.9600" vt100 on secure
That should get the machine to multi user mode if I haven't forgotten anything. There are some binaries missing in the tarball (awk for example), so some things might be broken.
You can use an empty partition (or one where the files in the archive do not collide with existing ones). The kernel mentioned above contains support for Sun disklabels, so you can use a Solaris partititon, which may even be newfs'ed from Solaris (I do that on my box), or a NetBSD one, of course. DO NOT fsck file systems modified by FreeBSD on Solaris, it damages the file permissions!
Specify this partition on the mountroot prompt (use a format like ufs:<disk><parition>, i.e. leave the slice specification out).
If you are using a kernel with NFS_ROOT support, the above bootp entries should suffice to have the kernel find and mount the root file system via NFS.
This file, and other release-related documents, can be downloaded from ftp://current.FreeBSD.org/pub/FreeBSD/.
For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
All users of FreeBSD 5-CURRENT should subscribe to the <current@FreeBSD.org> mailing list.
For questions about this documentation, e-mail <doc@FreeBSD.org>.