domingo, 1 de enero de 2012

OpenBSD: Enabling serial console for KVM/libvirt utilization

Tengo un OpenBSD 5.0 con el que estoy realizando una serie de pruebas en una máquina virtual sobre KVM en CentOS 6. KVM en conjunto con libvirt, provee una serie de herramientas para administrar el host virtualizado, una de ella es virt-manager, una herramienta escrita utilizando GTK que obviamente necesita tener X ejecutándose. La otra es virsh, una CLI para administración de hosts virtuales.

Virsh tiene la interesante opción de poder attachear una consola virtual, la cual previamente debe estar configurada en el sistema operativo guest. Esto es importante para poder realizar con la VM todo el trabajo que no podemos hacer de manera remota utilizando SSH y así tener que evitar abrir virt-manager cada vez que tengamos que agregar algún parámetro al booteo, por ejemplo.

Cabe destacar que esta configuración no solo aplica a hosts virtuales, sino también a hosts físicos que tienen la posibilidad o se conectan mediante consola serie. Los pasos para realizar esto son bastante sencillos:

Vamos a dividir las consolas en dos partes:
  1. La utilizada durante el booteo.
  2. La utilizada durante el login.
Para poder ver los mensajes del booteo en la consola serie, podemos hacer esto de dos formas, la primera añadiendo el paramétro al momento del booteo, en el boot prompt, esta configuración será dinámica y se perderá la próxima vez que haga un reboot del equipo, para ello bajo x86 o x86_64 añadimos el parámetro set tty com0
boot> set tty com0  
Siendo com0 nuestra consola serie. Si estamos bajo una arquitectura Sun/SPARC, y no hay un teclado conectado al equipo, se utilizará la consola serie por default. Caso contrario en el OK prompt añadimos:
ok setenv input-device ttya
ok setenv output-device ttya
ok reset
Ahora bien, esta configuración es dinámica, y como dije anteriormente, se perderá durante el booteo, caso que necesitemos hacerla permanente, con el equipo una vez booteado editamos o creamos el archivo /etc/boot.conf con la siguiente línea dentro:
set tty com0
Esto activará la consola serie al momento del booteo del equipo y todos los mensajes serán impresa utilizando el device com0. Pero para poder utilizar esto durante el login y la administración normal del sistema operativo tenemos que añadir una configuración adicional, editando el archivo /etc/ttys, reemplazamos la siguiente línea:
tty00   "/usr/libexec/getty std.9600"   unknown off
Por esta, que nos iniciara /usr/libexec/getty en el dispositivo char tty00:
tty00   "/usr/libexec/getty std.9600"   vt220   on  secure 
Ahora si, es importante tener un emulador de terminal como Minicom configurado en 9600 baudios 8 bits, sin paridad y 1 de Stop (9600 8N1). Ahora si hacemos un virsh console "OpenBSD-5.0-test", obtendremos la siguiente salida:

virsh # console OpenBSD-5.0-test
Connected to domain OpenBSD-5.0-test
Escape character is ^]
>> OpenBSD/i386 BOOT 3.17
boot> 
booting hd0a:/bsd: 8192892+1088776 [61+367888+353319]=0x98a398
entry point at 0x200120
Copyright (c) 1995-2011 OpenBSD. All rights reserved.  http://www.OpenBSD.org
OpenBSD 5.0 (GENERIC) #43: Wed Aug 17 10:10:52 MDT 2011
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC

---- Output ommited ----


starting network daemons: sshd sendmail inetd.

starting local daemons: cron.
Sun Jan  1 20:33:02 ART 2012
OpenBSD/i386 (fwl-dmz.foobar.net) (tty00)
login: root
Password:
OpenBSD 5.0 (GENERIC) #43: Wed Aug 17 10:10:52 MDT 2011
Welcome to OpenBSD: The proactively secure Unix-like operating system.
You have mail.
fwl-dmz ~:#  

No hay comentarios:

Publicar un comentario