Building a Jumpstart server

There may be little that's new about using Jumpstart to install Sun servers, but setting up a new jumpstart server is something that I do rarely enough that I want to make the process simpler and more reliable. So, on building a jumpstart server for Solaris 10 05/08, I decided to augment the customary procedure with a few helpful scripts and to document the steps precisely and simply so that I have a reference for next time.

I use a set of Solaris 10 CDs which I burned myself from files downloaded from Sun in this column as many of the systems that I administer and/or can commandeer into service for such things as jumpstart are older systems that don't have the newer CD/DVD drives.

The first stage in setting up a jumpstart server is loading the software on the server. You can call your jumpstart directory anything you want, but /jumpstart or /install will make the point of the directory more obvious. Whatever you call the directory, you will need to refer to it in commands that you will use to load the software ...

1) creating a jumpstart directory

I generally call my jumpstart directories /jumpstart. Some people prefer /install. It doesn't matter as long as you refer to the correct directory in the additional commands you will need to run.

# mkdir /jumpstart

2) load the software

There are two commands for loading the software from the installation media to your jumpstart server. One is for the initial CD. The other is for all subsequent CDs. They both are run from the CDs themselves, so you don't have to go looking for them. The setup_install_server command will initiate the process of setting up your jumpstart server and loading the contents of the first CD. The add_to_install_server command, as the name implies, is used to unload the contents of the remainder of the CD set. Since I am both lazy and distractable, I like to toss little scripts together to help me keep track of where I am in building the server and make sure I issue the commands correctly.

I used the following script to facilitate CD unloading. It keeps a running count of how many CDs have been processed and it returns to / before attempting to eject each CD -- something I often forget to do.



if [ ! -f /tmp/CD ]; then
    echo 1 > /tmp/CD

ls /cdrom/cdrom0 > /dev/null
if [ $? != 0 ]; then
    echo -n "Please insert CD # $CD and press enter> "
    read ans

cd /cdrom/cdrom0/Solaris_10/Tools

case $CD in
    1) ./setup_install_server /$JSDIR;;
    *) ./add_to_install_server /$JSDIR;;

cd /

CD=`expr $CD + 1`

if [ $CD == 5 ]; then
    echo "Done!"

echo $CD > /tmp/CD

I might call the script "unload" or "next" or "doit", but I archive it in a directory with other jumpstart notes so that I'll easily find it when I set up another jumpstart server maybe next year. I might have to change a few things when I use it again, but the procedure is likely to be basically the same.

The output from the script and the add_to_install_server will look something more or less like this:

The following Products will be copied to /jumpstart/Sol10-0508/Solaris_10/Product:


If only a subset of products is needed enter Control-C and invoke ./add_to_install_server with the -s option.

Checking required disk space...

Copying Top Level installer...
133712 blocks

Copying Tools Directory...
4416 blocks

Processing completed successfully.

3) enable tftpd

Once the Solaris software is loaded on your server, you need to enable tftpd -- the trivial ftp server. This simplified ftp software uses UDP and provides no security features, but it's quick and often used for booting diskless systems and, in our case, for jumpstarting a server.

To enable tftpd, remove the comment from its line in the /etc/inetd.conf file and then run "inetconv". You can then verify that the service is active using the svcs command:

# perl -p -i -e "s/^#tftp/tftp/" /etc/inetd.conf
# grep tftp /etc/inetd.conf
# TFTPD - tftp server (primarily used for booting)
tftp    dgram   udp6    wait    root    /usr/sbin/in.tftpd      in.tftpd -s /tftpboot
# inetconv
inetconv: Notice: Service manifest for 100235/1 generated as /var/svc/manifest/network/rpc/100235_1-rpc_ticotsord.xml
# svcs | grep tftp
online         Jun_27   svc:/network/tftp/udp6:default 

Once you've done this, you can disable and re-enable the service with the svcadm command like this:

# svcadm disable svc:/network/tftp/udp6:default
# svcadm enable svc:/network/tftp/udp6:default

It will probably take you a couple hours to set up your jumpstart server using a set of five CDs like I did. With your jumpstart server ready, you can start setting up the profiles you will need to specify how your clients will be installed. We'll pick up with this next week.

This article is published as part of the IDG Contributor Network. Want to Join?

To express your thoughts on Computerworld content, visit Computerworld's Facebook page, LinkedIn page and Twitter stream.
7 Wi-Fi vulnerabilities beyond weak passwords
Shop Tech Products at Amazon