Guida all'installazione di Solaris 10 10/08: metodo JumpStart personalizzato e installazioni avanzate

Creazione di uno script finale

Uno script finale è uno script per la Bourne shell definito dall'utente che viene specificato nel file rules. Le operazioni specificate nello script finale vengono eseguite dopo l'installazione di Solaris ma prima del riavvio del sistema. Gli script finali possono essere usati solo con il metodo di installazione JumpStart personalizzato.

Le operazioni che è possibile eseguire con uno script sono le seguenti:

Informazioni importanti sugli script finali

ProcedureAggiungere file con uno script finale

Mediante uno script finale, è possibile aggiungere uno o più file della directory JumpStart a un sistema già installato. Questa operazione è possibile perché la directory JumpStart è attivata sulla directory specificata dalla variabile SI_CONFIG_DIR. Nell'impostazione predefinita, questa directory è /tmp/install_config.


Nota –

È anche possibile sostituire i file già presenti sul sistema installato con i file della directory JumpStart.


  1. Copiare tutti i file da aggiungere al sistema installato nella directory JumpStart.

  2. Nello script finale, inserire la riga seguente per ogni file che si desidera copiare nella gerarchia di file system del sistema installato:

    cp ${SI_CONFIG_DIR}/nome_file /a/percorso
    

Esempio 4–2 Aggiunta di un file con uno script finale

Ad esempio, si ipotizzi di avere sviluppato un'applicazione speciale di nome prog_sito per tutti gli utenti del sito. Collocando una copia di prog_sito nella directory JumpStart e la riga seguente nello script finale, il file prog_sito verrà copiato dalla directory JumpStart nella directory /usr/bin dei sistemi installati:

cp ${SI_CONFIG_DIR}/prog_sito  /a/usr/bin

Aggiunta di pacchetti e patch con uno script finale

Uno script finale può essere usato per aggiungere automaticamente pacchetti o patch al sistema dopo l'installazione di Solaris. Usando uno script finale, si riducono i tempi delle procedure e si ha la certezza di installare gli stessi pacchetti e le stesse patch su tutti i sistemi del sito.

Quando si utilizzano i comandi pkgadd(1M) o patchadd(1M) in uno script finale, è consigliabile usare l'opzione -R per specificare /a come percorso radice.


Esempio 4–3 Aggiunta di pacchetti con uno script finale

  #!/bin/sh
 
  BASE=/a
  MNT=/a/mnt
  ADMIN_FILE=/a/tmp/admin
 
  mkdir ${MNT}
  mount -f nfs sherlock:/export/package ${MNT}
  cat >${ADMIN_FILE} <<DONT_ASK
  mail=root
  instance=overwrite
  partial=nocheck
  runlevel=nocheck
  idepend=nocheck
  rdepend=nocheck
  space=ask
  setuid=nocheck
  conflict=nocheck
  action=nocheck
  basedir=default
  DONT_ASK
 
  /usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz 
  umount ${MNT}
  rmdir ${MNT}

A seguire sono descritti alcuni comandi dell'esempio.



Esempio 4–4 Aggiunta di patch con uno script finale

 #!/bin/sh 

########
#
# USER-CONFIGURABLE OPTIONS
#
########

# The location of the patches to add to the system after it's installed.
# The OS rev (5.x) and the architecture (`mach`) will be added to the
# root.  For example, /foo on a 8 SPARC would turn into /foo/5.8/sparc
LUPATCHHOST=ins3525-svr
LUPATCHPATHROOT=/export/solaris/patchdb
#########
#
# NO USER-SERVICEABLE PARTS PAST THIS POINT
#
#########

BASEDIR=/a

# Figure out the source and target OS versions
echo Determining OS revisions...
SRCREV=`uname -r`
echo Source $SRCREV

LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach`

#
# Add the patches needed
#
echo Adding OS patches
mount $LUPATCHHOST:$LUPATCHPATH /mnt >/dev/null 2>&1
if [ $? = 0 ] ; then
	for patch in `cat /mnt/*Recommended/patch_order` ; do
		(cd /mnt/*Recommended/$patch ; echo yes | patchadd -u -d -R $BASEDIR .)
	done
	cd /tmp
	umount /mnt
else
	echo "No patches found"
if


Nota –

In passato, nell'ambiente degli script finali, insieme ai comandi pkgadd e patchadd veniva usato il comando chroot(1M) In rari casi, alcuni pacchetti o patch non funzionano con l'opzione -R. In questi casi è necessario creare un file /etc/mnttab fittizio nel percorso radice /a prima di eseguire il comando chroot.

Per creare un file /etc/mnttab fittizio, aggiungere la riga seguente allo script finale:

cp /etc/mnttab /a/etc/mnttab

Personalizzazione dell'ambiente radice con uno script finale

Gli script finali possono anche essere usati per personalizzare i file già installati su un sistema. Ad esempio, lo script finale illustrato nell'Esempio 4–5 personalizza l'ambiente radice aggiungendo una serie di informazioni al file .cshrc della directory radice (/).


Esempio 4–5 Personalizzazione dell'ambiente radice con uno script finale

#!/bin/sh
#
# Customize root's environment
#
echo "***adding customizations in /.cshrc"
test -f a/.cshrc || {
cat >> a/.cshrc <<EOF
set history=100 savehist=200 filec ignoreeof prompt="\$user@`uname -n`> "
alias cp cp -i
alias mv mv -i
alias rm rm -i
alias ls ls -FC
alias h history
alias c clear
unset autologout
EOF
}

Impostazione della password di root con uno script finale

Al termine del processo di installazione di Solaris, il sistema si riavvia. Prima che il processo di boot sia completato, il sistema richiede la password di root. La procedura di boot non prosegue finché la password non viene inserita.

Nella directory auto_install_sample viene salvato uno script finale di nome set_root_pw. Questo script mostra come impostare la password di root automaticamente, senza che il sistema la richieda. Lo script set_root_pw è riportato nell'Esempio 4–6.


Nota –

Se si imposta la password di root del sistema con uno script finale, c'è il rischio che gli utenti cerchino di scoprirla accedendo alla password cifrata inclusa nello script finale. Occorre perciò adottare le misure di sicurezza appropriate per proteggere lo script.



Esempio 4–6 Impostazione della password di root con uno script finale

	 #!/bin/sh
	 #
	 #       @(#)set_root_pw 1.4 93/12/23 SMI
	 #
	 # This is an example Bourne shell script to be run after installation.
	 # It sets the system's root password to the entry defined in PASSWD.
	 # The encrypted password is obtained from an existing root password entry
	 # in /etc/shadow from an installed machine.
 
	 echo "setting password for root"
 
	 # set the root password
 PASSWD=dKO5IBkSF42lw
	 #create a temporary input file
 cp /a/etc/shadow /a/etc/shadow.orig
 
	 mv /a/etc/shadow /a/etc/shadow.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
 #remove the temporary file
 rm -f /a/etc/shadow.orig
 # 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}

A seguire sono descritti alcuni comandi dell'esempio.


Installazioni non interattive con script finali

Gli script finali permettono di installare prodotti software aggiuntivi dopo l'installazione del sistema operativo Solaris. Il programma di installazione di Solaris richiede l'immissione di alcune informazioni durante l'installazione. Per automatizzare questa procedura, è possibile eseguire il programma di installazione di Solaris con le opzioni -nodisplay o -noconsole.

Tabella 4–1 Opzioni di installazione di Solaris

Opzione 

Descrizione 

-nodisplay

Esegue il programma di installazione senza l'interfaccia grafica utente. L'installazione viene eseguita nel modo predefinito, salvo le modifiche eventualmente apportate con l'opzione -locales.

-noconsole

Esegue il programma di installazione senza una console interattiva. Questa opzione è utile, insieme a -nodisplay, per l'uso degli script UNIX.

Per maggiori informazioni, vedere la pagina man installer(1M).