=====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