Solaris 9 12/03 Installationshandbuch

Erstellen von Finish-Skripten

Ein Finish-Skript ist ein benutzerdefiniertes Bourne-Shell-Skript, das Sie in der Datei rules angeben. Ein Finish-Skript führt bestimmte Aufgaben nach der Installation der Solaris-Software auf einem System aus, jedoch bevor das System erneut gebootet wird. Sie können Finish-Skripten nur verwenden, wenn Sie die Solaris-Software mit dem benutzerdefinierten JumpStart-Installationsverfahren installieren.

Mit einem Finish-Skript können Sie unter anderem die folgenden Aufgaben durchführen:

Wichtige Informationen zu Finish-Skripten

So fügen Sie Dateien mit einem Finish-Skript hinzu

Über ein Finish-Skript können Sie einem bereits installierten System Dateien aus dem JumpStart-Verzeichnis hinzufügen. Sie können Dateien hinzufügen, weil das JumpStart-Verzeichnis in dem Verzeichnis eingehängt ist, das in der Variablen SI_CONFIG_DIR angegeben wird. Standardmäßig ist dies das Verzeichnis /tmp/install_config.


Hinweis –

Sie können Dateien auch ersetzen, indem Sie sie aus dem JumpStart-Verzeichnis über bereits vorhandene Dateien auf einem installierten System kopieren.


  1. Kopieren Sie alle Dateien, die Sie dem installierten System hinzufügen möchten, in das JumpStart-Verzeichnis.

  2. Fügen Sie für jede in die neu installierte Dateisystemhierarchie zu kopierende Datei die folgende Zeile in das Finish-Skript ein:

    cp ${SI_CONFIG_DIR}/Dateiname /a/Pfadname
    

Angenommen, es gibt eine speziell für alle Benutzer am Standort entwickelte Anwendung mit dem Namen site_prog. Wenn Sie eine Kopie von site_prog in das JumpStart-Verzeichnis stellen, bewirkt die folgende Zeile in einem Finish-Skript, dass site_prog aus dem JumpStart-Verzeichnis in das Verzeichnis /usr/bin eines Systems kopiert wird:

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

Hinzufügen von Packages oder Patches mit einem Finish-Skript

Sie können mit einem Finish-Skript nach der Installation der Solaris-Software automatisch Packages oder Patches hinzufügen. Indem Sie Packages mit einem Finish-Skript hinzufügen, sparen Sie Zeit und stellen außerdem sicher, dass Packages und Patches auf unterschiedlichen Systemen gleich installiert werden.

Wenn Sie in Finish-Skripten den Befehl pkgadd(1M) bzw. patchadd(1M) verwenden, geben Sie mit der Option -R den Pfad /a als Root-Pfad an.


Beispiel 24–2 Hinzufügen von Packages mit einem Finish-Skript

  #!/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}

Nachfolgend werden einige Befehle dieses Beispiels erläutert.



Beispiel 24–3 Hinzufügen von Patches mit einem Finish-Skript

 #!/bin/sh 

########
#
# VOM BENUTZER KONFIGURIERBARE OPTIONEN
#
########

# Speicherort der Patches, die nach der Installation hinzugefügt werden
# sollen. An Root werden die BS-Rev. (5.x) und Architektur (`mach`)
# angehängt. /foo auf einem 8 SPARC würde also zu /foo/5.8/sparc
LUPATCHHOST=ins3525-svr
LUPATCHPATHROOT=/export/solaris/patchdb
#########
#
# AB HIER NICHTS MEHR ÄNDERN
#
#########

BASEDIR=/a

# BS-Versionen (Quelle/Ziel) bestimmen
echo BS-Revisionen bestimmen...
SRCREV=`uname -r`
echo Quelle $SRCREV

LUPATCHPATH=$LUPATCHPATHROOT/$SRCREV/`mach`

#
# Nötige Patches hinzufügen
#
echo BS-Patches werden hinzugefügt...
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 "Keine Patches gefunden"
if


Hinweis –

Früher wurde der Befehl chroot(1M) zusammen mit dem Befehl pkgadd und patchadd in Finish-Skripten verwendet. In seltenen Fällen kann es vorkommen, dass bei einigen Packages oder Patches die Option -R nicht funktioniert. Sie müssen eine /etc/mnttab-Dummy-Datei im Root-Pfad /a erstellen, bevor Sie den Befehl chroot absetzen.

Zum Erstellen einer /etc/mnttab-Dummy-Datei fügen Sie die folgende Zeile zum Finish-Skript hinzu:

cp /etc/mnttab /a/etc/mnttab

Anpassen der Root-Umgebung mit einem Finish-Skript

Sie können mithilfe von Finish-Skripten auch Dateien anpassen, die bereits auf einem System installiert sind. Mit dem Finish-Skript in Beispiel 24–4 wird zum Beispiel die Root-Umgebung durch Anhängen von Informationen an die Datei .cshrc im Root-Verzeichnis (/) angepasst.


Beispiel 24–4 Anpassen der Root-Umgebung mit einem Finish-Skript

#!/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
}

Definieren des Root-Passworts eines Systems mit einem Finish-Skript

Nach der Installation der Solaris-Software wird das System neu gebootet. Vor dem Abschluss des Boot-Vorgangs fordert das System zur Eingabe des Root-Passworts auf. Der Boot-Vorgang kann erst abgeschlossen werden, wenn ein Passwort eingegeben wird.

Ein Finish-Skript mit dem Namen set_root_pw ist im Verzeichnis auto_install_sample gespeichert. Dieses Finish-Skript zeigt, wie das Root-Passwort automatisch, ohne Eingabeaufforderung definiert werden kann. set_root_pw sehen Sie in Beispiel 24–5.


Hinweis –

Wenn Sie das Root-Passwort eines Systems mit einem Finish-Skript definieren, könnten Benutzer versuchen, das Root-Passwort anhand des verschlüsselten Passworts in dem Finish-Skript zu ermitteln. Sichern Sie das System gegen Versuche ab, das Root-Passwort auf diese Weise zu ermitteln.



Beispiel 24–5 Definieren des Root-Passworts eines Systems mit einem Finish-Skript

 #!/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}

Nachfolgend werden einige Befehle dieses Beispiels erläutert.


Installieren von Software mit dem Installationsprogramm Solaris Web Start unter Verwendung von Finish-Skripten

Sie können Finish-Skripten zur Installation zusätzlicher Software nach der Installation der Betriebssystemumgebung Solaris einsetzen. Einige Softwareprogramme werden von dem Programm Solaris Web Start installiert, das Sie während der Installation zur Eingabe von Informationen auffordert. Damit die Installation ohne Benutzereingriffe abläuft, können Sie das Programm Solaris Web Start mit der Option -nodisplay oder -noconsole ausführen.

Tabelle 24–1 Optionen für Solaris Web Start

Option  

Beschreibung 

-nodisplay

Das Installationsprogramm wird ohne grafische Benutzeroberfläche ausgeführt. Verwenden Sie die Standardproduktinstallation, es sei denn, die Installation wurde mit der Option -locales modifiziert.

-noconsole

Die Installation wird ohne interaktives Text-Konsolengerät ausgeführt. Dies ist zusammen mit -nodisplay nützlich, wenn Sie UNIX-Skripten verwenden wollen.

Weitere Informationen finden Sie in der Manpage installer (1M).