FreeBSD/sparc64 5.0-CURRENT Installation Instructions

The FreeBSD Project


This article gives some brief instructions on installing FreeBSD/sparc64 5.0-CURRENT. Please keep in mind that this port is a work in progress, and as such, the installation procedure is much more involved than FreeBSD/i386 or FreeBSD/alpha.


1 Installing FreeBSD

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!


1.1 Configuring the netboot server.

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.


1.1.1 rarpd

You need to add an for the Ethernet address of your sparc box to /etc/ethers on the netboot server. An entry looks like:

    0:3:ba:b:92:d4 your.host.name

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.


1.1.2 tftpd

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 :

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


1.1.3 Setting up bootpd

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.


1.1.4 Loading the kernel over tftp

Place the kernel in the directory specified using 'bf' and 'hd' in the bootp setup as above. That should be all that's needed.


1.1.5 Loading the kernel over NFS

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).


1.2 Booting

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.


1.3 Userland

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.


1.4 Root file systems

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>.