domingo, 6 de noviembre de 2011

The Sun OpenBoot architecture - Part I

Todos los sistemas Sun tienen un firmware denominado PROM que le provee a los mismos las funciones básicas de testeo e inicialización del hardware del equipo. También desde el OpenBoot se puede identificar hardware de terceras partes y cargar drivers genéricos para hacer uso de estos dentro del sistema.
OpenBoot, se encuentra incluido en un chip denominado PROM, en el motherboard, y es la interfaz que se utiliza tanto para bootear un sistema, como para establecer parámetros sobre el funcionamiento del equipo, siendo especialmente útil durante el proceso de booteo, ya que el será el encargado de inicializar en SPARC, los distintos slides para inicializar el sistema.

Para conocer la versión del PROM que se encuentra instalada en el equipo, desde el sistema opeartivo (Solaris), ejecutamos lo siguiente:
#: prtconf -V
OBP 4.16.4 2004/12/18 05:21
Al inicializarse el sistema, se ingresa en una etapa denominada POST (Power On Self Test), en la cual se verifica y testea el hardware conectado al equipo, si todo se encuentra en parámetros normales de funcionamiento se continua con el proceso de booteo, en caso contrario, dependiendo de la severidad de la falla encontrada, o se muestra una alarma, o se interrumpe el booteo. Uno de los test que se realizan en el POST es verificar si se encuentra un teclado conectado (aunque puede ser también una consola serie), y si se envía una señal Stop - D (que puede ser un break en una consola serie).

Stop D: Si es se manda esta secuencia durante el booteo, este es interrumpido, y fuerza a OpenBoot a ingresar en modo de diagnostico.

Stop N: Setea los distintos parámetros alojados en la NVRAM a los valores por default.

Stop A:
Aborta el sistema operativo.

A veces suele resultar útil deshabilitar la secuencia de escape Stop-A en el sistema operativo, y dejándola activa durante el booteo para realiar esto hacemos:
#: sed -i 's/KEYBOARD_ABORT\=disable/KEYBOARD_ABORT\=enable/g' /etc/default/kbd#: kbd -i 
En el OK prompt, podemos identificar alguna información básica del sistema, es para ello que existe el comando banner, que nos mostrará el modelo del equipo, la versión del PROM, la cantidad de memoria física conectada al equipo, la dirección ethernet de la NIC que es utilizada en el PROM, y el ID del host. 
ok bannerSun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 360MHz), Keyboard PresentOpenBoot 3.31, 128 MB (50 ns) memory installed, Serial #11888271.Ethernet address 8:0:20:b5:66:8f, Host ID: 80b5668f.
Para bootear el sistema utilizamos el comando boot, si queremos bootear en single-user utilizamos el parámetro -s: 
ok boot -s
Si queremos bootear desde un CD o DVD en single-user utilizamos los boot cdrom -s.:
ok boot cdrom -s 
boot seguido del parámetro -a va a bootear el sistema de manera interactiva:
ok boot -a
Si queremos conocer los distintos parámetros alojados en la NVRAM, se utiliza printenv, por ejemplo:
ok printenv
Variable Name Value Default Value
tpe-link-test? true true
scsi-initiator-id 7 7
keyboard-click? false
...
ok printenv boot-device
boot-device = disk net
Si se necesita modificar alguno de estos valores, se utiliza setenv:
ok printenv auto-boot?
auto-boot? = true
ok
ok setenv auto-boot? false
auto-boot? = false
Con set-defaults, o set-defaults <parámetro> podemos resetear a su valor por defecto algún parámetro especifico alojado en la NVRAM. 

Si lo que necesitamos es cambiar un parámetro desde el sistema operativo, utilizamos el comando eeprom, que ejecutandose solo listará todos los parámetros que podemos modificar. Cabe destacar que para poder hacer uso de este debemos ser root:
#: eeprom boot-deviceboot-device=disk
#: eeprom 'boot-device=disk2'
Para más información sobre el comando eeprom podemos consultar la manpage del mismo.
En siguientes post vamos a identificar el hardware de booteo, y crear alias de dispositivos.

No hay comentarios:

Publicar un comentario