blog:netboot_solaris

I have a Sparc based system (a MicroSparc II on a VME card) that is without a CDROM drive and has to be able to install SunOS or Solaris over the network (it has a local SCSI-2 disk and a fast Ethernet SBUS card).

I found some useful background information here on how to support Solaris network installations using just a Linux host:

http://hintshop.ludvig.co.nz/show/solaris-jumpstart-linux-server/

http://www.cs.toronto.edu/~cvs/unix/Solaris-Linux-NetInstall.html

http://www.znark.com/tech/solarisinstall.html


rarp

The Sparc machine doesn't do full DHCP from OpenBoot to acquire an IP address, netmask, gateway, DNS etc; it only does rarp, which needs *rarpd* running on our Linux host. We then have to add the ethernet address of our Sparc machine to /etc/ethers on the Linux host, as well as add an appropriate IP/hostname entry to /etc/hosts. For example:

echo "00:80:42:0b:17:dd sparky" >> /etc/ethers
echo "192.168.1.15 sparky" >> /etc/hosts

Run the rarp daemon in verbose mode (rarpd -v -d) and monitor syslog/messages for queries from the Sparc machine as it powers on. You should see a request for “00:80:42:0b:17:dd” being answered by “192.168.1.15”, if you don't have a matching entry yet, you'll see the following:

~# rarpd -d -v
rarpd[2326]: Building list of addresses per interface.
rarpd[2326]: link lo
rarpd[2326]:   addr 127.0.0.1/8 on lo
rarpd[2326]: link eth0
rarpd[2326]:   addr 192.168.1.111/24 on eth0
rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0
rarpd[2326]: not found in /etc/ethers
rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0
rarpd[2326]: not found in /etc/ethers
rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0
rarpd[2326]: not found in /etc/ethers
rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0
rarpd[2326]: not found in /etc/ethers
rarpd[2326]: RARP request from 00:80:42:0b:17:dd on eth0
rarpd[2326]: not found in /etc/ethers

Once you have the right ethernet address for the Sparc, rarpd will respond as such:

rarpd[3578]: RARP request from 00:80:42:0b:17:dd on eth0
rarpd[3578]: RARP response to 00:80:42:0b:17:dd 192.168.1.15 on eth0

The next step is supplying a kernel image to the booting Sparc machine. Note that modern versions of rarpd on Linux will also try to find a Sun kernel image, if you already have a working tftp server elsewhere ignore that feature of rarpd by running it with the -e flag: rarpd -d -v -e.

tftp

As the machine starts to boot it will make a request via TFTP, to the same server that it received a rarp request from, for a kernel image.

In my case:

Feb 17 16:43:56 curse tftpd[4446]: tftpd: serving file from /export/tftp
Feb 17 16:44:05 curse tftpd[4478]: tftpd: trying to get file: C0A8010F.SUN4M

The name of the kernel image will depend on the IP address that you have assigned to the Sparc machine. Unfortunately it's in hexadecimal format. In the case of assigning 192.168.1.15, as above, you can calculate the filename as follows:

$ printf "%02X%02X%02X%02X" 192 168 1 15
$ C0A8010F

A boot kernel then needs to be copied from your relevant Solaris installation cd images (Solaris 2.6 in my case) and dropped in to the root of the TFTP server.

So I had to do this:

cp /mnt/iso/Solaris_2.6/Tools/Boot/usr/platform/sun4m/lib/fs/nfs/inetboot /export/tftproot/C0A8010F.SUN4M

Note that you need to copy the correct architecture kernel image for your hardware - in my case the MicroSparc II is a sun4m platform. Note also that the inetboot kernel on Solaris 2.6 is stored in a different path on the CD compared to later versions; Solaris 7, 8 and higher have it here:

/mnt/iso/Solaris_[NUMBER]/Tools/Boot/platform/sun4m/inetboot

Reboot the Sparc machine and you should see it load the new kernel image from your tftp server.

Now we need to tell the booting kernel where to find the root filesystem and where to load the installation CD contents from…

bootparams

During install, the Solaris kernel sends out a request to the bootparam daemon on the Linux host to request the correct parameters for the installer (remember that rarp only does basic IP assignment and tftp then only sends a kernel image - we still need to supply any needed kernel boot parameters in the same way we would do for Linux using dnsmasq/PXE).

Install bootparamd on your Linux host and add an entry to /etc/bootparams:

sparky root=linuxbox:/export/tftp/solaris/Solaris_2.6/Tools/Boot \
        install=linuxbox:/export/tftp/ \
        rootopts=:rsize=32768 \
        boottype=:in 

Obviously sparky must match the hostname you're assigning to the Solaris host, and the root and install paths should mirror where you have unpacked the Solaris installation CD images.

NFS

TBC


Using solid state drives on Solaris/Sparc - aka compact flash or SD.

Solaris needs drive geometry setting if you don't have a SCSI drive that is detected by the installer (which, if you don't have an original Sun branded SCSI drive, it won't be). Here are some common compact flash/SD card sizes in CHS format:

Capacity Cylinders Heads Sectors
512MB 1024 16 63
1,024MB 1,986 16 63
2,048MB 3,970 16 63
4,096MB 7,964 16 63
8,192MB 31,769 16 63
16,384MB 63,538 16 63

These will need to be entered during the installer so that it can recognise the drive.

  • blog/netboot_solaris.txt
  • Last modified: 2019/02/17 16:45
  • by john