JumpStart - Automatic Installation

The Solaris operating system can be automatically installed from a single "Jumpstart" server or set of servers.  That server can be set up to recognize different platforms, hardware configurations, MAC addresses or other system characteristics, and to tailor installation to those machines. JumpStart is usually run off a single "JumpStart" server, but its functions can be divided among 4 different servers: a Configuration server, an Install server, an Identification server and a Boot server.  A boot server contains the boot program for the client. It must have the files /etc/ethers and /etc/bootparams, and also have the boot program entries for the client in the directory /etc/tftpboot. It must be on the same subnetwork (local area network) as the client. The other servers may be on the same network or a different network.  An install server has only the Solaris 10 CD-ROM image, and the identification server has the sysidcfg file(s) and the configuration servers have the configuration files: rules and "class" files. These latter two files must be in the same directory on the same machine.

I. Setting up JumpStart

Summary: The Solaris 10 CD-ROM images are copied to a directory, which will then be shared.  Additional configuration files are created in a subdirectory of the configuration directory or in a separate directory. Clients are then added.

The administrator may choose any directory for the JumpStart directory, but it is usually /export/install, since that makes sense, and is the default install directory. Throughout this module we will assume that the configuration directory is /export/install.

 

How to set up Jumpstart using the same host as the configuration, boot and install server: Do the following sections in order.

A1, A2. Install the JumpStart software on the server

B. Set up the system identification configuration files on the server

C. Set up the rules and "class" files on the server

D1. Install each client on the server

E. Make the file rules.ok

 

How to set up JumpStart using different hosts for configuration, boot and install servers. Do the following sections in order.

On the Configuration Server:

Do A2, B, C, E in order.

On the Installation Server:

Do A1

On the Boot Server:

Do A3, D2 in order.

 

How to run JumpStart on the client (from the ok (PROM) prompt).

 

boot   net     -         install  (boot <space> net <space> - <space> install)

 

A. Installing JumpStart software

 

The scripts to add the Solaris 10 CD-ROM images and the boot program for the client to the Jumpstart server's hard disk are available on the Solaris 10 CD-ROM. The script to copy the end user and core configuration clusters of the Solaris 10 operating system to your installation directory is called setup_install_server. It is run from the Solaris 10 Software CD-ROM 1 of 4. By custom (though not necessity) the directory to which the CD-ROM image is copied is called /export/install. It must have around 2 gigabytes of available space.  The image created with setup_install_server can be used to install the core or reduced networking configuration clusters of the operating system on clients. The script add_to_install_server adds the packages necessary to install the developer, entire distribution and entire distribution + OEM configuration clusters from the other Solaris 10 Software CD-ROMs. Sample files and the "check" script can also be copied to the hard drive, then used as needed.

 

A1. Installing Jumpstart software on single server or install server:

(Put the Solaris 10 Software CD-ROM 1 of 4 in the drive and create /export/install)

/cdrom/cdrom0/s0/Solaris_10/Tools/setup_install_server    /export/install

(Put each Solaris 10 Software CD-ROM in the drive in turn.)

/cdrom/cdrom0/Solaris_10/Tools/add_to_install_server    /export/install

 

A2. Installing JumpStart files on single server or configuration server:

(Put the Solaris 10 Software CD-ROM 1 of 4 in the drive and create /export/install if necessary)

cd     /cdrom/cdrom0/s0/Solaris_10/Misc/jumpstart_sample

cp  check   /export/install

cp  rules   /export/install/rules.template (information only - not required for JumpStart. This file contains lots of information about creating the rules file)

 

A3. Installing JumpStart software on a boot server:

(Put the Solaris 10 Software CD-ROM 1 of 4 in the drive.)

/cdrom/cdrom0/s0/Solaris_10/Tools/setup_install_server   –b   /export/install

 

B. Set up the system identification files on the configuration server:

 

Edit each of the files listed below so they have the entries given:

 

1. /etc/inet/hosts – must have ONE entry with a name and IP address for each server on the network, and for every client computer you will be JumpStarting. This file will be used to assign an IP address and hostname to the client during the system identificaton (sysidtool) part of system installation.

 

What is in /etc/inet/hosts:

 

For this class:                                      Otherwise:

< IP>           <hostname>                     any combination of IP addresses and

hostnames that you want

 

2. /export/install/sysidcfg –contains information about the sysidtool part of installation. In Solaris 10, you MUST have a sysidcfg file containing  the lines with "network_interface…default_route=..." and "security_policy" or Jumpstart will not work. These two lines answer installation questions about IPv6, a default router and kerberos V5 that were not asked by the Solaris 7 installation program.

 

What is in sysidcfg:

 

For this class:                            Otherwise:

name_service=NONE                 NIS{domain_name=dallas.Central.Sun.COM \

name_server=texsun(129.68.3.5)}, NIS+, LDAP DNS, OTHER

network_interface=PRIMARY   hme0, qfe1, eri0, le0, or other ethernet port

{protocol_ipv6=no  \                  yes

netmask=<server netmask>\      the same netmask the Jumpstart server has!

default_route=<router IP>}       the IP address of the subnet's router

                                                   (The “network interface” section may be repeated for any                                                                           other interfaces to be configured)

system_locale=en_US                (other character set: see /usr/lib/locale. C is USA-ASCII)

security_policy=NONE              kerberos

timezone=US/Pacific                  US/Mountain (or see /usr/share/lib/zoneinfo)

timeserver=<your host's IP>      IP address of the system you want to use to set the time.

root_password=any encrypted password consisting of alphanumeric values.

Copy the encrypted password directly from your system's /etc/shadow file.

 

C. Set up the rules and class files on the configuration server

 

Edit each of the files below so they contain the given entries:

1. /export/install/rules - this file is called the "rules" file.  It contains filenames with specific installation instructions for each computer to be JumpStarted.  Installation may be specified by model, by processor architecture, by network location, by hostname, by domain name, by disk size, by RAM, by the currently installed OS, by the total amount of disk space etc. Each of the 5 fields in the rules file contains either a specific entry, or a " - ". These files answer the questions asked by the installtool during system installation.

 

The rules file has 5 fields:

First. REQUIRED: The parameter used to determine which set of installation instructions will be used to JumpStart the client.  This might be arch (for processor architecture), memsize (for total RAM), or model.  It may also be a set of parameters separated by a logical and (&&) or a logical or (||) or a logical and not (&& !).  If all systems will get the same installation procedure, then this field will contain the word "any".

Second. REQUIRED if 1. is not "any".  The value of the parameter, or a range of  values.  For example, if the first field contains the parameter "memsize", the second field must contain a number or range of numbers corresponding to the megabytes of RAM installed in the machine.

Third. OPTIONAL: The name of a script to run on the client before installation begins.

Fourth. REQUIRED: The name of a "class" file which contains the specific installation instructions for each class of machine specified in the rules file.  The name of the class file is chosen by the person setting up the rules file.

Fifth. OPTIONAL: The name of a script to run on the client after installation is finished.

 

What is in rules file:

For this class:

 

any     -         -         profile          -

 

Otherwise, might have:

arch                        sparc            begin_script           filename1          finish_script

arch    x86    &&    domainname   name2   -    filename2       finish_script

memsize 512-1024    && !   model 'SUNW,Sun 4_50'    -  filename3     -

2. /export/install/profile - the "class" file.  "profile" will be replaced by whatever name is specified in the fourth field of the rules file.  It contains the specific installation instructions for a particular host's system installation.  The class file has two fields; a parameter and a value (or values) of the parameter. 

 

 

Parameter                                    Possible Values               Required/default

install_type                                 initial_install                    yes

upgrade

flash_install

archive_location                         nfs     server1:/export/flash

                                                                                             yes if flash_install

                    

system_type                                standalone                        no/standalone

                                                  

partitioning                                 default                              no/default

                                                   existing

                                                   explicit

cluster                                         SUNWCcore                    no/SUNWCuser

                                                   SUNWCuser

                                                   SUNWCprog

                                                   SUNWCall

                                                   SUNWCXall

package                                       package_name                  add OR delete

patch                                           patch_names                     patch location

usedisk                                       diskname                          no/c0t0d0 (most)

dontuse                                       diskname                          no

locale                                          specify locale         no/value in sysidcfg

 

IF disks are to be installed as SVM devices must have:

 

metadb                   slice to contain metadbs count   number of dbs

IF partitioning is explicit, must also have:

 

filesys                     partition  name (format: cxtxdxsx)     size   \

mount_point     mount options

 

What is in "class" file "profile":

 

For this class:

 

install_type            initial_install

cluster                    SUNWCXall

 

Otherwise:

 

install_type            initial_install

partitioning            explicit

filesys                     mirror :d10   c0t0d0s0      c1t2d0s0      850              /

filesys                     c0t0d0s1                512               swap

filesys                     c0t0d0s6                1500             /usr

filesys                     c0t0d0s7                800               /export/home   logging

filesys                     c0t0d0s5                free               /opt          ro,logging

metadb                   c0t0d0s4                count            4

metadb                   c1t3d0s4                count            4

cluster                    SUNWCXall

package                  SUNWaudio          delete

package                  SUNWman             add               http://server1:/software

package                  SUNWprog            add               nfs://server2:/pkgdir

package                  SUNWaddr            add     local_device    c1t2d0s4    ufs

patch                      109022-01,109999-04      local_file  /solaris10/Patches

 

The "class" file changes when you are doing a flash install. A flash install copies an image of the operating system into an archive file that can then be copied onto another system. This image will include everything except the basic system identification configuration done by the installation program - in the case of Jumpstart, that is the iinformation in /etc/inet/hosts and in the sysidcfg file.  Flash installs have two big advantages: 1) you can customize the image on the original system - set up files, add software, configure it in any way you want. Jumpstart allows you to use begin and finish scripts, but they are limited.  2) Flash installs are much faster than ordinary installations because the process of adding packages doesn't occur.

 

For Jumpstart flash installs, the class file must have flash_install as the installation type, and must also specify a location for the install - most commonly this will be an nfs shared directory on a server, and the class file might look like this:

 

install_type            flash_install

archive_location     nfs     <server IP address>:/export/flash

partitioning            explicit

filesys                     c0t0d0s0                620               /

filesys                     c0t0d0s1                512               swap

filesys                     c0t0d0s3                500               /var

filesys                     c0t0d0s6                1510             /usr

filesys                     c0t0d0s7                free               /export  

 

You will generally explicitly partition a flash install, but you can't add or delete packages because you're installing an image of the operating system, not packages, nor can you choose the configuration cluster.  You will have to be pretty careful about the partitioning. You'll have to have enough room in each partition for the files that will go in there, just as you would for a regular Jumpstart installation. Check with the master system, and make each partition very slightly larger on the client system than it is on the master system, to account for variations in disk formatting.  You may make partitions much larger on the client system than on the master system as well - but they cannot be any smaller than the master. Swap is an exception - no information will be moved from swap on the master to swap on the client, so swap on the client can be any size.

 

D. Installing a client on the server:

 

D1: Same configuration, installation and boot server

cd /export/install/Solaris_10/Tools

(type the following on ONE LINE)

./add_install_client         -i <client IP from /etc/inet/hosts>      

-e <client MAC>  -p <server IP>:/export/install

-c <server IP>:/export/install  

<client hostname from /etc/inet/hosts>         sun4u

 

 

dfshares

Check that the directory containing the sysidcfg file, the class and rules files, and the CD-ROM image are shared, and share them manually if not.

 

D2: Different configuration, installation and boot servers:

On the boot server:

Put the Solaris 10 Software CD-ROM 1 of 4 in the drive

cd /cdrom/cdrom0/s0/ Solaris_10/Tools

./add_install_client         -i <client IP from /etc/inet/hosts>      

-e <client MAC>   -p <configuration server IP>:/export/install

-c <configuration server IP>:/export/install         

-s <installation server IP>:/export/install <client_name>          sun4u

 

(note…drop extra zeros in the MAC address, or the command will not run).

dfshares

 

If /export/install is not shared, share it.

 

The command:

add_install_client - a script to add one client to the filess required to JumpStart. 

-i        the IP address to be assigned to that client - optional if correct entry is in /etc/hosts.

-e       the ethernet address of that client - get from banner at PROM prompt or from ifconfig -a. You may substitute an entry for the client in /etc/ethers.

-p       the name of the directory in which sysidcfg is located; see A above.  We are using /export/install

-c       the name of the directory where the rules and class files are located. We are using /export/install.

-s (on boot server only) the name of the installation server, and the directory where the image of the operating system is located.  Can be used to indicate the location of the CD-ROM image, if it is other than in /export/install.

hostname      The name to be given to the client.  This must match the IP address.    We are using hostname1.

architecture   The platform architecture - can be gotten from `uname -m`.  We are using sun4u.

 

E. Making the file rules.ok

 

cd /export/install

./check

 

The "check" script looks at the configuration files and if they are properly configured, creates a file called rules.ok.  This is the file that will actually be used to run the JumpStart.

 

II. Complications:

 

A. What to do if there is no space on your server for the CD-ROM image, or no time to install the image: (only works for core or end user)

 

The sysidcfg file, rules file and class files must be on the server's disk, however, the CD-ROM image can be used from the CD-ROM.  If you plan to install from the CD-ROM, you will have to specify the install server when you run the command add_install_client, as you did with a separate install server.  JumpStart otherwise assumes that the CD-ROM image is in the directory you specified when you added the client (/export/install). You will have to manually share the CD-ROM (share /cdrom/cdrom0/s0) on the install server. 

New D1: Same configuration, installation and boot server: CD-ROM image used from CD-ROM.

cd /cdrom/cdrom0/s0/ Solaris_10/Tools

./add_install_client         -i <client IP from /etc/inet/hosts>      

-e <client MAC>   -p < server IP>:/export/install

-c < server IP>:/export/install 

-s < server IP>:/cdrom/cdrom0/s0  <client_name>          sun4u

 

New D2: Different configuration, installation and boot servers:

On boot server:

cd /cdrom/cdrom0/s0/ Solaris_10/Tools

./add_install_client         -i <client IP from /etc/inet/hosts>      

-e <client MAC>   -p <configuration server IP>:/export/install         

-c <configuration server IP>:/export/install         

-s <installation server IP>:/cdrom/cdrom0/s0  <client_name>           sun4u

 

On install server

share /cdrom/cdrom0/s0

 

B. What to do if you have systems with multiple configurations (i.e. you need more than one sysidcfg file).

 

Make as many directories in /export/install as you have sysidcfg files.  Put the different sysidcfg files in the directories.  When you add the client, specify the directory where the sysidcfg file for that client is located after the -p option.  After the -c option, specify the location of the class and rules files.  Example:  the sysidcfg file for a client is located in /export/install/jump.  The rules and class files are in /export/install. 

 

New D1: Same configuration, installation and boot server

cd /export/install/Solaris_10/Tools

./add_install_client         -i <client IP from /etc/inet/hosts>      

-e <client MAC>   -p <server IP>:/export/install/jump

-c <server IP>:/export/install   <client_name>      sun4u

 

The rules file and class files must be in the same directory, however the rules file allows multiple class files to be specified, so there is no need for more than one rules file, no matter how many different types of clients you JumpStart.

 

III. JumpStarting with NIS

Make the following changes from the procedure above:

A. Create the sysidcfg file with the lines starting with "network…netmask.." and "security..".

B. Create the files /etc/locale, /etc/timezone, /etc/ethers and /etc/netmasks with the following contents:

1. /etc/locale – NIS domain and character set wanted: character set is usually C
or en_US (see /usr/lib/locale)

            2. /etc/timezone – timezone (see /usr/share/lib/zoneinfo) and NIS domain

            3. /etc/netmasks – network number and netmask

            4. /etc/ethers – MAC address and hostname – one for each client

C. Add an entry to /var/yp/Makefile for locale.time.  A sample is included in the book.

D. Update the file /etc/inet/hosts with the IP address and hostname of each client. There must be one hostname/IP address set for each hostname/MAC address in the file /etc/ethers.

E. Update the NIS maps and push to slave servers.

 

IV. Boot process, file formats and pfinstall

Boot process as seen on snoop:

 

snoop shows  why?                     daemon        files

snoop         ether--->IP          in.rarpd      /etc/ethers

                                                               /etc/inet/hosts

 

TFTP         IP-->boot file     inetd          /etc/inet/inetd.conf (1 line)

 

 

                  inetd starts in.tftpd                /tftpboot/(IP in hex) (link)

 

 

whoami      IP --> name>        rpc.bootparamd           /etc/inet/hosts

 

bparam      name--> location of root

                                             rpc.bootparamd           /etc/bootparams

 

mount        mount /               mountd                        /etc/dfs/sharetab

 

Boot process

 

When a JumpStart client boots off the network, all it knows is its ethernet (MAC) address.  It will broadcast this address in RARP format (Return Address Resolution Protocol) so that its server will recognize it and return its boot program.  The server must then be able to recognize the client's broadcast, and to connect its ethernet address with the name and IP address assigned to that client.  This process uses the contents of the files /etc/ethers and /etc/inet/hosts.  /etc/ethers contains only the ethernet address and the hostname of the client.  The server picks up the client's broadcast, and recognizes its ethernet address from the file /etc/ethers.  It then uses the name of the client to find its IP address in /etc/inet/hosts, which it will pass back to the client.

 

The client then broadcasts its IP address in hexadecimal format with a tftp request for its boot program.  This program is kept in the directory /tftpboot under a name which looks like this: hex-IP-address.platform.  Example: AC140478.SUN4U.  This name is a link to the boot program for the client, which is also in the tftpboot directory, and which is called inetboot.sun4u.Solaris_10-1 for sun4u platform architecture and the Solaris 10, release 1 operating environment.

 

The boot program is then passed to the client, which will use it to mount its root directory from the server.  It must first issue the command whoami to find its host name.  This information is looked up by the server in the file /etc/bootparams, and is passed to the

client, which mounts its root directory and starts up.  After the client boots, it looks for the configuration server, using information passed to it from the file /etc/bootparams.  It mounts the configuration directory from the configuration server and runs the sysidtool.  It then uses information from /etc/bootparams to locate the installation server, where it runs the program SunInstall and finishes installing.

 

Files required for JumpStart services, and sample entries:

 

/etc/inet/hosts

 

192.168.21.10             gladiolus  (client)

192.168.21.10             server

 

/etc/ethers (must be set up and the command /usr/ccs/bin/make run in /var/yp for NIS)

 

8:0:20:9f:9f:ae             gladiolus

 

/tftpboot

 

inetboot.sun4u.Solaris_10-1 (Solaris 10 boot program for client with sun4u architecture)

C0A8160A.SUN4U  (link to inetboot program for the client with IP address 192.168.21.10. C0A8160A is this number expressed as a hexadecimal value.)

COA8160A (link to inetboot program)

 

 

 

/etc/bootparams

gladiolus          root=server:/export/install/Solaris_10/Tools/Boot install=server:/export/install boottype=:in sysid_config=server:/export/install install_config=server:/export/install rootopts=:rsize=32768 (rootopts is mount options  and nfs read size)

 

/etc/timezone  (if using NIS)

 

US/Pacific       `domainname`

 

/etc/netmasks (if using NIS)

 

192.168.22.0               255.255.0.0

/etc/locale (if using NIS)

 

`domainname`             en_US

 

/etc/dfs/dfstab

 

share -F nfs -o ro,anon=0 /export/install<

share -F nfs -o rw=gladiolus,anon=0 /tftpboot

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pfinstall

 

The command pfinstall (/usr/sbin/install.d/pfinstall) performs a dry run of the installation for a given class file. 

 

pfinstall –D  -c /export/install classfile

 

The above command tests the installation of "classfile" using the image of the CD-ROM located in /export/install. 

 

pfinstall –d diskfile –c /export/install classfile

 

The above command tests the installation of "classfile" using the image of CD-ROM located in /export/install, and assuming the disk described in "diskfile".  "diskfile" is made by redirecting the output of prtvtoc to a file as: prtvtoc /dev/dsk/c0t0d0s0 > diskfile.

 

 

 

Useful additions:

 

To remove a client:

/cdrom/cdrom0/s0/Solaris_10/Tools/rm_install_client

 

To change the timezone after install:

zic -l CET

 

To remove IPv6 after an install:

ifconfig hme0 inet6 down unplumb

( works dynamically to unconfig on  the fly. )

rm /etc/hostname6.xxx ( to keep IPv6  from self starting.)

IPv4 will then run.

 

 

/var/sadm/system/admin/.clustertoc gives a breakdown of:

- Sun CLUSTERS into the PACKAGES they contain

- Sun CONFIG CLUSTERS into the CLUSTERS and individual PACKAGES they contain

 

To automatically have a system jumpstart on reboot

 

touch   /AUTOINSTALL

reboot

 

To jumpstart on a reboot:

 

reboot -- 'net - install'

 

To jumpstart off dhcp:

 

You have to have OBP Rev. 3.25 or higher,
patch 106121 -> OBP update for sun4u.

Then

ok boot net:dhcp

or

ok boot net:dhcp – install

 

There is a bug involving routers in Solaris 9 Release ?7?.  It

demands a router IP. You cannot choose NONE.

 

network_interface=PRIMARY {netmask=255.255.255.0
                          protocol_ipv6=no
                          default_route=IP-address}

However, you cannot define default_route=NONE in Solaris 9 2/02. The
workaround for this bug (4508625) is:

Put in a bogus ip_addr in the 'default_route' keyword and delete
/etc/defaultrouter file when complete.

This will make the install maintain its' hands off status.

 

I encountered the same problem.  I made the boot directory look like an
install directory.  I copied the following files from the CD:
.cdtoc
.slicemapfile
.volume.inf
Copyright

I'm not sure if they were all required, but my machine will jumpstart a
flash archive with nothing more than a boot image installed.
 
>
> I have a jumpstart server (wm12w12) but I am not going to copy the
> Solaris software to the disk, and I am not going to leave the Solaris
> CD in the drive. I have taken a flash archive of a system and want the
> client to get that flash image.
>
> I have set up the host as a boot server:
>   #./setup_install_server -b /export/boot_server
> I have a the flash-archive image, called /mnt/paul_image
> I have a working sysidcfg (no NIS)
> I have a working rules.ok file
> I have this class file:
>
> # cat /export/config/paul_class
> install_type       flash_install
> archive_location   nfs://192.39.120.112/mnt/paul_image
> partitioning       explicit
> filesys            rootdisk.s0     free    /
> filesys            rootdisk.s1     512     swap
>
> The class file is telling the client where to get in the archive from.
> So I DO NOT NEED TO TELL IT WHERE THE SOLARIS SOFTWARE IS.
>
> I have copied the Tools directory from the CD to the disk (so it
> doesn't assume that the solaris software will be shared from the CD
> when I run the add_install_client script). However, when I try to add
> my client, I get an error:
>
> # pwd
> /export/boot_server/Solaris_10/Tools
> # ./add_install_client -c wm12w12:/export/config \
>   -p wm12w12:/export/config wm12w10 sun4u
> This system is only set up as a boot server for install clients. Use
> -s to specify a path to an install server.
>
> The error is that I haven't told it where the Solaris software is.
> Well I don't want to! I shouldn't need to. As a work around, I have
> specified an existing share which doesn't have the Solaris software in
> it.
>
> # cd /export/boot_server/Solaris_10/Tools
> # ./add_install_client -c server:/export/config -p
> server:/export/config -s wm12w10:/export/config client sun4u
>
> The client boots and installs, but only after complaining it can't
> find what it expects in the share. It is a messy work-around.
>
> Does anyone know what I am doing wrong? How am I supposed to add the
> client for a flash install? (I have checked docs.sun.com and some
> blueprints).
>
I had the same experience as you had. You HAVE to have a directory which
looks
like a Solaris 10 software directory. However, you can remove most of the
stuff. In fact, the only files which are really required are some hidden
files. I can't tell exactly which ones as I currently don't have access to
the correct system.

Hosted by www.Geocities.ws

1