Solaris 9 Installationshandbuch

Kapitel 24 Verwenden der optionalen Funktionen der benutzerdefinierten JumpStart-Installation (Vorgehen)

In diesem Kapitel werden die optionalen Funktionen beschrieben, die zum Erstellen zusätzlicher Tools für die benutzerdefinierte JumpStart-Installation zur Verfügung stehen.

Erstellen von Begin-Skripten

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

Verwenden Sie ein Begin-Skript, um folgende Aufgaben auszuführen:

Wichtige Informationen zu Begin-Skripten

Erstellen abgeleiteter Profile mit einem Begin-Skript

Ein abgeleitetes Profil wird während einer benutzerdefinierten JumpStart-Installation dynamisch von einem Begin-Skript erstellt. Abgeleitete Profile benötigen Sie, wenn Sie die Datei rules nicht so einrichten können, dass bestimmte Systeme einem Profil zugeordnet werden. So benötigen Sie eventuell abgeleitete Profile für identische Systemmodelle, die mit unterschiedlichen Hardwarekomponenten ausgestattet sind, also zum Beispiel für Systeme mit unterschiedlichen Grafikkarten.

Um eine Regel so einzurichten, dass ein abgeleitetes Profil verwendet wird, müssen Sie die folgenden Schritte ausführen:

Wenn ein System einer Regel entspricht, die im Profilfeld ein Gleichheitszeichen (=) aufweist, erstellt das Begin-Skript das abgeleitete Profil, das zum Installieren der Solaris-Software auf dem System verwendet wird.

Das folgende Beispiel zeigt ein Begin-Skript, das jedes Mal dasselbe abgeleitete Profil erstellt. Sie können auch ein Begin-Skript schreiben, das je nach der Auswertung von Regeln unterschiedliche abgeleitete Profile erstellt.


Beispiel 24-1 Begin-Skript zum Erstellen eines abgeleiteten Profils

#!/bin/sh
echo "install_type        initial_install"> ${SI_PROFILE}
echo "system_type         standalone">> ${SI_PROFILE}
echo "partitioning        default">> ${SI_PROFILE}
echo "cluster             SUNWCprog">> ${SI_PROFILE}
echo "package       SUNWman     delete">> ${SI_PROFILE}
echo "package       SUNWolman   delete">> ${SI_PROFILE}
echo "package       SUNWxwman   delete">> ${SI_PROFILE}

In diesem Beispiel muss das Begin-Skript den Namen des abgeleiteten Profils mithilfe der Umgebungsvariablen SI_PROFILE ermitteln, die standardmäßig auf /tmp/install.input gesetzt ist.



Hinweis -

Wenn zum Erstellen eines abgeleiteten Profils ein Begin-Skript verwendet wird, stellen Sie sicher, dass das Skript keine Fehler aufweist. Ein abgeleitetes Profil lässt sich nicht mit dem Skript check verifizieren, denn abgeleitete Profile werden erst mit Ausführung des Begin-Skripts erstellt.


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

Mit einem Finish-Skript können Sie Dateien aus dem JumpStart-Verzeichnis zu einem bereits installierten System 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 zu einem installierten System hinzufügen wollen, 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 zeigt ein Beispiel für ein Finish-Skript zum Hinzufügen von Packages.


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}1
  cat>${ADMIN_FILE} <<DONT_ASK2
  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} SUNWxyz3 
  umount ${MNT}
  rmdir ${MNT}
  1. Hängt ein Verzeichnis auf einem Server ein, das das zu installierende Package enthält.

  2. Erstellt eine temporäre Package-Administrationsdatei, admin, und bewirkt, dass der Befehl pkgadd( 1M) bei der Installation eines Package keine Prüfung vornimmt und keine Eingabeaufforderungen ausgibt. Verwenden Sie die temporäre Package-Administrationsdatei, damit die Installation beim Hinzufügen von Packages ohne Benutzereingriff abläuft.

  3. Fügt das Package mit der Option -a zur Angabe der Package-Administrationsdatei und mit der Option -R zur Angabe des Root-Pfades hinzu.



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-3 wird zum Beispiel die Root-Umgebung durch Anhängen von Informationen an die Datei .cshrc im Root-Verzeichnis (/) angepasst.


Beispiel 24-3 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-4.


Beispiel 24-4 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 file1
 cp /a/etc/shadow /a/etc/shadow.orig2
 
	 mv /a/etc/shadow /a/etc/shadow.orig
 	nawk -F: '{
         if ( $1 == "root" )3
           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.orig4
 # set the flag so sysidroot won't prompt for the root password
 sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE}> /tmp/state.$$5
  mv /tmp/state.$$ ${SI_SYS_STATE}
  1. Setzt die Variable PASSWD auf ein verschlüsseltes Root-Passwort, das aus einem vorhandenen Eintrag in der Datei /etc/shadow eines Systems abgerufen wird.

  2. Erstellt eine temporäre Eingabedatei von /a/etc/shadow .

  3. Modifiziert den Root-Eintrag in der Datei /etc/shadow für das neu installierte System unter Verwendung von $PASSWD als Passwortfeld.

  4. Entfernt die temporäre /a/etc/shadow-Datei.

  5. Ändert den Eintrag in der state-Datei von 0 in 1, so dass der Benutzer nicht zur Eingabe des Root-Passworts aufgefordert wird. Der Zugriff auf die state-Datei erfolgt über die Variable SI_SYS_STATE, die zurzeit den Wert /a/etc/.sysIDtool.state aufweist. Damit in den Skripten keine Probleme auftreten, wenn sich dieser Wert ändert, referenzieren Sie diese Datei immer mithilfe von $SI_SYS_STATE. Der hier gezeigte sed-Befehl enthält nach dem Zeichen 0 und nach dem Zeichen 1 ein Tabulatorzeichen.



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.


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).

Erstellen einer komprimierten Konfigurationsdatei

Anstatt den Speicherort der benutzerdefinierten JumpStart-Konfigurationsdateien mit dem Befehl add_install_client anzugeben, können Sie den Speicherort dieser Dateien auch beim Booten des Systems angeben. Sie können jedoch nur den Namen einer Datei angeben, wenn Sie den Befehl boot absetzen. Daher müssen Sie alle benutzerdefinierten JumpStart-Konfigurationsdateien in eine Datei komprimieren. Die komprimierte Konfigurationsdatei kann eines der folgenden Formate aufweisen:

So erstellen Sie eine komprimierte Konfigurationsdatei

  1. Wechseln Sie in das JumpStart-Verzeichnis auf dem Profilserver.


    # cd Jumpstart-Verzeichnispfad
    
  2. Komprimieren Sie die benutzerdefinierten JumpStart-Konfigurationsdateien mit einem Komprimierungstool in eine Datei.


    Hinweis -

    Die komprimierte Konfigurationsdatei darf keine relativen Pfade enthalten. Die benutzerdefinierten JumpStart-Konfigurationsdateien müssen sich in demselben Verzeichnis wie die komprimierte Datei befinden.


    Die komprimierte Konfigurationsdatei muss die folgenden Dateien enthalten:

    • Profil

    • rules

    • rules.ok

    Sie können auch die Datei sysidcfg in die komprimierte Konfigurationsdatei aufnehmen.

  3. Speichern Sie die komprimierte Konfigurationsdatei auf einem NFS-Server, einem HTTP-Server oder auf einer lokalen Festplatte.

Beispiel für eine komprimierte Konfigurationsdatei

Das folgende Beispiel zeigt, wie Sie mit dem Befehl tar eine komprimierte Konfigurationsdatei mit dem Namen config.tar erstellen können. Die benutzerdefinierten JumpStart-Konfigurationsdateien befinden sich im Verzeichnis /jumpstart.


Beispiel 24-5 Erstellen einer komprimierten Konfigurationsdatei


# cd /jumpstart
# tar -cvf config.tar *
a profile 1K
a rules 1K
a rules.ok 1K
a sysidcfg 1K

Erstellen von Festplattenkonfigurationsdateien

In diesem Abschnitt wird beschrieben, wie Sie Konfigurationsdateien für einzelne und mehrere Festplatten erstellen können. Mithilfe von Festplattenkonfigurationsdateien können Sie pfinstall (1M) auf einem einzigen System zum Testen von Profilen für unterschiedliche Festplattenkonfigurationen einsetzen.

So erstellen Sie eine Festplattenkonfigurationsdatei

  1. Suchen Sie ein System mit einer zu testenden Festplatte.

  2. Melden Sie sich als Superuser an.

  3. Erstellen Sie eine Einzelplatten-Konfigurationsdatei, indem Sie die Ausgabe des Befehls prtvtoc(1M) in eine Datei umleiten.


    # prtvtoc /dev/rdsk/Gerätename>Plattenkonfigurationsdatei
    

    /dev/rdsk/Gerätename

    Der Gerätename der Festplatte des Systems. Der Gerätename muss das Format cwtxdy s2 oder cxd ys2 aufweisen.

    Plattenkonfigurationsdatei

    Der Name der Festplattenkonfigurationsdatei. 

  4. Ermitteln Sie, ob Sie die Installation der Solaris-Software auf mehreren Festplatten testen müssen.

    • Wenn nicht, sind Sie jetzt fertig.

    • Wenn ja, verketten Sie die verschiedenen Einzelplatten-Konfigurationsdateien und speichern die Ausgabe in einer neuen Datei.


      # cat Plattendatei1 Plattendatei2>Konfig_datei_für_mehrere_Platten
      

      Die neue Datei wird zur Multiplatten-Konfigurationsdatei, wie im folgenden Beispiel gezeigt:


      # cat 104_disk2 104_disk3 104_disk5>multi_disk_test
      
  5. Ermitteln Sie, ob die Zielnummern in den Festplattengerätenamen innerhalb der im vorherigen Schritt erstellten Multiplatten-Konfigurationsdatei eindeutig sind.

    • Wenn ja, sind Sie jetzt fertig.

    • Wenn nicht, öffnen Sie die Datei mit einem Texteditor, und geben Sie eindeutige Zielnummern in die Festplattengerätenamen ein.

      Angenommen, die Datei enthält wie im folgenden Beispiel gezeigt dieselbe Zielnummer, t0, für verschiedene Festplattengerätenamen:

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t0d0s2 partition map

      Ändern Sie die zweite Zielnummer wie hier gezeigt in t2:

      * /dev/rdsk/c0t0d0s2 partition map
      ...
      * /dev/rdsk/c0t2d0s2 partition map

Beispiel für eine Festplattenkonfigurationsdatei

Das folgende Beispiel zeigt, wie Sie eine Einzelplatten-Konfigurationsdatei, 104_test, auf einem System mit einer 104-MB-Festplatte erstellen können.


Beispiel 24-6 Erstellen einer Festplattenkonfigurationsdatei

Sie leiten die Ausgabe des Befehls prtvtoc in eine Einzelplatten-Konfigurationsdatei mit dem Namen 104_test um:


# prtvtoc /dev/rdsk/c0t3d0s2>104_test

Der Inhalt der Datei 104_test sieht etwa folgendermaßen aus:

* /dev/rdsk/c0t3d0s2 partition map
*
* Dimensions:
*     512 bytes/sector
*      72 sectors/track
*      14 tracks/cylinder
*    1008 sectors/cylinder
*    2038 cylinders*    2036 accessible cylinders
* Flags:
*   1: unmountable
*  10: read-only
*
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       1      2    00          0     164304   164303   /
       2      5    00          0    2052288  2052287  
       3      0    00     164304     823536   987839   /disk2/b298
       5      0    00     987840     614880  1602719   /install/298/sparc/work
       7      0    00    1602720     449568  2052287   /space

Hier wurde beschrieben, wie Sie Festplattenkonfigurationsdateien erstellen können. "Testen eines Profils" enhält Informationen für den Einsatz von Festplattenkonfigurationsdateien zum Testen von Profilen.


Verwenden eines standortspezifischen Installationsprogramms

Sie können mithilfe von Begin- und Finish-Skripten auch ein eigenes Installationsprogramm zur Installation der Solaris-Software erstellen.

Wenn Sie im Profilfeld ein Minuszeichen (-) eingeben, wird die Installation von Solaris auf einem System von Begin- und Finish-Skripten und nicht über ein Profil und das Programm Solaris suninstall-Programm gesteuert.

Wenn zum Beispiel ein System der folgenden Regel entspricht, wird die Solaris-Software mit dem Begin-Skript x_install.beg und dem Finish-Skript x_install.fin auf dem System mit dem Namen clover installiert:

hostname clover x_install.beg - x_install.fin