Configurar RHEL5 para consola a través de puerto serie (ttys1)
Después del post anterior sobre configuración de tarjetas iLo, el siguiente paso es poder utilizar la iLo para poder conectarse al sistema operativo que tengamos instalado en la máquina. Si bien es cierto que las tarjetas iLo ya traen esta funcionalidad, es necesario pagar una licencia para obtener una gestión remota completa.
Usando un sistema RHEL es posible configurarlo para que su salida, además de enviarse a la consola estándar (típicamente monitor+teclado), se envíen al puerto serie. En este caso usamos el puerto serie #2 (o ttys1 en Linux), ya que el puerto serie #1 (ttys0) está reservado al puerto físico que usaríamos para conectar el servidor a otro dispositivo.
Lo primero sería configurar grub para que sea visible a través del puerto serie. Es necesario añadir estas 2 líneas en el fichero de configuración /etc/grub.conf :
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/VolGroup00/lv00_raiz # initrd /initrd-version.img #boot=/dev/cciss/c0d0 default=0 timeout=15 #splashimage=(hd0,0)/grub/splash.xpm.gz #hiddenmenu serial --unit=1 --speed=115200 terminal --timeout=15 console serial title Red Hat Enterprise Linux Server (2.6.18-164.9.1.el5) root (hd0,0) kernel /vmlinuz-2.6.18-164.9.1.el5 ro root=/dev/VolGroup00/lv00 rhgb quiet initrd /initrd-2.6.18-164.9.1.el5.img
Advertencia: es necesario desactivar el splashimage, dado que el puerto serie se vuelve muy confuso si uno intenta usarla ;-) . Además es recomendable tener un timeout de al menos 15 segundos para que de tiempo a poder escribir algo en el grub e interrumpir la carga del SO si es que queremos seleccionar algo distinto del valor por defecto.
Una vez hecho esto, es necesario decirle al kernel que, además de enviar la salida al monitor+teclado estándares, lo envíe también al puerto serie. Esto lo conseguimos pasando parámetros adicionales dentro de grub.conf, tal que :
title HP-2.6.18-164.el5-4 root (hd0,0) kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/lv00 rhgb quiet console=tty0 console=ttyS1,115200n8 initrd /HP-initrd-2.6.18-164.el5.img
Es decir, debemos añadir las opciones console=tty0
(para conservar la
salida por monitor+teclad) y console=ttyS1,115200n8
. ttyS1
efectivamente es el puerto serie #2 y 115200 (baudios) es la velocidad
por defecto el puerto virtual de iLo.
Finalmente deberemos configurar que se muestre el típico prompt de login a través del puerto serie. El encargado de esto es el propio proceso init y lo configuraremos en /etc/inittab :
S1:2345:respawn:/sbin/agetty ttyS1 115200 vt102
Para hacer que init recargue el fichero de configuración inittab podemos
ejecutar un init -q
y así no tendremos que reiniciar la máquina :-) .
Como última cosa, deberemos probar todo esto ;-) . Lo habitual es conectarse por telnet/SSH a la tarjeta iLo y desde ahí lanzar el cliente serie virtual , tal que así :
# telnet servidor1-ilo Trying 10.0.0.55... Connected to servidor1-ilo (10.0.0.55). Escape character is '^]'. Login Name: cuenta_admin Password: ******** User:cuenta_admin logged-in to ILOGB8ZZZZZZ.(10.0.0.55) iLO 2 Standard 1.78 at 15:43:13 Jun 10 2009 Server Name: servidor1 Server Power: On hpiLO-> hpiLO-> vsp Starting virtual serial port. Press 'ESC (' to return to the CLI Session. hpiLO-> Virtual Serial Port active: IO=0x02F8 INT=3 Red Hat Enterprise Linux Server release 5.4 (Tikanga) Kernel 2.6.18-164.el5 on an x86_64 servidor1 login: Red Hat Enterprise Linux Server release 5.4 (Tikanga) Kernel 2.6.18-164.el5 on an x86_64 servidor1 login: ESC( hpiLO-> hpiLO-> exit status=0 status_tag=COMMAND COMPLETED CLI session stopped Connection closed by foreign host. #
Como nota relevante, hay que decir que es necesaria una secuencia de escape para volver desde el SO a la iLo y vicevesa: es ESC( , es decir, pulsar escape y luego abrir_paréntesis ;-) . Esto es necesario porque si no, la iLo no sabe cuando una pulsación de teclas es dirigida al SO o ella misma. Con esta combinación tan poco frecuente es posible alternar entre ambos.
La ventaja fundamental del método expuesto es que no nos hace falta la compra de licencias de iLo para tener un acceso fuera de banda al SO. Nos serviría, por ejemplo, en caso de perder la conectividad por red debido a un fallo humano configurando el firewall, las rutas del servidor, etc. O incluso en el caso de que sea necesario pasar el servidor a single user para realizar alguna labor de mantenimiento. Sin embargo, en caso de destrucción total del SO, no nos serviría dado que esto cuenta con que el sistema operativo esté mínimamente usable (y por defecto, la mayoría de LiveCDs de rescate no tienen una configuración de puerto serie por defecto).
Edit (2010-06-23): me he dado cuenta que, si queremos logarnos como root, posiblemente tengamos que añadir TTYS1 como tty segura para root (esto dependiendo de la distro y su configuración de PAM). En RHEL simplemente es necesario añadirlo al final de /etc/securetty :
# cat /etc/securetty [... cosas ...] ttyS1