4.6. Dispositivos Serie y el Indicador login: (ingreso)

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 Capítulo 7 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.

4.6.1. Configuración del Demonio mgetty

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