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:
Aggiungere file
Aggiungere singoli pacchetti o patch oltre a quelli installati da un determinato gruppo software
Personalizzare l'ambiente di root
Impostare la password di root per il sistema
Installare prodotti software aggiuntivi
Il programma di installazione di Solaris attiva i file system del sistema su /a. I file system rimangono attivati su /a fino al reboot successivo. Lo script può essere usato per aggiungere, modificare o rimuovere uno o più file dalla gerarchia di file system della nuova installazione modificando i file system relativi ad /a.
Durante l'installazione, l'output dello script finale viene memorizzato in /tmp/finish.log. Al termine dell'installazione, il file di log viene rediretto in /var/sadm/system/logs/finish.log.
Verificare che il proprietario dello script finale sia root e che le autorizzazioni siano impostate su 644.
Negli script finali è possibile usare le variabili d'ambiente accettate dal metodo JumpStart personalizzato. Per un elenco delle variabili d'ambiente disponibili, vedere Variabili d'ambiente per l'installazione JumpStart personalizzata.
Salvare gli script finali nella directory JumpStart.
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.
È anche possibile sostituire i file già presenti sul sistema installato con i file della directory JumpStart.
Copiare tutti i file da aggiungere al sistema installato nella directory JumpStart.
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 |
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 |
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.
L'Esempio 4–3 mostra uno script finale che aggiunge una serie di pacchetti.
L'Esempio 4–4 mostra uno script finale che aggiunge una serie di patch.
#!/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.
Il comando seguente attiva una directory sul server contenente il pacchetto da installare.
mount -f nfs sherlock:/export/package ${MNT} |
Il comando seguente crea un file temporaneo per l'amministrazione dei pacchetti, di nome admin, per forzare il comando pkgadd(1M) a non eseguire controlli e a non formulare domande durante l'installazione dei pacchetti. Il file di amministrazione temporaneo permette di automatizzare la procedura di installazione dei pacchetti.
cat >${ADMIN_FILE} <<DONT_ASK |
Il seguente comando pkgadd aggiunge il pacchetto utilizzando l'opzione -a, che specifica il file di amministrazione dei pacchetti e l'opzione -R, che specifica il percorso di root.
/usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz |
#!/bin/sh ######## # # USER-CONFIGURABLE OPTIONS # ######## # La posizione delle patch da aggiungere al sistema dopo l'installazione. # La versione (5.x) e l'architettura (`mach`) saranno aggiunte alla # radice. Ad esempio, /foo su un sistema SPARC 8 diventa /foo/5.8/sparc LUPATCHHOST=ins3525-svr LUPATCHPATHROOT=/export/solaris/patchdb ######### # # NESSUNA PARTE SU CUI È POSSIBILE ESEGUIRE # LA MANUTENZIONE OLTRE QUESTO PUNTO # ######### BASEDIR=/a # Determina le versioni del SO di origine e destinazione echo Determining OS revisions... SRCREV=`uname -r` echo Source $SRCREV LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach` # # Aggiunge le patch necessarie # 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 |
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
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 (/).
#!/bin/sh # # Personalizza l'ambiente radice # echo "***aggiunta delle personalizzazioni 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 } |
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.
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.
#!/bin/sh # # @(#)set_root_pw 1.4 93/12/23 SMI # # Esempio di script della shell Bourne da eseguire dopo l'installazione. # Imposta la password di root sul valore definito in PASSWD. # La password cifrata è derivata da una password di root esistente # in /etc/shadow su un sistema installato. echo "impostazione della password per root" # imposta la password di root PASSWD=dKO5IBkSF42lw # crea un file di input temporaneo 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 # rimuove il file temporaneo rm -f /a/etc/shadow.orig # imposta il flag, sysidroot non richiederà la password di root 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.
Il comando seguente imposta la variabile PASSWD su una password di root cifrata ricavata da una voce esistente nel file /etc/shadow del sistema.
#create a temporary input file |
Il comando seguente crea un file di input temporaneo di /a/etc/shadow.
cp /a/etc/shadow /a/etc/shadow.orig |
Il comando seguente cambia la password di root nel file /etc/shadow per il sistema installato usando $PASSWD come campo per la password.
if ( $1 == "root" ) |
Il comando seguente rimuove il file di input temporaneo di /a/etc/shadow.
rm -f /a/etc/shadow.orig |
Il comando seguente cambia l'istruzione da 0 a 1 nel file di stato, in modo che la password di root non venga richiesta all'utente. L'accesso al file di stato avviene tramite la variabile SI_SYS_STATE, il cui valore corrente è /a/etc/.sysIDtool.state. Per evitare problemi con lo script in caso di cambiamento di questo valore, fare sempre riferimento a questo file usando $SI_SYS_STATE. Il comando sed di questo esempio contiene un carattere di tabulazione dopo lo 0 e dopo l'1.
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ |
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).