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
name_server=texsun(129.68.3.5)},
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
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 –
or en_US (see /usr/lib/locale)
2.
/etc/timezone – timezone (see /usr/share/lib/zoneinfo) and
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
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
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
US/Pacific `domainname`
/etc/netmasks (if using
192.168.22.0 255.255.0.0
/etc/locale
(if using
`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.