Una secuencia de comandos de finalización consiste en una secuencia shell de Bourne definida por el usuario que se especifica en el archivo rules. Una secuencia de comandos de finalización efectúa tareas una vez instalado el software Solaris, pero antes de que se reinicie el sistema. se puede utilizar solamente cuando se usa el programa de instalación JumpStart personalizada para la instalación de Solaris.
Tareas que se pueden realizar con una secuencia de finalización:
Adición de archivos
Adición de paquetes o modificaciones, además de las que se instalan en un grupo de software concreto
Personalización del entorno root
Establecimiento de la contraseña root del sistema
Instalación de software adicional
El programa de instalación de Solaris monta los sistemas de archivos del sistema en /a. Los sistemas de archivos permanecen montados en /a hasta que se vuelve a arrancar el sistema. Puede usar la secuencia de finalización para agregar, cambiar o suprimir archivos de la jerarquía del sistema recién instalado, modificando los sistemas de archivos de /a.
Durante la instalación, la salida de la secuencia de comandos de finalización se coloca en /tmp/finish.log. Al término de la instalación, el archivo de registro se redirige a /var/sadm/system/logs/finish.log.
Compruebe que root sea propietario de la secuencia de fin y que los permisos se hayan fijado en 644.
Puede usar las variables de entorno del programa de instalación JumpStart personalizada en sus secuencias de finalización. Si desea obtener una lista de las variables de entorno, consulte Variables de entorno de JumpStart personalizada.
Guarde las secuencias de finalización en el directorio JumpStart.
Con una secuencia de finalización se pueden agregar archivos desde el directorio JumpStart a un sistema ya instalado. Puede agregar los archivos porque el directorio de JumpStart está montado en el directorio que especifica la variable de entorno SI_CONFIG_DIR. El directorio se fija en /tmp/install_config de forma predeterminada.
También se pueden sustituir los archivos, copiándolos desde el directorio JumpStart a los archivos ya existentes del sistema instalado.
Copie en el directorio JumpStart todos los archivos que esté agregando al sistema instalado.
Introduzca la línea siguiente en la secuencia de finalización de cada archivo que desea que se copie en la jerarquía del sistema de archivos recién instalado:
cp ${SI_CONFIG_DIR}/file_name /a/path_name |
Por ejemplo, suponga que dispone de una aplicación especial site_prog desarrollada para todos los usuarios de la sede. Si coloca una copia de site_prog en el directorio JumpStart, la línea siguiente de una secuencia de finalización copia site_prog desde el directorio JumpStart en un directorio /usr/bin del sistema:
cp ${SI_CONFIG_DIR}/site_prog /a/usr/bin |
Se puede crear una secuencia de finalización para que agregue paquetes o modificaciones automáticamente después de instalar el software Solaris en el sistema. Al agregar paquetes con una secuencia de finalización, se reduce el tiempo y se garantiza la coherencia en los paquetes y las modificaciones que se instalen en sistemas diferentes del sitio.
Al utilizar los comandos pkgadd(1M) o patchadd(1M) en secuencias de comandos de finalización, emplee la opción -R para especificar /a como ruta root.
El Ejemplo 4–3muestra un ejemplo de una secuencia de comandos de finalización que añade paquetes.
El Ejemplo 4–4 muestra una secuencia de finalización que agrega revisiones.
#!/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 continuación, se describen los comandos de este ejemplo:
El siguiente comando monta un directorio en un servidor que contiene el paquete que se instala.
mount -f nfs sherlock:/export/package ${MNT} |
El siguiente comando crea un archivo de administración de paquetes temporal, admin para obligar al comando pkgadd(1M) a que no realice comprobaciones ni haga preguntas durante la instalación de un paquete. El archivo temporal de administración de paquetes se utiliza para realizar una instalación automática durante la adición de paquetes.
cat >${ADMIN_FILE} <<DONT_ASK |
El comando pkgadd mostrado a continuación agrega el paquete utilizando la opción -a, que especifica el archivo de administración del paquete, y la opción -R, que especifica la ruta de root.
/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 |
Antes se usaba el comando chroot(1M) con los comandos pkgadd y patchadd en el entorno de secuencias de finalización. En raras ocasiones, algunos paquetes o modificaciones no funcionan con la opción -R. Debe crear un archivo /etc/mnttab ficticio en la ruta de root /a antes de emitir el comando chroot.
Para crear un archivo /etc/mnttab ficticio, agregue la línea siguiente a la secuencia de comandos de finalización:
cp /etc/mnttab /a/etc/mnttab
Las secuencias de comandos de finalización también son válidas para personalizar archivos que ya estén instalados en un sistema. Por ejemplo, la secuencia de finalización del Ejemplo 4–5 personaliza el entorno root agregando información al archivo .cshrc en el directorio root (/).
#!/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 } |
Después de instalar el software Solaris en el sistema, el sistema rearranca. Antes de que finalice el proceso de arranque, el sistema pide la contraseña root. El sistema no podrá concluir el arranque hasta que alguien finalice el arranque.
Una secuencia de finalización denominada set_root_pw se guarda en el directorio auto_install_sample. La secuencia de finalización muestra cómo fijar automáticamente la contraseña root, sin necesidad de indicador. set_root_pw se muestra en el Ejemplo 4–6.
Si establece la contraseña root del sistema con una secuencia de comandos de finalización, los usuarios podrían intentar descubrirla a partir de la contraseña cifrada en la secuencia de comandos de finalización. Procure proteger el sistema a fin de que los usuarios no puedan descubrir la contraseña 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} |
A continuación, se describen algunos comandos de este ejemplo:
El siguiente comando establece la variable PASSWD en una contraseña root encriptada que se obtiene de una entrada existente en un archivo /etc/shadow del sistema.
#create a temporary input file |
El siguiente comando crea un archivo de entrada temporal de /a/etc/shadow.
cp /a/etc/shadow /a/etc/shadow.orig |
El siguiente comando cambia la entrada root del archivo /etc/shadow por el sistema recién instalado con $PASSWD como campo de contraseña.
if ( $1 == "root" ) |
El siguiente comando elimina el archivo de entrada temporal /a/etc/shadow.
rm -f /a/etc/shadow.orig |
El siguiente comando cambia la entrada de 0 a 1 en el archivo de estado para que no se le pida al usuario la contraseña root. Es posible acceder al archivo de estado mediante la variable SI_SYS_STATE, que tiene un valor actual de /a/etc/.sysIDtool.state. Para evitar problemas con las secuencias si cambia este valor, haga siempre referencia a este archivo con la variable de entorno $SI_SYS_STATE. El comando sed que aparece aquí contiene un carácter de tabulación después de 0 y después de 1.
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ |
Se pueden usar las secuencias de finalización para instalar software adicional después de instalar el sistema operativo Solaris. Programa de instalación de Solaris solicitará información durante el proceso de instalación. Para automatizar la instalación, puede ejecutar el programa Programa de instalación de Solaris con las opciones -nodisplay o -noconsole.
Tabla 4–1 Opciones de instalación de Solaris
Opción |
Descripción |
---|---|
-nodisplay |
Ejecuta el instalador sin interfaz gráfica de usuario. Use la instalación predeterminada del producto, salvo que se hubiera modificado con la opción -locales. |
-noconsole |
Ejecuta la instalación sin un dispositivo de consola de texto interactivo. Es útil cuando se usa junto con la opción -nodisplay para el uso con secuencias UNIX. |
Para obtener más información, consulte la página de comando man installer(1M).