Entra como superusuario y modifica el /etc/inittab
de la
siguiente manera:
#Serial lines
y añadir
una línea como la siguiente:
s2:45:respawn:/sbin/agetty -L 38400 ttyS1
En la que habrá que cambiar algunas cosas dependiendo del puerto serie del
PC-Linux en donde tengas el terminal conectado:
s1:45:respawn:/sbin/agetty -L 9600 ttyS0
s2:45:respawn:/sbin/agetty -L 9600 ttyS1
s3:45:respawn:/sbin/agetty -L 9600 ttyS2
s4:45:respawn:/sbin/agetty -L 9600 ttyS3
/etc/inittab
, hay que hacer
que el proceso init
relea el fichero inittab
; para ello
ejecutaremos la orden:
init q
Cargar el MSDOS y entrar en el programa de emulación de terminales.
Debes elegir el tipo de terminal ANSI o, VT100, VT102, VT220, VT52.
Cualquiera de ellos debería funcionar como mínimo para comprobar que la línea funciona.
Los parámetros del puerto serie deben ser 9600,N,8,1.
Apretando un par de ENTERs debería salir en la pantalla del terminal el texto de LOGIN.
Si eso no funciona, algo está pasando en las líneas serie.
Espero que hayáis llegado hasta aquí sin mucha dificultad.
inittab
Aquí voy a explicar esa línea que hay que añadir al inittab
.
Qué significa cada cosa:
s2:45:respawn:/sbin/agetty -L 9600 ttyS1
^ ^ ^ ^ ^ ^
| | | | | |
| | | | | `---- /dev/ttyS1 es decir COM2:
| | | | | es el dispositivo que soporta
| | | | | la conexion. Se puede cambiar
| | | | | por ttyS0, ttyS2 o ttyS3.
| | | | |
| | | | |
| | | | `------- Baudios a los que se efectua la
| | | | conexion: puede ser uno de los
| | | | siguientes: 300, 600, 1200, 2400
| | | | 9600, 19200, 38400, 57600, 115200
| | | | Si tienes una UART tipo 8250 o
| | | | 16450 mejor que no pases de 9600
| | | | so pena de freir el PC a interrup-
| | | | ciones. En el terminal da igual
| | | | porque no tiene que hacer nada mas,
| | | | pero en el PC-Linux importa no
| | | | pasarse so pena de perder potencia
| | | | de multiproceso.
| | | | Recomiendo 19200 baudios.
| | | |
| | | |
| | | `-- Programa que va a controlar la comunicacion por
| | | la parte Linux. Existen el controlador
| | | agetty, otro es el uugetty. Tambien esta el getty
| | | Aqui hay que jugar un poco. Yo uso agetty, que no
| | | quiere decir que sea el mejor, pero funciona.
| | |
| | |
| | `----- No puedo asegurar que eso sea cierto, pero me parece que
| | sirve para que el proceso agetty se auto-restaure cuando
| | por alguna razon muera.
| |
| |
| `----- No puedo asegurar que sea cierto, pero me parece que son los
| runlevels validos para que funcione ese terminal.
|
`----- Identificacion. Cuando por ejemplo se hace 'top' salen los procesos
que estan funcionando en la maquina. Una de las columnas del top
es la del terminal donde se estan ejecutando. En los procesos
ejecutados desde este terminal va a salir el 's2' o lo que se
escriba aqui.
agetty
Fijáos que en la línea que estamos estudiando, le paso el parámetro
-L
a agetty
. Si hacéis man agetty
podréis comprobar porqué
hago eso: estoy forzando a que la línea sea local, es decir, que no se
haga la la comprobación del pin de CD
(Carrier Detect). Ese pin
debería estar conectado en el cable, pero no lo hago para mantener la
compatibilidad con el INTERLNK/INTERSVR de Microsoft MSDOS. Una vez más el
Linux se adapta a las necesidades del usuario. (¿¡Me suena esa frase
a WIN95!?)
También podéis activar el protocolo de hardware RTS/CTS, que
acelerará un poco la comunicación. Para hacer eso necesitáis que el cable
os soporte esa función; además deberéis configurar el terminal o mejor
dicho, El software de terminal para que lo haga. Yo no lo tengo
habilitado. Para activar el protocolo por hardware CTS/RTS
pasadle el parámetro '-h
' a agetty
, por ejemplo:
s2:45:respawn:/sbin/agetty -hL 9600 ttyS1
Aquí más que un afinamiento os voy a explicar cómo instalar el Telix 3.22 para DOS para que haga de terminal.
tlx322-1.zip
tlx322-2.zip
tlx322-3.zip
tlx322-4.zip
tlx322-1.zip
y tlx322-1.zip
en un
directorio. Una vez descomprimidos, ejecutad 'MODEMCFG.EXE
' y escoged
alguno de los de 1200 baudios (para que no quiera grabar la RAM del
módem). Seleccionas el puerto correspondiente y sales del programa.
CS.EXE
y el CSS.EXE
.
Yo tengo Telix322 + MSDOS6.2 + KERMIT.EXE
en 1 disco de 720K.
TELIX.EXE
y una vez haya intentado sin resultado
inicializar el módem, pulsas ALT-O (opciones).
agetty
-h
).
Siempre se pueden tener problemas, aunque conozco a bastante gente que ha montado este cable y le ha funcionado.
Qué hacer si no funciona:
Para probar el cable, coges los 2 PCs, les pones en marcha un Telix y pulsas en ambos ALT-P.
Configura ambos PCs a una velocidad de 1200 baudios, N, 8,1.
Configura en cada PC el COM correspondiente.
Escribe desde un PC y tendrás que ver el texto en la pantalla del otro.
Prueba desde ambos PCs. Puede ser que la comunicación sólo sea mono-direccional por algún defecto del cable o del hardware.
Si el cable está bien construido y el hardware no falla eso debería ir bien.
¿Qué velocidad escogiste? Prueba desde 9600 baudios a ver qué tal.
Puede ser que tengas problemas de velocidad. Ejecuta MSD en ambos ordenadores para ver qué UARTs tienen. Seguramente el PC viejo tendrá una 8250, por lo que no es recomendable pasar de 9600, aunque he probado a 19200 y suele funcionar.
Nuestro terminal en hades.udg.es
es un 286-12 con UART 8250 y le
podemos sacar 38400, aunque a veces falla.
¿Las velocidades son las mismas?
La velocidad que escojas en el Telix o el programa que utilices para
emular un terminal tiene que ser la misma que configures en la línea del
/etc/inittab
.
¿Habilitaste algún protocolo por hardware?
Algunos puertos serie no llevan todas las líneas, así que aunque el cable
las tenga, no llegan hasta el Linux o el programa de terminal.
Prueba deshabilitando el protocolo por hardware, es decir, quitando el
parámetro '-h
' del agetty
en /etc/inittab
, y
habilitando el protocolo XON/XOFF por software en el programa de
comunicaciones.
¿Estás seguro que pusiste ttyS0
para COM1, ttyS1
para COM2,
ttyS2
para COM3 y ttyS3
para COM4? Es muy fácil colarse, el
ttySx
es siempre uno menos que el COMx.
Puede que tengas algún problema de IRQs. ¿Estás compartiendo IRQ con algún otro dispositivo?
Haz pruebas con el minicom
(clónico del Telix para Linux) para
saber si los datos al menos llegan.
Comprueba los majors y los minors de los puertos de comunicaciones:
/dev/ttyS0: crw-rw-rw- X USER GROUP 4, 64 xxx xx xx:xx ttyS0
/dev/ttyS1: crw-rw-rw- X USER GROUP 4, 65 xxx xx xx:xx ttyS1
/dev/ttyS2: crw-rw-rw- X USER GROUP 4, 66 xxx xx xx:xx ttyS2
/dev/ttyS3: crw-rw-rw- X USER GROUP 4, 67 xxx xx xx:xx ttyS3
^ ^
| |
| |
| `------MINOR
`-----------MAJOR