Un script de fin est un script Bourne shell défini par l'utilisateur que vous spécifiez dans le fichier rules. Le logiciel Solaris étant installé sur votre système, un script de fin exécute des tâches avant que le système ne se réinitialise. Vous ne pouvez utiliser de scripts de fin que si vous installez le logiciel Solaris à l'aide de la méthode JumpStart personnalisée.
Voici les tâches que vous pouvez exécuter à l'aide d'un script de fin :
ajout de fichiers ;
ajout de packages individuels ou de patchs en plus de ceux déjà installés dans un groupe de logiciels donné ;
personnalisation de l'environnement root ;
définition du mot de passe root du système ;
installation de logiciels supplémentaires.
Le programme d'installation Solaris monte les systèmes de fichiers du système sur /a. Les systèmes de fichiers restent montés sur /a jusqu'à la réinitialisation de votre système. Vous pouvez utiliser un script de fin pour ajouter des fichiers, en changer ou les supprimer de la nouvelle hiérarchie de systèmes de fichiers. La procédure modifie les systèmes de fichiers montés sur /a.
Lors de l'installation, la sortie du script de fin est placée dans /tmp/finish.log. L'installation étant achevée, le fichier journal est redirigé à /var/sadm/system/logs/finish.log.
Veillez à ce que root possède les scripts de fin et à ce que les autorisations soient fixées sur 644.
Vous pouvez employer des variables environnementales JumpStart personnalisées dans vos scripts de fin. Pour la liste de variables d'environnement, reportez-vous à la section Variables d'environnement de la méthode JumpStart personnalisée.
Enregistrez vos scripts de fin dans le répertoire JumpStart.
Un script de fin vous permet d'ajouter des fichiers du répertoire JumpStart sur un système déjà installé. Vous pouvez ajouter des fichiers, car le répertoire JumpStart est monté sur le répertoire spécifié par la variable SI_CONFIG_DIR. Le répertoire par défaut est /tmp/install_config.
vous pouvez également remplacer des fichiers en les copiant du répertoire JumpStart sur des fichiers existants du système installé.
Copiez tous les fichiers, que vous ajoutez au système installé, vers le répertoire JumpStart.
Insérez la ligne suivante dans le script de fin de chaque fichier que vous souhaitez copier dans la nouvelle hiérarchie des systèmes de fichiers installés :
cp ${SI_CONFIG_DIR}/file_name /a/path_name |
Imaginez, par exemple, une application spéciale, site_prog, développée pour tous les utilisateurs de votre organisation. Si vous placez une copie de site_prog dans le répertoire JumpStart, la ligne suivante d'un script de fin copie site_prog du répertoire JumpStart vers le répertoire /usr/bin d'un système :
cp ${SI_CONFIG_DIR}/site_prog /a/usr/bin |
Vous pouvez créer un script de fin qui procède à l'ajout automatique de packages ou de patchs lorsque le logiciel Solaris est installé sur un système donné. La procédure d'ajout de packages à l'aide d'un script de fin vous permet de gagner du temps et garantit la cohérence d'installation de packages et de patchs sur les différents systèmes de votre organisation.
Lorsque vous utilisez la commande pkgadd(1M) ou patchadd(1M) dans des scripts de fin, utilisez l'option -R pour définir /a comme chemin racine.
L'Exemple 7–3 montre un script de fin qui ajoute des packages.
L'Exemple 7–4 montre un script de fin qui ajoute des patchs.
#!/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} |
Certaines commandes de cet exemple sont décrites dans ce qui suit.
La commande suivante monte un répertoire sur un serveur contenant le package à installer :
mount -f nfs sherlock:/export/package ${MNT} |
La commande suivante crée un fichier temporaire d'administration de packages, admin, pour empêcher la commande pkgadd(1M) d'effectuer des vérifications ou de vous demander de répondre à des questions lors de l'installation d'un package. Utilisez ce fichier temporaire d'administration des packages pour que l'ajout de packages se fasse sans intervention de votre part.
cat >${ADMIN_FILE} <<DONT_ASK |
La commande pkgadd ci-dessous ajoute le package à l'aide de l'option -a, indiquant le fichier d'administration des packages et de l'option -R, indiquant le chemin de la racine.
/usr/sbin/pkgadd -a ${ADMIN_FILE} -d ${MNT} -R ${BASE} SUNWxyz |
#!/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 |
Jusqu'à présent, la commande chroot(1M) était associée aux commandes pkgadd et patchadd dans l'environnement des scripts de fin. Il arrive que certains packages ou patchs soient incompatibles avec l'option -R. Dans ce cas, vous devez créer un fichier /etc/mnttab fictif dans le chemin d'accès à la racine /a avant d'exécuter la commande chroot.
Pour créer un fichier /etc/mnttab fictif, ajoutez la ligne suivante au script de fin :
cp /etc/mnttab /a/etc/mnttab
Vous pouvez également utiliser des scripts de fin pour personnaliser des fichiers installés sur un système. Le script de fin de l'Exemple 7–5 personnalise l'environnement root en ajoutant des informations dans le fichier .cshrc du répertoire racine (/).
#!/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 } |
Une fois le logiciel Solaris installé, le système redémarre. Avant que la procédure d'initialisation ne se termine, le système vous invite à saisir votre mot de passe root. Le système ne s'initialisera pas tant que vous n'aurez pas saisi un mot de passe.
Le script de fin set_root_pw est enregistré dans le répertoire auto_install_sample. Ce script de fin illustre la procédure de définition automatique du mot de passe superutilisateur, sans invite. set_root_pw est indiqué dans Exemple 7–6.
Si vous définissez le mot de passe root avec un script de fin, les utilisateurs peuvent tenter de découvrir le mot de passe depuis le mot de passe chiffré dans le script de fin. Assurez-vous que vous êtes bien protégé contre les tentatives de découverte de votre mot de passe root.
#!/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} |
Certaines commandes de cet exemple sont décrites dans ce qui suit.
La commande suivante affecte à la variable PASSWD un mot de passe root chiffré obtenu d'une entrée existante dans le fichier /etc/shadow d'un système.
#create a temporary input file |
La commande suivante crée le fichier d'entrée temporaire /a/etc/shadow.
cp /a/etc/shadow /a/etc/shadow.orig |
La commande suivante remplace l'entrée root dans le fichier /etc/shadow par le nouveau système installé en utilisant $PASSWD comme champ de mot de passe.
if ( $1 == "root" ) |
La commande suivante supprime le fichier temporaire /a/etc/shadow .
rm -f /a/etc/shadow.orig |
La commande suivante change l'entrée 0 en 1 dans le fichier d'état, de sorte que l'utilisateur n'a pas à entrer son mot de passe superutilisateur. La variable SI_SYS_STATE , dont la valeur actuelle est /a/etc/.sysIDtool.state, permet d'accéder au fichier d'état. Pour éviter de rencontrer des problèmes si cette valeur était modifiée, référencez toujours ce fichier à l'aide de $SI_SYS_STATE. La commande sed indiquée ici contient un caractère de tabulation après 0 et 1.
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ |
Vous pouvez utiliser des scripts de fin pour installer d'autres logiciels, une fois l'installation du système d'exploitation Solaris terminée. Le programme Programme d'installation de Solaris vous invite à saisir des informations durant l'installation. Pour effectuer une installation sans avoir à intervenir, vous pouvez exécuter Programme d'installation de Solaris avec l'option - nodisplay ou -noconsole.
Tableau 7–1 Options d'installation de Solaris
Option |
Description |
---|---|
-nodisplay |
Exécute le programme d'installation sans interface graphique utilisateur. Utilisez l'installation par défaut du produit à moins que l'installation n'ait été modifiée par l'option -locales. |
-noconsole |
Exécute l'installation sans interaction avec une console texte. Cette option est particulièrement utile lorsqu'elle est associée à -nodisplay pour l'exploitation de scripts UNIX. |
Pour de plus amples informations, reportez-vous à la page man installer(1M).