En este capítulo se explican las funciones opcionales disponibles para crear herramientas adicionales para la instalación JumpStart personalizada.
Las instrucciones de este capítulo se aplican a servidores SPARC y x86 que se usen para proporcionar archivos JumpStart personalizados, que son los denominados servidores de perfiles. Éstos pueden proporcionar archivos de JumpStart personalizados a diferentes tipos de plataformas. Por ejemplo, un servidor SPARC puede proporcionar archivos de JumpStart personalizados a sistemas SPARC y x86.
Una secuencia de inicio es una secuencia de shell Bourne definida por el usuario que se especifica en el archivo rules; realiza tareas antes de que se instale el software Solaris en un sistema, pero sólo se pueden usar cuando se emplee el programa JumpStart personalizado para instalar el software Solaris.
Use una secuencia de inicio para realizar una de las tareas siguientes:
Creación de perfiles derivados
Copia de seguridad de los archivos antes de la modernización
No especifique en la secuencia de inicio nada que pueda impedir el montaje de los sistemas de archivos en /a durante una instalación inicial o de modernización. Si el programa JumpStart no puede montar los sistemas de archivos en /a, se producirá un error y fallará la instalación.
Durante la instalación, la salida de la secuencia de incio se guarda en /tmp/begin.log. Después de que acabe la instalación, el archivo de registro se redirecciona a /var/sadm/system/logs/begin.log.
Compruebe que root sea propietario de la secuencia de inicio y que los permisos se hayan fijado en 644.
Las variables de entorno de JumpStart personalizado se pueden usar en las secuencias de inicio. Para obtener una lista de variables de entorno, consulte Variables de entorno de JumpStart personalizado.
Guarde las secuencias de inicio en el directorio JumpStart.
Un perfil derivado es un perfil creado de forma dinámica por una secuencia de inicio durante una instalación JumpStart personalizada. Los perfiles derivados se necesitan cuando no se puede configurar el archivo rules donde buscar concordancias de sistemas específicos con un perfil. Por ejemplo, es posible que los perfiles derivados sean necesarios para modelos de sistemas idénticos que tengan componentes de hardware diferentes, como los sistemas con memorias intermedias de trama diferentes.
Para configurar una regla para que use un perfil derivado deberá realizar las siguientes tareas:
Fije el campo perfil en un signo igual (=), en lugar de un perfil.
Fije el campo de inicio en una secuencia de inicio que cree un perfil derivado, dependiente del sistema en el que se pretenda instalar el software Solaris.
Cuando un sistema concuerda con una regla cuyo campo de perfil es un símbolo igual (=), la secuencia de inicio crea el perfil derivado que se usa para instalar el software Solaris en el sistema.
A continuación se ofrece un ejemplo de secuencia de inicio que crea el mismo perfil derivado en cada ocasión. Se puede escribir una secuencia de inicio para crear perfiles derivados diferentes que dependen de la evaluación de las reglas.
#!/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} |
En el ejemplo, la secuencia de inicio debe usar la variable de entorno SI_PROFILE para el nombre del perfil derivado, que se fija en /tmp/install.input de forma predeterminada.
Si se usa una secuencia de inicio para crear un perfil derivado, compruebe que la secuencia no tiene errores. Los perfiles derivados no se verifican con la secuencia check porque no se crean hasta que se ha ejecutado la secuencia de inicio.
Una secuencia de fin es una secuencia del shell Bourne definida por el usuario que se especifica en el archivo rules; realiza tareas una vez instalado el software Solaris, pero antes de que se reinicie el sistema, y se puede utilizar solamente cuando se usa el programa JumpStart personalizado para la instalación de Solaris.
Tareas que se pueden realizar con una secuencia de fin:
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 raíz
Establecimiento de la contraseña root del sistema
Instalación de software adicional
El programa suninstall de Solaris monta los sistemas de archivos en /a, donde siguen montados hasta que se rearranque el sistema. Puede usar la secuencia de fin para agregar, cambiar o eliminar 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 fin se guarda en /tmp/finish.log. Después de que acabe la instalación, el archivo de registro se redirecciona 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 JumpStart personalizado en sus secuencias de fin. Para obtener una lista de variables de entorno, consulte Variables de entorno de JumpStart personalizado.
Guarde las secuencias de fin en el directorio JumpStart.
Mediante una secuencia de fin se pueden agregar archivos del directorio JumpStart a un sistema ya instalado. Puede agregar los archivos porque el directorio 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 todos los archivos que agrega al sistema instalado en el directorio JumpStart.
Introduzca la línea siguiente en la secuencia de fin de cada archivo que desea que se copie en la jerarquía del sistema de archivos recién instalado:
cp ${SI_CONFIG_DIR}/nombre_archivo/a/nombre_ruta |
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 fin 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 fin 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 fin, se reduce el tiempo y se garantiza la coherencia en los paquetes y las modificaciones que se instalen en sistemas diferentes de la sede.
Al usar los comandos pkgadd(1M) o patchadd(1M) en las secuencias de fin, use la opción -R para especificar /a como ruta raíz.
El Ejemplo 24–2 muestra una secuencia de fin que agrega paquetes.
El Ejemplo 24–3 muestra una secuencia de fin que agrega modificaciones.
#!/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} SUNWxyz3 umount ${MNT} rmdir ${MNT} |
A continuación, se describen algunos 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 hacia la raíz.
/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 fin. 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 raíz /a antes de emitir el comando chroot.
Para crear un archivo /etc/mnttab ficticio, agregue la línea siguiente a la secuencia de inicio:
cp /etc/mnttab /a/etc/mnttab
También es posible usar las secuencias de fin para personalizar archivos ya instalados en el sistema. Por ejemplo, la secuencia de fin del Ejemplo 24–4 personaliza el entorno raíz, añadiendo información al archivo .cshrc del directorio raíz (/).
#!/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 } |
Una vez instalado el software Solaris en el sistema, éste se rearranca. Antes de que finalice el proceso de arranque, el sistema pide la contraseña raíz. El sistema no podrá concluir el arranque hasta que alguien finalice el arranque.
Una secuencia de fin denominada set_root_pw se guarda en el directorio auto_install_sample. La secuencia de fin muestra cómo fijar automáticamente la contraseña raíz, sin necesidad de indicador. set_root_pw se muestra en el Ejemplo 24–5.
Si fija la contraseña raíz del sistema con una secuencia de fin, los usuarios podrían intentar descubrir la contraseña raíz desde la contraseña encriptada en la secuencia de fin. Procure proteger el sistema a fin de que los usuarios no puedan descubrir la contraseña raíz.
#!/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 raíz 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 raíz 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 raíz. 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 fin para instalar software adicional después de instalar el sistema operativo Solaris. Algunos programas de software los instala el programa Solaris Web Start, que solicita la introducción de información durante la instalación. Para automatizar la instalación, puede ejecutar el programa Solaris Web Start con las opciones -nodisplay o -noconsole.
Tabla 24–1 Opciones de Solaris Web Start
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).
En lugar de usar el comando add_install_client para especificar la ubicación de los archivos de configuración de JumpStart personalizado, es posible especificar la ubicación de los archivos al arrancar el sistema. Sin embargo, sólo se puede especificar el nombre de un archivo al emitir el comando boot. Por tanto, deberá comprimir todos los archivos de configuración del programa JumpStart personalizado en un solo archivo. El archivo de configuración comprimido puede ser de uno de los siguientes tipos:
tar
tar comprimido
zip
bzip tar
Cambie el directorio JumpStart del servidor de perfiles.
# cd ruta_directorio_jumpstart |
Use una herramienta de compresión para comprimir los archivos de configuración de JumpStart en un solo archivo.
El archivo de configuración comprimido no puede contener rutas relativas. Los archivos de configuración de JumpStart personalizado deben estar en el mismo directorio que el archivo comprimido.
El archivo de configuración comprimido debe contener los archivos siguientes:
de perfil
rules
rules.ok
También puede incluir el archivo sysidcfg en el archivo de configuración comprimido.
Guarde el archivo de configuración comprimido en un servidor NFS o HTTP o en un disco duro local.
El ejemplo siguiente muestra cómo usar el comando tar para crear un archivo de configuración comprimido denominado config.tar. Los archivos de configuración de JumpStart personalizado se encuentran en el directorio /jumpstart.
# cd /jumpstart # tar -cvf config.tar * a profile 1K a rules 1K a rules.ok 1K a sysidcfg 1K |
Este apartado explica cómo crear archivos de configuración de un solo disco y de varios discos. Los archivos de configuración de disco permiten usar pfinstall(1M) desde un sistema único para comprobar perfiles en diferentes configuraciones de disco.
Localice un sistema SPARC con un disco que desee probar.
Conviértase en superusuario.
Cree un archivo de configuración de disco único redirigiendo la salida del comando prtvtoc(1M) a un archivo.
# prtvtoc /dev/rdsk/nombre_dispositivo >archivo_configuración_disco |
El nombre del dispositivo del disco del sistema. nombre_dispositivo debe tener el formato cwtxdys2 o cxdys2.
El nombre del archivo de configuración de disco.
Determine si va a probar la instalación del software Solaris en varios discos.
En caso contrario, deténgase. Ha terminado.
En caso afirmativo, deberá concatenar los archivos de configuración de disco único y guardar la salida en un archivo nuevo.
# cat archivo_disco1 archivo_disco2 >configuración_varios_discos |
El nuevo archivo se convierte en el archivo de configuración de varios discos, como muestra el ejemplo siguiente:
# cat 104_disk2 104_disk3 104_disk5>multi_disk_test |
Determine si los números de destino de los nombres de dispositivo de disco son exclusivos en el archivo de configuración de varios discos que se creó en el paso anterior.
En caso afirmativo, deténgase. Ha terminado.
En caso de que no sea así, abra el archivo con un editor de texto y haga que los números de destino sean exclusivos en los nombres de dispositivos de disco.
Por ejemplo, si suponemos que el archivo contiene el mismo número de destino, t0, para varios nombres de dispositivos de disco, como se muestra aquí:
* /dev/rdsk/c0t0d0s2 partition map ... * /dev/rdsk/c0t0d0s2 partition map |
Cambie el segundo número de destino a t2, como se ilustra a continuación:
* /dev/rdsk/c0t0d0s2 partition map ... * /dev/rdsk/c0t2d0s2 partition map |
El ejemplo siguiente muestra cómo crear un archivo de configuración de disco único 104_test en un sistema SPARC que contiene un disco de 104 Mbytes.
Se redirige la salida del comando prtvtoc a un archivo de configuración de disco único denominado 104_test:
# prtvtoc /dev/rdsk/c0t3d0s2>104_test |
El contenido del archivo 104_test tendrá el siguiente aspecto:
* /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 |
Ha creado archivos de configuración de disco para un sistema SPARC. Comprobación de un perfil incluye información sobre el uso de archivos de configuración de disco para comprobar perfiles.
Busque el sistema basado en x86 que contenga el disco que está probando.
Conviértase en superusuario.
Cree parte del archivo de configuración de disco único guardando la salida del comando fdisk(1M) en un archivo.
# fdisk -R -W archivo_configuración_disco -h /dev/rdsk/nombre_dispositivo |
El nombre del archivo de configuración de disco
El nombre de dispositivo de la disposición fdisk del disco completo. nombre_dispositivo debe tener el formato cwtxdyp0 o cxdyp0.
Adjunte la salida del comando prtvtoc(1M) al archivo de configuración de disco:
# prtvtoc /dev/rdsk/nombre_dispositivo >>configuración_disco |
El nombre del dispositivo del disco del sistema. nombre_dispositivo debe tener el formato cwtxdys2 o cxdys2.
El nombre del archivo de configuración de disco
Determine si va a probar la instalación del software Solaris en varios discos.
En caso contrario, deténgase. Ha terminado.
En caso afirmativo, deberá concatenar los archivos de configuración de disco único y guardar la salida en un archivo nuevo.
# cat archivo_disco1 archivo_disco2 >configuración_varios_discos |
El nuevo archivo se convierte en el archivo de configuración de varios discos, como muestra el ejemplo siguiente:
# cat 104_disk2 104_disk3 104_disk5>multi_disk_test |
Determine si los números de destino de los nombres de dispositivo de disco son exclusivos en el archivo de configuración de varios discos que se creó en el paso anterior.
En caso afirmativo, deténgase. Ha terminado.
En caso contrario, abra el archivo con un editor de texto y haga que los números de destino sean exclusivos.
Por ejemplo, si el archivo contiene el mismo número de destino, t0, para varios nombres de dispositivos de disco, como se muestra aquí:
* /dev/rdsk/c0t0d0s2 partition map ... * /dev/rdsk/c0t0d0s2 partition map |
Cambie el segundo número de destino a t2, como se ilustra a continuación:
* /dev/rdsk/c0t0d0s2 partition map ... * /dev/rdsk/c0t2d0s2 partition map |
El ejemplo siguiente muestra cómo crear un archivo de configuración de disco único 500_test en un sistema x86 que contiene un disco de 500 Mbytes.
Primero, guarde la salida del comando fdisk en un archivo denominado 500_test:
# fdisk -R -W 500_test -h /dev/rdsk/c0t0d0p0 |
El archivo 500_test será, más o menos, así:
* /dev/rdsk/c0t0d0p0 default fdisk table * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * HBA Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * systid: * 1: DOSOS12 * 2: PCIXOS * 4: DOSOS16 * 5: EXTDOS * 6: DOSBIG * 86: DOSDATA * 98: OTHEROS * 99: UNIXOS * 130: SUNIXOS * * Id Act Bhead Bsect Bcyl Ehead Esect Ecyl Rsect Numsect 130 128 44 3 0 46 30 1001 1410 2050140 |
Después, adjunte la salida del comando prtvtoc en el archivo 500_test:
# prtvtoc /dev/rdsk/c0t0d0s2>>500_test |
El archivo 500_test ya es un archivo de configuración de disco completo:
* /dev/rdsk/c0t0d0p0 default fdisk table * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * HBA Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1455 cylinders * * systid: * 1: DOSOS12 * 2: PCIXOS * 4: DOSOS16 * 5: EXTDOS * 6: DOSBIG * 86: DOSDATA * 98: OTHEROS * 99: UNIXOS * 130: SUNIXOS * * Id Act Bhead Bsect Bcyl Ehead Esec Ecyl Rsect Numsect 130 128 44 3 0 46 30 1001 1410 2050140 * /dev/rdsk/c0t0d0s2 partition map * * Dimensions: * 512 bytes/sector * 94 sectors/track * 15 tracks/cylinder * 1110 sectors/cylinder * 1454 cylinders * 1452 accessible cylinders * * Flags: * 1: unmountable * 10: read-only * First Sector Last * Partition Tag Flags Sector Count Sector Mount Directory 2 5 01 1410 2045910 2047319 7 6 00 4230 2043090 2047319 /space 8 1 01 0 1410 1409 9 9 01 1410 2820 422987 |
Ha creado archivos de configuración de disco para un sistema x86. Comprobación de un perfil incluye información sobre el uso de archivos de configuración de disco para comprobar perfiles.
También se pueden usar secuencias de inicio y de fin para crear un programa personalizado de instalación para el software Solaris.
Cuando se especifica un símbolo menos (-) en el campo de perfil, las secuencias de inicio y de fin controlan la forma de instalar el software Solaris en un sistema en lugar del perfil y el programa suninstall de Solaris.
Por ejemplo, si la siguiente regla concuerda con un sistema, la secuencia de inicio x_install.beg y la secuencia de fin x_install.fin instalan el software Solaris en el sistema denominado clover:
hostname clover x_install.beg - x_install.fin |