[Alcatel logo]

Solaris Jumpstart Services

Created 15-Dec-2004
$Revision: 1.2 $ $Date: 2006/06/14 03:43:15 $
Mark Owens

Abstract

Solaris installations can be automated via a process called jumpstart. Jumpstart servers are composed of serveral pieces that work in concert to identify, boot, and install the selected operating system onto a host computer. While the configuration of the nessecary pieces is documented (not well); the process is tedious. If certain critical configurtaion details are not done correctly, the Jumpstart service will break in mysterious ways. Furthoremore; either DHCP or rarp/bootparam services may be used to supply the required data to the client. Each of these has pros and cons. This document details the nessecary pieces and the configuration of those pieces. Where availible the Sun documents will be referenced.


The network/server infrastructure

The custom jumpstart infrastucture is composed of 4 major components, which may reside on seperate servers: 1) name services, including NIS/YP services; 2) the boot server; 3) the install server; 4) the profile server. If you are setting up jumpstart services for a 'flat', non-routed IP network, then all of these components may be placed onto 1 server. The naming and boot services utilize broadcast mechanisims, so they must be availible to all networks on which a jumpstart will be performed. This may be done by using multihomed servers or multiple servers.

In general, the network boot process will several protocols to accomplish the task of identifying the host type and loading the proper operating system image. Either DHCP or RARP/BOOTPARAMS will be used to obtain the host IP address and the location of the boot files. TFTP is used to load the specified operating system. Both DNS and NIS will be used to map server names for use with NFS. NIS will supply timezone/locale/services/ etc mapping. Each of these servcies must be defined in NIS or by using the appropriate entries in a sysidcfg file (which can be delivered via the network).


Infrastructure configuration

Several basic network services must be in place before attempting to perform net-loads. These include nameservices and time/date servers. You can perform jumpstarts without NIS/YP. It is almost impossible to manage a fully automatic hands-off install without it, because of the number of configuration parameters the client needs. It is recommended to setup a ypserver on the boot/install server.


Boot/Install server configuration

The initial phase of network booting starts with host identification and boot parameter download. As stated before this can be supplied by 1 of 2 methods. Initially you can use the -b flag with the setup_install_server utility to create the boot configuration.

  1. RARPD and BOOTPARAMS configuration. Note: in the AIND network network configuration, we are using group mobility to direct packet with Sun OUIs to the boot server on one specific VLAN. The RARP server verifies the assigned IP address with the network that the packet is recieved on, this check will fail in our group mobile environment. We have a special rarp server that will: 1) scan all of the interfaces for a valid network; 2) ignore the inbound interface check to determine the request validity; 3) and finally pass the response back out the interface that the request was received on.

  2. DHCP configuration using ISC dhcp version 3.


Profile server configuration

Client configuration data is maintained groups called profiles. These profiles are used during the installation process to determine the network configuration and other basic client configuration.


Client configuration issues

If you are using the RARP/BOOTPARAMS method to boot the install clients, you will use the general add_client routine located in booty:/export/jumpstart/Tools to add the specific entries on the server, to install the client. This general routine calls the OS specific add_install_client() functions that are found within the OS .../Tools/Boot directories. Initially the jumpstart server only serviced Sun Solaris installs and the installation directories could be NFS exported read-only (as required by jumpstartTM). We are now servicing Linux, FreeBSD, and Solaris installations from this server, this requires that some of the installation directories be exported read-write to specific clients. The Sun supplied add_install_client() verifies that the installation directories are exclusively exported read-only, anon=0. This is broken!

The add_install_client() routines MUST be modified to NOT export the installation directories (this is done when the install server boots). The export_fs() call is the generic function that is used to verify and export NFS directories, it should not be modified; rather the calls to this function should be removed (commented out) for the following directory exports: $PRODUCT_SERVER and $IMAGE_PATH. These add_install_client() script uses these variables to hold the installation directory names. In the current Solaris 8 add_install_client() script (12-Jan-2005), lines 2045-2048 should be commented out. These lines are within the context of:

fi

#
# Add the boot image directory and the products directory (if local)
# to the exports file.
#
#if [ "${PRODUCT_SERVER}" = "${SUBNET_NAME}" ]; then
#       export_fs $PRODUCT_PATH
#fi
#export_fs $IMAGE_PATH

# CLEAN file is used so rm_install_client can undo (most of) the setup
if [ "X$CLIENT_TYPE" = "XDHCP" ] ; then
    

Ideally, this file should be under revision control.


Setup_install_server failures

Sometime around the 4/04 release of Solaris 9, the physical layout of the CD media changed. This change moved the .../Boot directory, which was physically on slice 0, to slice 1. This affects the execution of setup_install_server. During the setup_install_server execution the boot server's .../Solaris_9/Tools/Boot directory is populated from the .../Solaris_9/Tools/Boot directory of the CD media, which is no longer availible. Sun has acknowleged this problem and has provided a manual workaround via SRD 72332, which addresses the CD media mount point issues when vold is NOT running. It should be noted that even when vold is running, the CD media may not mount correctly; thus, slice 1 will not be availible to setup_install_server. The workaround is thus:


Jumpstart control flow

During the course of jumpstart configuration and debug you will find it helpful to understand the execution flow. After the initial loader is obtained via tftp the following programs/scripts are executed. Note: most of the execs are located in /export/install/2.x/Solaris_x/Tools/Boot/sbin

  1. /etc/init reads .../Boot/etc/inittab
  2. .../Boot/sbin/startup is called by init. (indicated by "Searching for configuration file(s)")
  3. .../Boot/sbin/startinstall exec'ed by startup. determines if a window session can/will be run.
  4. .../Boot/sbin/sysconfig - called by startinstall
    This file has been modified to allow a hands off headless install. The following lines are added before the si_single_unlock() function definition:
    	     TERM=vt100
    	     export TERM
    	     SYSID_MULTI=-m
    	     LANG=C
    	     export LANG