=====Introduction=====
===Description===
Note: I start to write this note the first time I tried jumpstart. So, I guess there are
some errors.
My jumpstart was a Solaris 9, running in Sun Fire V120.
===Requirements===
Check if you have following services :
* tftp server
* rarpd (/usr/sbin/in.rarpd)
* NFS server
Packages :
* SUNWbsr / SUNWbsu
* SUNWmdb
* SUNWadmc
* SUNWadmfw
* SUNWinst
===Hierarchy===
* mkdir /export/Solaris /export/Solaris/5.9 /export/Solaris/5.10
* mkdir /export/jumpstart
* share -F nfs -o ro,anon=0 /export/Solaris
* share -F nfs -o ro,anon=0 /export/jumpstart
===Misc===
Since I want rarpd listen only in my eri1 device, I modify the file /etc/init.d
to have :
/usr/sbin/in.rarpd eri 1
=====Prepare the environment====
Since I install the jumpstart for both Sol9 and 10, I use main files which comes with the latest version
* cd /cdrom/sol_10_305_sparc/s0/Solaris_10/Tools/
* ./setup_install_server /export/Solaris/5.10
* cd ../Misc/jumpstart_sample/
* mkdir /export/jumpstart/bin
* cp check /export/jumpstart/bin/
* mkdir /tftpboot
Do the following command for each CD you have :
* ./add_to_install_server /export/Solaris/5.10
=====Add a client=====
* cd /export/Solaris/5.10/Solaris_10/Tools
* ./add_install_client -i 192.168.10.18 -s 192.168.10.2:/export/Solaris/5.10 -c 192.168.10.2:/export/jumpstart -p 192.168.10.2:/export/Solaris/5.10 gits.j2ee.fimasys.fr sun4u
^ Option ^ Meaning ^
| -i | IP Address |
| -s | NFS path to Solaris share |
| -c | NFS path to the jumpstart share |
| -p | NFS path to sysidcfg file |
| gits.j2ee.fimasys.fr | The name of client |
| sun4u | The platform of client |
Don't forget to check if the hardware address is in /etc/ethers
=====Files use by jumpstasrt=====
====/etc/ethers====
0:3:ba:a1:46:d chihiro.j2ee.fimasys.fr
This - very simple - file is used by the Reverse ARP (RARP) daemon. The box will receive
its IP (resolved from the hostname) from the jumpstart server, via an ARP reply.
====/etc/bootparams====
**Note**: In this example, I used a wildcard definition. So the same configurations files
like sysidcfg are read by all clients. Though, you can use per hostname definition.
* root=192.168.10.2:/export/Solaris/5.10/Solaris_10/Tools/Boot \
install=192.168.10.2:/export/Solaris/5.10 \
boottype=:in \
install_config=192.168.10.2:/export/jumpstart \
rootopts=:rsize=32768 \
sysid_config=192.168.10.2:/export/Solaris/5.10
^ Variable ^ Meaning ^
| root | This directory is used while the first boot |
| install | Where to fetch packages |
| install_config | Jumpstart files (rules, profiles and begin/finish scripts) |
| rootopts | Kernel options, rsize is for NFS |
| sysid_config | The directory which contains the sysidcfg file |
====rules, profiles and scripts====
===The rules file===
Don't forget to run ./check if you change the rules files.
==Example==
hostname chihiro.j2ee.fimasys.fr - v240_sol10_prof fms_finish_sol10
===Profiles==
==Example==
__v240_sol10_prof__
install_type initial_install
system_type standalone
partitioning default
cluster SUNWCreq
# Following clusters are available :
# - SUNWCreq: Core Systeme
# - SUNWCuser: End-User
# - SUNWCprog: Developer
# - SUNWCall: All
locale en_US
partitioning explicit
filesys c1t0d0s0 2048 /
filesys c1t0d0s1 1024 /var
filesys c1t0d0s2 all overlap
# Install bash
package SUNWbash add
# Install man and manpages
package SUNWdoc add
package SUNWman add
# Install zones and related packages
package SUNWadmc add
package SUNWadmfr add
package SUNWadmfw add
package SUNWlur add
package SUNWpoolr add
package SUNWxwplr add
package SUNWxwrtl add
package SUNWxwice add
package SUNWxwfnt add
package SUNWxwplt add
package SUNWctpls add
package SUNWmfrun add
package SUNWj5rt add
package SUNWluu add
package SUNWluzone add
package SUNWpool add
package SUNWpoolr add
package SUNWzoner add
package SUNWzoneu add
# Install SSH (server and client)
package SUNWsshr add
package SUNWsshcu add
package SUNWsshdr add
package SUNWsshdu add
package SUNWsshu add
# Install few others packages
package SUNWtoo add
===The begin script===
I never used a begin script at this time.
===The finish script===
===Example===
#!/bin/sh
echo "Setting user profile for root"
# set the root password
PASSWD=xxxxxxxxx
# create a temporary input file
cp /a/etc/shadow /a/etc/shadow.orig
cp /a/etc/passwd /a/etc/passwd.orig
nawk -F: '{
if ( $1 == "root" )
printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,passwd,$3,$4,$5,$6,$7,$8,$9
else
printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9
}' passwd="$PASSWD" /a/etc/shadow.orig > /a/etc/shadow
nawk -F: '{
if ( $1 == "root" )
printf "%s:%s:%s:%s:%s:%s:%s\n", $1,$2,$3,$4,$5,"/root","/usr/bin/bash"
else
printf "%s:%s:%s:%s:%s:%s:%s\n", $1,$2,$3,$4,$5,$6,$7
}' /a/etc/passwd.orig > /a/etc/passwd
# reset the permissions on the new /etc/shadow file to whatever is was
# set to during the install
perm=`grep '^/etc/shadow e' /a/var/sadm/install/contents | (read f1 f2 f3 f4 f5 ; echo $f4)`
chmod $perm /a/etc/shadow
perm=`grep '^/etc/passwd e' /a/var/sadm/install/contents | (read f1 f2 f3 f4 f5 ; echo $f4)`
chmod $perm /a/etc/passwd
# remove the temporary file
rm -f /a/etc/shadow.orig
rm -f /a/etc/passwd.orig
mkdir /a/root
chmod 750 /a/root
# set the flag so sysidroot won't prompt for the root password
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$
mv /tmp/state.$$ ${SI_SYS_STATE}
As you can see, I create the root password, and set the $HOME to /root, $SHELL to /usr/bin/bash
===The sysidcfg file===
===Example===
system_locale=en_US
TIMEZONE=Europe/Paris
timeserver=time.intranet.fimasys.fr
terminal=vt100
network_interface=PRIMARY {netmask=255.255.255.0 protocol_ipv6=no}
name_service=DNS {domain_name=fimasys.fr name_server=192.168.1.1 name_server=192.168.1.5}
security_policy=NONE