
Introducción #
Usando Proxmox es muy útil la función de habilitar el puerto serial de las máquinas virtuales para poder comunicarse directamente con la consola sin usar SSH o noVNC.
Esto nos permite algunas ventajas interesantes.
La primera es tener una opción alternativa a noVNC, ya que esta saca la imagen en video de la pantalla. Este comportamiento a veces puede ser molesto, sobre todo cuando se trabajan con tamaños de ventana pequeños ya que se puede mostrar muy distorsionada la pantalla. De otro modo, noVNC no nos permite copiar y pegar texto en la terminal, cosa que para mi resulta muy útil.
Una solución a este problema podría ser habilitar el servicio de SSH, pero esto tiene implicaciones como tener que abrir puertos, configurar el firewall, reglas de autenticación, fail2ban, etc.
Proxmox ofrece, de forma nativa, un terminal serial (basado en xterm.js) accesible desde el propio nodo en lugar de noVNC. En contenedores LXC esta funcionalidad ya viene preconfigurada, pero en máquinas virtuales (KVM/QEMU) es necesario habilitarla manualmente.
Desde la wiki oficial de Proxmox, nos proponen este método de instalación, un método basado en Upstart, que está en desuso desde Ubuntu 15.04 y solo se mantiene por retrocompatibilidad. A continuación se muestra cómo hacerlo usando systemd, de forma más sencilla y adaptada a distribuciones modernas.
Configuración en el nodo de Proxmox #
Primero en el nodo de Proxmox, con la máquina virtual apagada, ejecutamos en la terminal:
qm set <VM-ID> -serial0 socket
En dónde substituiremos <VM-ID> por el número de ID de la máquina virtual a la que queramos añadir la funcionalidad. Una vez hayamos ejecutado esta orden en el nodo de proxmox, ya podremos iniciar la máquina virtual.
Configuración en la máquina virtual (VM) #
Estas instrucciones estan pensadas para un equipo que utilize systemd como init system. Estás instrucciones no funcionarán en máquinas que utilicen otros sistemas de init.
Ya desde la terminal de la máquina virtual, debemos configurar el servicio getty en systemd
systemctl enable serial-getty@ttyS0.service
systemctl start serial-getty@ttyS0.service