Linux as a Jumpstart Server

(C) Copyright Scott Howard, 2002
scott@doc.net.au

This document describes how to use a Linux machine as a Jumpstart server to install a Solaris machine.

This procedure will only work for installing Solaris 8. Earlier version of Solaris require the Linux kernel to be modified in order to work.

The instructions below are based on using a RedHat 7.2 machine for the Jumpstart server. Any version/distribution of Linux should be able to be used, but the exact commands/etc will vary slightly from version to version.

For more information on setting up a Jumpstart server, see http://www.docbert.org/Solaris/Jumpstart/

Before you start you'll need to make sure the required services are installed on your Linux box. You'll need to have the following installed :

You can Confirm these are installed with the following :

[root@jsserv /]# rpm -q rarpd nfs-utils bootparamd tftp-server
rarpd-ss981107-9
nfs-utils-0.3.1-13
bootparamd-0.17-7
tftp-server-0.17-14
[root@jsserv /]#
If any of the packages are not installed it will tell you so, and you will need to isntall them.

For RedHat 7.2, nfs-utils and rarpd are on the first CD, bootparamd and tftp-server are on the 2nd, all in /RedHat/RPMS

Install the packages with (for example) :

[root@jsserv RPMS]# rpm -i rarpd-ss981107-9.i386.rpm
[root@jsserv RPMS]# rpm -i bootparamd-0.17-7.i386.rpm
[root@jsserv RPMS]# rpm -i tftp-server-0.17-14.i386.rpm
Next we need to make sure all of these services are enabled (even if they were already installed they may not be enabled)

Run "setup", and under "System Services" enable each of "tftp", "rarpd", "bootparamd" and "tftp" to start automatically.

If any of these services were not set to start automatically you'll need to either start them manually now, or just reboot.

rarpd and bootparamd are both stand-alone services, so you can (re)start them with :

[root@jsserv mnt]# service rarpd restart
Stopping rarpd:                                            [FAILED]
Starting rarpd:                                            [  OK  ]
[root@jsserv mnt]# service bootparamd restart
Stopping bootparamd:                                       [FAILED]
Starting bootparamd:                                       [  OK  ]
(The FAILED is because the services were not already running).

tftpd runs under xinetd, so in order to start it you'll need to tell xinetd to re-read it's configuration file :

[root@jsserv mnt]# service xinetd reload
Reloading configuration:                                   [  OK  ]
Now that the server has everything we need installed, we need to setup the Jumpstart image.

First, create a new directory to install the image into :

[root@jsserv mnt]# mkdir -p /jumpstart/sol8
Next, put the "Solaris 8 Software 1 of 2" CD-ROM, or the "Solaris 8 Operating Environment" DVD into the drive, and mount it :
[root@jsserv /]# mount -o ro /dev/cdrom /mnt
Confirm that we've got the correct CD :
[root@jsserv /]# cd /mnt
[root@jsserv mnt]# ls -a
.   .cdtoc     .install_config  Solaris_8
..  Copyright  .slicemapfile    .volume.inf
[root@jsserv mnt]# cat .volume.inf
VI"SOL_8_202_SPARC"
And then copy it from the CD/DVD to the server :
[root@jsserv mnt]# tar cf - . | (cd /jumpstart/sol8 && tar xfp - )
If you're installing off CD (rather than DVD) you also need to copy what's on the 2nd CD.

Eject the current CD :

[root@jsserv /]# cd /
[root@jsserv /]# eject cdrom
Remove the CD and replace it with the "Solaris 8 Software 2 of 2" CD. Mount it, and confirm we have the correct CD :
[root@jsserv /]# mount -o ro /dev/cdrom /mnt
[root@jsserv /]# cd /mnt
[root@jsserv mnt]# cat .volume.inf
VI"SOL_8_202_SPARC_2"
This time we only copy the Solaris_8/Products directory, but we also need to copy and rename the volume.inf file :
[root@jsserv mnt]# cp .volume.inf /jumpstart/sol8/.volume.inf.2
[root@jsserv mnt]# tar cf - Solaris_8/Product | (cd /jumpstart/sol8 && tar xfp - )
If you want to copy the Early Access (EA) software onto the Jumpstart server you can do this with :
[root@jsserv mnt]# tar cf - Solaris_8/EA | (cd /jumpstart/sol8 && tar xfp - )
Next we need to NFS share the Jumpstart directory :
[root@jsserv /]# echo '/jumpstart *(ro,no_root_squash)' >> /etc/exports
Check if the NFS server is running :
[root@jsserv /]# service nfs status
rpc.mountd is stopped
nfsd is stopped
rpc.rquotad is stopped
[root@jsserv /]#
If it's not, start it :
[root@jsserv /]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
[root@jsserv /]#
Otherwise just tell it to re-read the the changes we have made to /etc/exports :
[root@jsserv /]# exportfs -a
[root@jsserv /]#
At this point our Jumpstart server is setup. Next we need to tell it about the client we're going to install.

Find out the MAC address of the machine you want to install using the "banner" command from the ok prompt :

ok banner
Sun Ultra 1 UPA/SBus (UltraSPARC 167MHz), No Keyboard
OpenBoot 3.25, 512 MB memory installed, Serial #9367254.
Ethernet address 8:0:20:81:23:45, Host ID: 808eeed6.
So the clients MAC address is 8:0:20:81:23:45
Add an entry for this client to the /etc/ethers file :
[root@jsserv /]# echo "8:0:20:81:23:45 jsclient" >> /etc/ethers
and an entry to the hosts file :
echo "203.35.207.65           jsclient jsclient.mydomain.com" >> /etc/hosts
and to the bootparams file :
echo "jsclient  root=jsserv:/jumpstart/sol8/Solaris_8/Tools/Boot install=jsserv:/jumpstart/sol8 boottype=:in" >> /etc/bootparams
Next, we need to copy the boot image into the tftpboot directory. This image is different for each different architecture, so you'll need to copy in a new one for each architecture you want to boot from the server :
[root@jsserv /]# cp /jumpstart/sol8/Solaris_8/Tools/Boot/usr/platform/sun4u/lib/fs/nfs/inetboot /tftpboot/inetboot.sol8.sun4u
The Jumpstart client will try and access this client based on a hex representation of it's IP address. eg, for the IP address 203.35.207.67 we have :
DecimalHex
203CB
3523
207CF
6541

So our boot file needs to be called CB23CF41
The easiest way is just to use a symlink from the real image to this name :

[root@jsserv /]# cd /tftpboot/
[root@jsserv tftpboot]# ln -s inetboot.sol8.sun4u CB23CF41
Some systems also require this file have the architecture in the name, so create another symlink for that as well (all in UPPERCASE) :
[root@jsserv tftpboot]# ln -s inetboot.sol8.sun4u CB23CF41.SUN4U
At this point you should be able to boot the client from the network :
ok boot net - install
Boot device: /sbus/SUNW,hme@e,8c00000  File and args: - install
SunOS Release 5.8 Version Generic_108528-13 64-bit
Copyright 1983-2001 Sun Microsystems, Inc.  All rights reserved.
[...]
After a while the install will display a line like :
Configured interface hme0
and then appear to hang. At this stage you will need to ping the client once from the jumpstart server and the install will continue :
[root@ls /]# ping -c 1 jsclient
All being well you should now be able to manually configure and install your client!

The next step is to configure Jumpstart to allow hands-free installs. This process is mostly the same as for a Solaris Jumpstart server, described at http://www.docbert.org/Solaris/Jumpstart/

Once you have setup a sysidcfg and/or install_config directory you'll need to add pointers to them into the client entry in /etc/bootparams :

sysid_config=jsserv:/jumpstart/sol8/conf/server/sysidcfg
install_config=jsserv:/jumpstart/sol8/conf/server
(These need to go on the same line as the other options for each client).