Home Contact Download

asyd.net

Welcome to Bruno Bonfils's (aka asyd homepage).

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