Consola serie · 5 min read · Feb 02, 2026

Configurando una consola serie

Configurando una consola serie

Este tutorial te mostrará cómo configurar una consola serie en un sistema Linux y conectarte a ella a través de un cable null modem. Esto es bastante útil si tu servidor Linux está en una configuración sin cabeza (sin teclado ni monitor), ya que te permite obtener fácilmente una consola en el sistema si hay algún problema con él (especialmente problemas de red, cuando SSH no está disponible). Al final, el menú de GRUB aparecerá a través del enlace serie, al igual que los mensajes de arranque (salida al iniciar el sistema). Estoy usando Debian Etch en el servidor y Ubuntu Edgy en mi cliente, aunque esto debería funcionar en cualquier distribución de Linux.

Primeros pasos

Una de las cosas más importantes que necesitamos verificar es que realmente tienes un puerto serie en el servidor :). Echa un vistazo a la parte trasera de tu servidor y verifica si tiene un puerto serie de 9 pines. La mayoría de las placas base tienen uno o dos puertos serie. En el sistema, verifica si Linux está reconociendo los puertos serie:

root@server:~# dmesg | grep tty
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) es un 16550A
00:08: ttyS0 at I/O 0x3f8 (irq = 4) es un 16550A

Esto muestra que mi sistema tiene un puerto serie, ttyS0 (recuerda esto para más adelante).

Configuración de GRUB

El siguiente paso es editar la configuración de GRUB, para que envíe sus mensajes a la consola serie. Una de las cosas más importantes es establecer una contraseña, de lo contrario, cualquiera puede conectar un cable serie, editar la línea de configuración de GRUB mientras el sistema está arrancando (a través de la tecla “e”), y obtener acceso root. Cuando se establece una contraseña, la edición de menú interactivo estará deshabilitada, a menos que se ingrese la contraseña correcta. Para establecer la contraseña, primero necesitamos obtener la versión encriptada de la misma.

Ejecuta grub y usa el comando “md5crypt” para encriptar la contraseña:

grub> md5crypt

Contraseña: **
Encriptada: $1$AlfMq1$FxRolxW5XvSLAOksiC7MD1

Copia la versión encriptada de la contraseña (la necesitamos para el siguiente paso) y luego escribe quit para salir.

Ahora, necesitamos editar la configuración de GRUB. Edita el archivo /boot/grub/menu.lst (escribiendo nano /boot/grub/menu.lst) y encuentra esta sección:

## password ['--md5'] passwd
   # Si se usa en la primera sección de un archivo de menú, deshabilita toda la edición interactiva
   # control (editor de entradas de menú y línea de comandos) y entradas protegidas por el
   # comando 'lock'
   # p.ej. password topsecret
   #      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
   # password topsecret

Debajo de eso, añade:

password --md5 $1$AlfMq1$FxRolxW5XvSLAOksiC7MD1
serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1   
terminal --timeout=10 serial console

Reemplaza $1$AlfMq1$FxRolxW5XvSLAOksiC7MD1 con la forma encriptada de tu contraseña. La segunda línea le dice a GRUB que inicialice el puerto serie a 38,400 bps (la misma velocidad que la consola estándar), 8 bits de datos, sin paridad y 1 bit de parada (básicamente, la configuración estándar). Ten en cuenta que –unit=0 significa que usará el primer puerto serie (ttyS0). Si estás usando el segundo puerto serie (ttyS1), cámbialo a –unit=1. La última línea le dice a GRUB que muestre su menú tanto en la línea serie como en la consola (monitor).

Ahora, también necesitamos editar las secciones del kernel, para que envíen mensajes a la consola serie. Al final de cada línea del kernel, añade console=tty0 console=ttyS0,38400n8 (reemplaza ttyS0 con el puerto serie correcto). En mi caso, terminó viéndose así:

title           Debian GNU/Linux, kernel 2.6.18-4-vserver-686
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-4-vserver-686 root=/dev/hda3 ro console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-4-vserver-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-4-vserver-686 (modo de usuario único)
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-4-vserver-686 root=/dev/hda3 ro single console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-4-vserver-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-3-686
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-3-686 root=/dev/hda3 ro console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-3-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-3-686 (modo de usuario único)
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-3-686 root=/dev/hda3 ro single console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-3-686  
   savedefault  
 

Guarda y sal, presionando CTRL+O (para “salida”, o guardar el archivo), Enter (para aceptar el nombre del archivo) y CTRL+X (para realmente salir).

Permitir inicios de sesión a través de la Consola Serie

Ahora, el menú de GRUB aparecerá a través de la conexión serie, pero aún no estamos escuchando inicios de sesión a través de ella (no hay “getty” ejecutándose en ella todavía). Edita el archivo /etc/inittab y encuentra esta sección:

# Ejemplo de cómo poner un getty en una línea serie (para un terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

Debajo de eso (no me gusta editar las líneas predeterminadas :P), añade:

T0:2345:respawn:/sbin/getty -L ttyS0 38400 vt100

Y eso es todo. Tu servidor ahora mostrará el menú de GRUB a través de la consola serie y también permitirá inicios de sesión (una vez que haya terminado de arrancar).

¡Probémoslo!

Ahora que eso está todo hecho, necesitamos configurar nuestro cliente. Estoy usando GtkTerm en mi laptop, aunque cualquier programa de terminal debería funcionar (siempre que pueda usar un puerto serie. En Windows, HyperTerminal debería funcionar). Mi laptop no tiene un puerto serie, así que estoy usando un adaptador USB a serie que compré en eBay (crea un dispositivo ttyUSB0). Configura tu programa de terminal con estas configuraciones:

  • Puerto (Linux): ttyS0 o ttyS1 (si tu sistema tiene un puerto serie), o ttyUSB0 (si estás usando un convertidor USB a serie).
  • Puerto (Windows): COM1 o COM2
  • Bits por segundo: 38400
  • Bits de datos: 8
  • Paridad: Ninguna
  • Bits de parada: 1
  • Control de flujo: Ninguno, aunque el hardware (RTS/CTS) debería funcionar correctamente

Reinicia el servidor (probablemente desde una conexión SSH, o como sea que editaste la configuración de GRUB arriba), y luego conecta el cable null modem mientras se está iniciando (es decir, en la pantalla del BIOS). Presiona cualquier tecla cuando se te pida, y obtendrás algo como:

Cómo usar la consola serie - menú de GRUB

Esto significa que GRUB está funcionando bien :). Presiona enter y debería arrancar, mostrando todos los mensajes en la ventana del terminal. Una vez que arranque, se verá algo así:

Cómo usar la consola serie - Arrancando

Finalmente, inicia sesión y verifica que funcione bien:

Cómo usar la consola serie - Conectado

Felicidades, todo está configurado y funcionando bien.

¡Espero que hayas disfrutado de este tutorial! :)

Daniel15 (Daniel Lo Nigro)
http://www.daniel15.com/
http://www.dansoftaustralia.net/

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.