Accedir a un sistema connectant per un port serie

Última actualització: Desembre de 2015

Si tenim un servidor al que normalment no tenim connectat pantalla, pot ser molt útil poder accedir-lo via port serie. Per a activar aquesta opció només hem d'afegir una línia com aquesta a l'arxiu /etc/inittab:

# Example how to put a getty on a serial line (for a terminal)

#

#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100

#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

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

# també podem posar vt102, en alguns llocs he llegit que la emulació de terminal és millor

Ara, quan s'inicii el servidor i quan acabi el procés d'arranc podrem accedir al servidor des d'un altre ordinador si ens connectem amb un cable null-modem i amb un programa com putty, especificant que es connectem pel port serie i especificant la velocitat de 38400 bauds.

Ens pot passar que el servidor tingui un problema i no completi el procés d'arranc (per exemple no s'ha trobat un disc que es necessari muntar segons especifica /etc/fstab). En aquest cas no ens podríem arribar a connectar ja que no s'ha completat el procés d'arranc. Abans d'anar a buscar un monitor podrem provar de connectar un teclat PS/2 a cegues i pitjar Ctrl + D. Aquesta combinació de tecles en Debian permet completar el procés d'arranc encara amb problemes. A partir d'aquí un cop connectats a l'equip comprovem quin ha estat el problema per tal de solucionar-lo (el primer és fer un dmesg).

Connectar amb putty

Última actualització: octubre de 2019

Per a connectar des de putty (o algun altre terminal virtual que pugui connectar per port serie), ens farà falta conèixer el nom del port al que tenim connectat el dispositiu a controlar.

Farem servir aquest script:

#!/bin/bash

for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do

(

syspath="${sysdevpath%/dev}"

devname="$(udevadm info -q name -p $syspath)"

[[ "$devname" == "bus/"* ]]

eval "$(udevadm info -q property --export -p $syspath)"

[[ -z "$ID_SERIAL" ]]

echo "/dev/$devname - $ID_SERIAL"

)

done

per a obtenir els noms. Com a resultat obtindrem, alguna cosa semblant a:

/dev/ttyUSB0 - Prolific_Technology_Inc._USB-Serial_Controller_D

/dev/dri/controlD65 - DisplayLink_TOSHIBA_Video_Dock_0110-000000

/dev/fb1 - DisplayLink_TOSHIBA_Video_Dock_0110-000000

/dev/snd/controlC1 - 0d8c_USB_Sound_Device

/dev/snd/pcmC1D0c - 0d8c_USB_Sound_Device

/dev/snd/pcmC1D0p - 0d8c_USB_Sound_Device

/dev/input/event7 - 0d8c_USB_Sound_Device

/dev/hidraw4 - 0d8c_USB_Sound_Device

/dev/input/event8 - PixArt_USB_Optical_Mouse

/dev/input/mouse1 - PixArt_USB_Optical_Mouse

/dev/hidraw5 - PixArt_USB_Optical_Mouse

...

Amb aquest resultat podrem configurar putty per a efectuar la connexió amb aquests paràmetres, per exemple:

* Connection type: Serial

* Serial line: /dev/ttyUSB0

* Speed: 38400