Llegó a ser muy común que una instalación basada en Unix incluyera una máquina servidor y muchos terminales “tontos” (sin procesamiento) de caracteres o módems para acceso telefónico. Hoy en día este tipo de configuraciones son menos comunes, lo que supone una buena noticia para mucha gente interesada en trabajar así, ya que estos terminales sin procesamiento son muy baratos actualmente. Las configuraciones con módems de acceso telefónico no han dejado de ser comunes, pero en estos tiempos probablemente se utilicen como soporte para ingresos mediante SLIP o PPP (temas tratados en
y Capítulo 8?) más que para un simple ingreso. En cualquier caso, cada uno de estos métodos puede hacer uso de un programa sencillo llamado programa
getty.
El término
getty es probablemente una abreviatura de “get tty” (conseguir tty). Un programa
getty abre un dispositivo serie, lo configura apropiadamente, configura opcionalmente un módem, y espera a que se realice una conexión. Una conexión activa en un dispositivo serie se indica normalmente mediante la patilla Data Carrier Detect (DCD) en el dispositivo serie que ha sido activado. Cuando se produce esta detección, el programa
getty llama a un programa que muestra el punto indicativo
login:, y es el que maneja realmente el ingreso al sistema. Cada uno de los terminales virtuales (por ejemplo,
/dev/tty1) en GNU/Linux tiene un
getty ejecutándose para él.
Hay varias implementaciones distintas de
getty, cada una diseñada para adaptarse a ciertas configuraciones mejor que a otras. El
getty que describiremos aquí se llama
mgetty. Es bastante conocido porque proporciona todo tipo de características que lo hacen especialmente indicado para uso con módems, aceptando incluso programas automáticos para fax y módems de voz. Nos concentraremos en configurar
mgetty para responder a las llamadas convencionales de datos, y dejaremos el resto para que explore usted en función de sus necesidades.
El demonio
mgetty está disponible en forma de código fuente en ftp://alpha.greenie.net/pub/mgetty/source/, y prácticamente todas las distribuciones de GNU/Linux lo incluyen como paquete. El demonio
mgetty se diferencia de la mayoría de las implementaciones de programas
getty en que ha sido diseñado específicamente para módems compatibles con Hayes. Admite aún conexiones directas de terminales, pero se adapta de forma especialmente buena a aplicaciones de llamadas telefónicas. En lugar de emplear la señal DCD para detectar una llamada entrante, espera a la escucha del mensaje
RING generado por la mayoría de módems modernos cuando detectan una llamada entrante y no están configurados para responder automáticamente.
El ejecutable principal es
/usr/sbin/mgetty, y su fichero de configuración se llama
/etc/mgetty/mgetty.config. Hay otros programas y ficheros de configuración que cubrirán otros rasgos concretos de
mgetty.
La configuración, en gran parte de los sistemas, es cuestión únicamente de editar el fichero
/etc/mgetty/ mgetty.config y añadir las entradas apropiadas a
/etc/inittab para que
mgetty se ejecute automáticamente.
Ejemplo 4-6 muestra un fichero muy simple de configuración de
mgetty. Este ejemplo configura dos dispositivos serie. El primero,
/dev/ttyS0, se refiere a un módem compatible con Hayes a 38.400 bps. El segundo,
/dev/ttyS1, se corresponde con un terminal VT100 conectado directamente, a 19.200 bps.
El fichero de configuración acepta opciones globales y específicas de cada puerto. En nuesto ejemplo, empleamos una opción global para fijar la velocidad a 38.400 bps. Este valor es heredado por el puerto
ttyS0. Los puertos a los que aplicamos
mgetty emplean este ajuste de velocidad a no ser que sea reemplazado por un ajuste de velocidad explícito para el puerto, tal y como hemos hecho en la configuración de
ttyS1.
La palabra clave
debug controla la cantidad de texto del registro de actividad de
mgetty. La palabra clave
data-only en la configuración de
ttyS0 hace que
mgetty desprecie las características de fax del módem, para que funcione únicamente como módem de datos. La palabra
direct en la configuración de
ttyS1 avisa a
mgetty para que no lleve a cabo ninguna inicialización para módem en ese puerto. Finalmente, con
toggle-dtr se consigue que
mgetty no trate de colgar la línea bajando la patilla DTR (Data Terminal Ready) en el interfaz serie; algunos terminales no reaccionan bien ante esto.
También puede usted elegir dejar vacío el fichero
mgetty.config y emplear argumentos en la línea de órdenes para especificar la mayoría de esos mismos parámetros. La documentación que acompaña a la aplicación incluye una completa descripción de los parámetros del fichero de configuración de
mgetty y los argumentos de línea de órdenes. Observe el siguiente ejemplo.
Hemos de añadir dos entradas al fichero
/etc/inittab para activar esta configuración. El fichero
inittab es el fichero de configuración de la orden
init de Unix System V. Esta orden es la encargada de la iniciación del sistema; proporciona un medio para ejecutar programas automáticamente al iniciar la máquina y volver a ejecutarlos cuando terminan. Es muy apropiada para los objetivos de ejecutar un programa
getty.
|| T0:23:respawn:/sbin/mgetty ttyS0
T1:23:respawn:/sbin/mgetty ttyS1 ||
Cada línea del fichero
/etc/inittab contiene cuatro campos, separados por dos puntos. El primero es un identificador que etiqueta de forma única cada entrada del fichero; tradicionalmente se utilizan dos caracteres, pero las versiones más modernas permiten cuatro. El segundo campo es la lista de niveles de ejecución en los que deberá estar activa. Un nivel de ejecución es un mecanismo para proporcionar distintas configuraciones del equipo y se implementa mediante el uso de árboles de scripts de inicio, almacenados en directorios llamados
/etc/rc1.d,
/etc/rc2.d, etc. Esta característica es implementada típicamente de forma muy simple, por lo que usted debe modelar sus entradas en el fichero basándose en otras del mismo, o bien consultar la documentacion de su sistema para obtener más información. El tercer campo describe cuándo hay que llevar a cabo la acción. Para los propósitos de ejecutar un programa
getty, este campo debe ser ajustado a
respawn, lo que significa que la orden se re-ejecutará automáticamente cuando muera. Hay otras opciones también, pero no son útiles para nuestros propósitos aquí. El cuarto campo es la orden real que ha de ejecutarse; aquí es donde especificamos la orden
mgetty y cualquier argumento que queramos pasarle. En nuestro ejemplo simple, ejecutamos y reiniciamos
mgetty siempre que el sistema está operando en los niveles de ejecución dos o tres, y le suministramos como argumento el nombre del dispositivo que queremos utilizar. La orden
mgetty asume
/dev/, así que no hemos de proporcionarlo.
Este capítulo ha sido una introducción rápida a
mgetty y cómo ofrecer un punto identificativo de ingreso al sistema en dispositivos serie. Podrá encontrar información más extensiva en el Serial-HOWTO.
Una vez que haya editado los ficheros de configuración ha de recargar
init para hacer efectivos los cambios. Simplemente envíe una señal hangup al proceso
init; siempre tiene un identificador de proceso 1, así que puede usar sin problemas:
|| #
kill -HUP 1 ||