Building and Using
a JumpStart Server










This document details the setting up and use of a JumpStart server to automate the installation of the Solaris Operating Environment (OE) on a Sparc-based system.










What is JumpStart?



Introduced in 1995, Sun Microsystems intends that the JumpStart technology be used to facilitate the installation of the Solaris Operating Environment (Solaris OE) by providing a mechanism with which to perform the installation over a network. JumpStart allows a rapid and consistent installation of the Solaris OE and reduces the chance of human error, thereby potentially improving both system availability and reliability. If a system administrator has one hundred (or more) workstations requiring a new Solaris OE, it makes sense to invest a few hours in building a JumpStart server that will automate the process rather than manually installing the OE on each of the hundred or more workstations from multiple CDs.

The JumpStart framework is a component of the Solaris OE and may be used for an interactive installation or an automatic hands-free installation of the OE. Clearly, however, the most useful aspect of JumpStart lies in its hands-free capability.










What's the Big Deal?



The building and use of a JumpStart server should be fairly straightforward and when the installation runs smoothly it is straightforward. A system administrator experienced with JumpStart can get a JumpStart server up and running in a few hours - much of this time is spent waiting for the CD installation media to be read and copied. However, for the uninitiated, there can be a number of bewildering problems (often network related and not directly a problem with JumpStart itself) and even system administrators well experienced with Solaris can find debugging problems associated with the installation problematic. Documentation related to the building and use of a JumpStart server is not readily available (although the recently published 'Sun BluePrints JumpStart Technology' by John S. Howard and Alex Noordergraaf, Prentice Hall, 2002, does much to address this).










JumpStart Overview



The JumpStart technology operates on a client/server model, where the server is the boot, configuration and installation servers described below and the client is the workstation upon the which the OE is to be installed.
The boot server provides a fail-safe OE to the client. This fail-safe OS, called the miniroot, is a small version of the Sun OE kernel, drivers and utilities necessary to boot the system. The miniroot is generic, yet feature-rich enough to bring an arbitrary Sparc or Intel system up to a minimum SunOS level; it is hardware and architecture independent and contains only the drivers and utilities that are necessary for this minimal OE.



The configuration server provides information to the client about its profile, i.e. partition sizes, software packages to install, begin and finish scripts (for installing OE patches to fix bugs, security holes, etc.)
The install server is the source for the software packages that comprise the OE which is to be installed (specified by the configuration server.)



All three servers are often, though not necessarily, situated on one server machine. The step-by-step procedure for the building of a JumpStart server included towards the end of this document deals with the situation where all three server are situated on the same physical host. When the servers have been built and configured for the client, the client must be added to the server with the add_install_client command. The client is then ready for installation. The client is powered up, the boot process is halted by entering Stop+A to get the open boot prompt and then the install is started by entering boot net - install. If everything has been correctly configured, the client will have an operational and optionally fully-patched OE in about a couple of hours (this time depends upon the hardware and speed of the network, and also upon the number of packages to be installed).










Behind the Scenes - How the Install Works



When the client is powered up, the boot programmable read-only memory (PROM, analogous to the BIOS on an Intel-based system) broadcasts a RARP (reverse address resolution protocol) request to the network. The RARP request essentially states: 'My MAC address is xx:xx:xx:xx:xx:xx. What is my IP address?' where the MAC address is a unique number associated with the Ethernet card installed in the client, thereby identifying the client. The boot server receives this RARP request, compares the MAC address with entries in its /etc/ethers file to get the client name, uses the client name to retrieve the IP address from its /etc/hosts file and returns this IP address to the client.



When the client has received its IP address, it requests that the miniroot be downloaded to this IP address using TFTP (trivial file transfer protocol). When the miniroot has been transferred, the client uses it to boot.
At this point, the second phase of the installation starts. The bootable JumpStart image (miniroot) on the client requests the boot parameters from the boot server. The server has this information (which specifies where the client's root filesystem is located) in its /etc/bootparams file. The boot program on the client then mounts the specified directory containing the filesystem, using NFS-mount. The installation begins; when the client requires more of the new Solaris image than can be provided by the boot server, the client mounts the install server and downloads information directly from that server.



When the client needs configuration information, it broadcasts a request for the sysidcfg file. The boot server responds to this request, issuing the configuration server IP address and the path to the sysidcfg file.
Phase three of the install commences when the JumpStart client console displays a message that indicates that the custom software installation is starting. The client searches for a rules.ok file on the install server (if one is not found, the installation drops back to an interactive install, prompting the user for configura information) and parses the file for a profile specifying install type, partitions and packages. Then the rules.ok file is checked to see if any begin scripts are specified; if so, they are executed now. A typical use of a begin script is to back up data before the new installation. The contents of the profile configuration file are now implemented, formatting and partitioning the disk and then installing the specified packages that make up the Solaris OE install.



After the software install is finished, the client executes any finish scripts specified in the rules.ok file. If there are no finish scripts, the system reboots and the installation is complete.



A example of a JumpStart server building and the configuration of a client follows.










A Sample JumpStart Server Installation



Three separate servers comprise the JumpStart server: a boot server; a configuration server; and an install server. In our example, all these servers are on the same machine; this is a fairly typical situation. The server has hostname server. Perform the following as root.






Change directory to root




server# cd
server# pwd
/
server#









Create the following directories (note that the Solaris directory name corresponds to the Solaris 8 0202 version).




server# mkdir JUMPSTART
server# cd JUMPSTART
server# mkdir OS Patches Profiles Sysidcfg Finish
server# cd OS
server# mkdir Solaris  8  2002-02









Download the latest patch cluster from http://sunsolve.Sun.COM/ to the Patches directory and unzip the cluster file:




server# cd /JUMPSTART/Patches
server# ls
8  Recommended.zip
server# unzip 8  Recommended.zip
.
.
.
server# ls
8  Recommended 8  Recommended.zip
server#









If the JumpStart server is not up-to-date with the latest patch cluster, install the patches now. This will take between one and two hours.




server# cd /JUMPSTART/Patches/8  Recommended
server# ./install  cluster
.
.
.
server# reboot









Install the boot and install servers:



These installations are performed simultaneously when both servers are hosted on the same machine. (The commands for separate boot and install servers are slightly different.) Typically, this process takes in excess of one hour.



Insert Solaris CD Software 1 of 2 in the CD drive




server# cd /cdrom/cdrom0/s0/Solaris  8/Tools
server# ls
Boot dial setup  install  server add  install  client rm  install  client
server# cd
server# /cdrom/cdrom0/s0/Solaris  8/Tools/setup  install  server /JUMPSTART/OS/Solaris  8  2002-02
Verifying target directory...
Calculating the required disk space for the Solaris  8 product
.
.
.
Install Server setup complete
server#









Insert the Software 2 of 2 CD in the CD drive. This process takes about fifteen minutes.




server# cd /cdrom/cdrom0/Solaris  8/Tools
server# ls
Installers add  to  install  server installer  source
server# cd
server# /cdrom/cdrom0/Solaris  8/Tools/add  to  install  server /JUMPSTART/OS/Solaris  8  2002-02
The following products will be copied ...
.
.
.
Processing completed successfully
server#









The required Solaris OE source is now installed. Share the /JUMPSTART directory by appending the following 'share' entry to the dfstab file and then calling 'shareall'




server# cat >> /etc/dfs/dfstab
share -F nfs -o ro,anon=0 -d "JUMPSTART dir" /JUMPSTART
^D
server# shareall
server# /etc/init.d/nfs.server start
server# dfshares
RESOURCE SERVER ACCESS TRANSPORT
server:/JUMPSTART server - -
server#









At this stage, the server can JumpStart a suitably configured client. This installation will be interactive, prompting the user to answer questions about the disk layout, packages to install, etc. To take advantage of a non-interactive installation, a configuration server is needed.






Install the configuration server:



The 'sysidcfg' file is used to pre-configure system configuration for the client. Create a sub-directory for the 'sysidcfg' file. (There must be a separate directory for each Solaris OE installed on the JumpStart server since new releases of the OE may introduce new keywords not recognized by previous versions.)







server# cd /JUMPSTART/Sysidcfg
server# mkdir Solaris  8
server#









Create a 'sysidcfg' file, containing the required configuration. The encrypted form of the root password can be found in the /etc/shadow file.




server# cd /JUMPSTART/Sysidcfg/Solaris  8
server# cat > sysidcfg
name  service=NONE
root  password=rT0qcERINf8b2
system  locale=C
timeserver=localhost
terminal=vt100
security  policy=NONE
network  interface=PRIMARY {netmask=255.255.255.0 protocol  ipv6=no default  route=129.155.57.200}
timezone=Canada/Mountain
^D
server# chmod 444 sysidcfg
server#









Create a profile file:




server# cd /JUMPSTART/Profiles
server# cat > any  machine.profile
install  type initial  install
system  type standalone
root  device c0t0d0s0
partitioning explicit
filesys c0t0d0s1 1024 swap
filesys c0t0d0s0 free /
cluster SUNWCXall
^D
server# chmod 444 any  machine.profile









Write a finish script to automate various post-installation procedures. In this case, the script controls the installation of patches from the most current patch cluster and the removal of the autoshutdown prompt when the system reboots.




server# cd /JUMPSTART/Finish
server# cat > any  machine.finish
#!/bin/sh


#note: `uname -r` must be enclosed in single back quotes!
OE_Version=`uname -r`

case ${OE_Version} in
5.8)
PATCH_DIR=8_Recommended
;;
5.9)
PATCH_DIR=9_Recommended
;;
esac

cd ${SI  CONFIG  DIR}/Patches/${PATCH_DIR}

#note: `cat patch  order` must be enclosed in single back quotes!

for patch in `cat patch  order`
do
echo "adding patch: $patch"
patchadd -R /a $patch
echo "added: $patch"
done

touch /a/noautoshutdown

^D
server# chmod 555 any  machine.finish
server#









The rules file specifies a profile and a finish script for each system (or group of systems) to be installed. In our case, we use a single rule for all Solaris 8 installations.




server# cd /JUMPSTART
server# cat > rules

#keyword value beginscript profile finish_script

#this entry, which matches anything, should go last
any - - Profiles/any  machine.profile Finish/any  machine.finish

^D
server#









Validate the rules file. If the 'rules' file is OK, the 'check' script produces a 'rules.ok' file.




server# cd /JUMPSTART
server# ls
Finish OS Patches Profiles Sysidcfg rules
server# cp /JUMPSTART/OS/Solaris  8  2002-02/Solaris  8/Misc/jumpstart  sample/check .
server# ls
Finish OS Patches Profiles Sysidcfg check rules
server# ./check
Validating rules...
Validating profile Profiles/any  machine.profile...
The custom JumpStart configuration is ok.
server# ls
Finish OS Patches Profiles Sysidcfg check rules rules.ok
server# cat rules.ok
any - - Profiles/any  machine.profile Finish/any  machine.finish
# version=2 checksum=5794
server#









Problems encountered during a JumpStart installation are frequently network issues. For instance, the client may find some stray JumpStart server out on SWAN rather than the intended server. To circumvent this problem, we either run the JUMPSTART server on an isolated private network or connect the JumpStart server directly to the client with a cross-over cable. To stop the JumpStart server from attempting to reach a network from which it has been disconnected, do the following:




server# cp /etc/nsswitch.files /etc/nsswitch.conf
server#









The JumpStart server is now ready. To install an OS on a client, perform the client configuration detailed below, power up the client machine and then halt the boot with 'Stop+A' to get the open boot prompt. To commence the JumpStart installation, enter the following command (maintaining the spaces as indicated).




ok> boot net - install











A Sample JumpStart Client Configuration



The client's MAC address and IP address must be added to the /etc/ethers and /etc/hosts files on the JumpStart server. The MAC address can be found from the client by reading it from the banner displayed when the client is powered up. When the banner is visible, enter Stop+A to interrupt the boot process.






Add the MAC address to /etc/ethers:




server# cat /etc/ethers
8:0:20:9e:63:1a ultra60  sys158
.
.
.
0:3:ba:0:d3:bc blade1000  sys234
server# cat >> /etc/ethers
8:0:20:b9:58:21 new  client
server# cat /etc/ethers
8:0:20:9e:63:1a ultra60  sys158
.
.
.
0:3:ba:0:d3:bc blade1000  sys234
8:0:20:b9:58:21 new  client
server#









Add the IP address to /etc/hosts:




server# cat /etc/hosts
127.0.0.1 localhost
129.155.57.37 server loghost
129.155.57.158 ultra60  sys158
.
.
129.155.57.234 blade1000  sys234
server# cat >> /etc/hosts
129.155.57.xxx new  client
^D
server# cat /etc/hosts
127.0.0.1 localhost
129.155.57.37 server loghost
129.155.57.158 ultra60  sys158
.
.
129.155.57.234 blade1000  sys234
129.155.57.xxx new  client
server#









Add the install client to the boot server:




server# cd /JUMPSTART/OS/Solaris  8  2002-02/Solaris  8/Tools
server# ls
Boot Installers add  install  client dial rm  install  client setup  install  server
server# ./add  install  client -s server:/JUMPSTART/OS/Solaris_8_2002-02 -c server:/JUMPSTART -p server:/JUMPSTART/Sysidcfg/Solaris_8 new  client sun4u
updating /etc/bootparams
server#





Note: The -s option above is not required if there is only one boot image in the /JUMPSTART directory; in that case, the add_install_client script automatically writes the correct path to the image into the /etc/bootparams file. In our case, with both Solaris 8 and Solaris 9 images, we need to be a little more specific.









The client is now ready for OS installation. Power up the client, halt the boot process with Stop+A and, at the open boot prompt, type:




ok> boot net - install
Resetting...









The JumpStart server will now install the Solaris OE on the client and install all the patches from the security and recommended patch cluster.