Platine AX3000 TCP/IP sous Unix/Linux |
TELECHARGEMENT DE FIRMWARE
Le protocole TFTP sous Unix/Linux
Le protocole BOOTP sous Unix/Linux
GESTION D'UN PERIPHERIQUE
CONNECTE A LA PLATINE
Imprimantes : protocole lpd ou tty ?
Connecter un terminal série sur AUX1 ou AUX2 ?
Comment gérer un périphérique par séquences escape ?
Comment affecter un tty fixe à un port auxiliaire ou à une session écran ?
Que sont printd et rtty ?
Comment un applicatif peut identifier une Platine TCP/IP ?
Comment configurer une Platine TCP/IP à distance ?
Comment gérer le clavier en scancode ?
L'affichage de la Platine est lent ou saccadé
L'imprimante LPD ne marche pas
Les imprimantes LPD sous AIX se désactivent lors de certaines impressions
Sous SCO, des impressions LPD sont tronquées
Les imprimantes gérées en tty ne marchent pas au boot de la machine SCO
Rappel : Si vous n'avez pas trouvé de réponse à vos questions ici, les FAQ générales peuvent peut être y répondre !
Le protocole tftp est disponible en standard sous Unix. Par contre ce protocole n'est pas activé par défaut.
Déclaration du protocole tftp
La déclaration du protocole tftp est faîte dans le fichier /etc/inetd.conf. Pour activer ce protocole enlevez le # au début de la ligne dédiée au tftp. Pour information, voici des exmples de lignes tftp selon les principaux systèmes d'exploitation :
tftp dgram udp wait nouser /etc/tftpd tftpd |
tftp dgram udp nowait nobody /usr/sbin/tftpd tftpd -n |
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd / |
tftp dgram udp wait nobody /usr/sbin/in.tftpd in.tftpd |
Note : il est préférable d'activer le protocole tftp en mode 'public' (pas de contrôle sur le nom utilisateur ou sur le répertoire de stockage des fichiers firmware).
Activation du protocole tftp
Pour prendre en compte ces modifications, rebootez la machine Unix ou envoyez le signal 1 au process inetd (kill -1 pid).
Le protocole bootp est un protocole permettant de récupérer des renseignements nécessaires au téléchargement des firmwares par tftp (nom du fichier et différentes adresses IP). Ce protocole est livré en standard sous Unix ce qui n'est pas le cas d'autres systèmes d'exploitation (Windows NT par exemple).
Activation du protocole bootp : éditez le fichier /etc/inetd.conf. Enlevez le # dans la ligne dédiée au bootp. Pour prendre en compte ces modifications, rebootez la machine Unix ou envoyez le signal 1 au process inetd (kill -1 pid).
Paramétrage de l'environnement bootp : le protocole bootp se base sur un fichier paramètre : /etc/bootptab. Ce fichier décrit d'une part le réseau et les périphériques TCP/IP susceptibles d'émettre des requêtes bootp et d'autre part donne pour ces périphériques les renseignements nécessaires au tftp (le nom du fichier firmware et les différentes adresses IP). Exemple de fichier /etc/bootptab (la première ligne décrit le réseau, la seconde la Platine) :
default:hn:df=/etc/btdump:ht=ethernet:sa=192.168.1.252:to=auto: axel1:tc=default:ht=ethernet:ha=00A034000001:ip=192.168.1.242:bf=/tmp/axel: |
Note : voici la signification des principales directives :
- sa : adresse IP du serveur tftp
- ha : adresse Ethernet de la Platine
- ip : adresse IP de la Platine
- bf : nom du fichier à télécharger
Lancement de la requête bootp : la requête bootp peut être lancée depuis le set-up de la Platine ou par une commande rsh (ou rcmd pour SCO UNIX) :
rsh axname ax_download |
Après une réponse à la requête bootp, la Platine télécharge le fichier firmware par tftp. Cliquez ici pour plus d'information sur le protocole tftp.
Les imprimantes connectées à une Platine peuvent
être gérées au travers de deux protocoles
:
- lpd
- tty
Les tableaux suivants donnent les caractéristiques d'installation ou d'utilisation de ces deux protocoles. Faîtes votre choix selon vos impératifs d'utilisation.
Protocole LPD :
|
|
- Ce protocole est fourni en standard sur tous les principaux
systèmes d'exploitation (Unix, Windows NT, AS/400...) - Le port imprimante n'est verrouillé que durant l'impression. Cela signifie que plusieurs systèmes d'exploitation peuvent imprimer sur le même port d'une Platine. - L'imprimante est intégrée au mécanisme de spooler du système d'exploitation. |
- Sous Unix, une imprimante LPD n'est accédée par
que par son nom de spooler. Aucun tty n'est associé. Cela
peut pénaliser les applicatifs qui accèdent aux
imprimantes par le tty. - Certains Unix ne permettent pas d'associer de driver à une imprimante LPD : cela signifie que l'applicatif doit générer un fichier adapté au modèle de l'imprimante utilisée. |
Protocole TTY :
|
|
- Un port auxiliaire géré avec le service
tty est vu comme un port local Unix (comme une carte multivoie) - Une imprimante peut donc être accédée par son nom de spooler ou par son tty. |
- Ce protocole, développé par Axel, est un logiciel
additionnel. Il doit être installé et configuré
sur la machine unix. - Un port auxiliaire géré avec le service tty est ne peut être accédé que par une seule machine Unix |
La Platine Axel offre deux port série bi-directionnels sur lequel peuvent être connectés des terminaux série.
Positionnez tout d'abord le mode "bi-directionnel" et les paramètres de communication (vitesse, contrôle de flux...) pour chaque port utilisé. Associez le service "telnet" en renseignant les paramètres demandés (notamment le nom du serveur distant).
Le terminal série est immédiatement actif (affichage du login) sans aucune modification Unix. Un pseudo-terminal est affecté de manière dynamique.
Note : pour obtenir un pseudo-terminal fixe, il est possible d'utiliser le service tty plutôt que le service telnet.
Divers périphériques (imprimante, lecteur de carte...) peuvent être connectés sur les ports auxiliaires de la Platine
Pour gérer un périphérique par séquence escape, le set-up de la Platine doit être modifié. Il est nécessaire de positionner le paramètre "port auxiliaire par défaut" (valeurs possibles AUX1, AUX2 ou PARALLELE).
Au niveau système d'exploitation, l'émission de données se fait par l'intermédiaire de séquences escape. Une pour débuter l'impression, une autre pour l'arrêter :
<seq deb><data><seq fin>
Ces séquences diffèrent selon l'émulation :
Emulation | Séquence de début | Séquence de fin |
ANSI et VT220 | Esc [ 5 i | Esc [ 4 i |
WYSE | Esc d # | 14h |
Exemple de script Unix pour imprimer un fichier en émulation ANSI :
echo "\033[2h\033[5i\c" # blocage clavier et début
impression cat $1 echo "\014\033[4i\033[2l\c" # saut de page, fin impression et déblocage clavier |
En plus de la fonction d'émission, il est possible de lire des données venant du périphérique. Cette fonction n'est disponible que pour les ports auxiliaires série (AUX1 et AUX2). Il est nécessaire pour cela de modifier le set-up de la Platine en positionnant d'une part le port auxiliaire par défaut et d'autre part le mode de fonctionnement de ce port à "bi-directionnel".
A partir de ce moment, les données venant de périphérique sont mises dans le buffer clavier de la session écran active. Il suffit donc à l'applicatif d'une simple lecture clavier pour récupérer les données.
Le service tty permet d'associer une ressource de la Platine (session écran ou port auxiliaire) à un pseudo-terminal Unix (ptty). Il est ainsi possible de gérer cette ressource de la même manière qu'une voie d'une carte multivoie série.
Entrez dans le set-up de la Platine et associez le service 'tty' aux ports auxiliaires ou aux sessions écran. Pour chaque service tty associé, il est nécessaire de préciser le nom du serveur Unix (c'est la Platine qui ouvre les connexions tty sur les serveurs distants).
Copiez les fichiers suivants sur Unix :
Fichier | répertoire de destination | signification |
axttyd | /etc | démon serveur |
axfile | /etc | fichier d'association |
S91axel | répertoire de boot | lancement au boot de Unix |
S91axtty | répertoire de boot | lancement au boot de Linux |
Le démon axttyd qui gère les connections tty des Platine utilise un fichier paramètre qui liste les associations "ressource AX3000 - ptty Unix". Exemple de fichier :
#AX3000 axel1 axel1 axel2 axel2 |
Ressource aux1 aux2 sess1 sess2 |
Maître /dev/ptyp12 /dev/ptmx /dev/ptyp1 /dev/ptyp2 |
Esclave /dev/ttyp12 /dev/pts/13 /dev/ttyp1 /dev/ttyp2 |
Chaque ligne de ce fichier décrit une association. Une association est composée de 4 paramètres :
Utilisez la commande suivante pour lancer axttyd :
# /etc/axttyd & |
Note : si un lecteur de carte sésame vital est utilisé, lancez le démon avec l'option '-b'
Les ressources de la Platine sont accédées par la partie esclave du pseudo-terminal : /dev/ttypx.
Note : pour chaque session écran associée au service tty, une ligne de ce type doit être ajoutée à /etc/inittab :
px:234:respawn:/etc/getty ttypx m |
printd est un protocole dédié à la gestion d'imprimantes et rtty à la gestion de périphériques bi-directionnels. Ces protocoles sont encore disponibles aujourd'hui pour des raisons de compatibilité. Mais nous conseillons vivement de leur préférer les protocoles lpd ou tty.
Dans un réseau d'entreprise, il est important pour un applicatif de pouvoir identifier d'une part chacun des terminaux et d'autre part chaque session d'un terminal. Les Platines Ethernet TCP/IP AXEL offrent trois méthodes d'identification :
- Identification par ladresse IP
La séquence escape "Esc [ < a" permet d'interroger la Platine. A réception de cette séquence la Platine renvoie son adresse IP suivie de <RC>. Le script Unix suivant récupérer l'adresse IP de la Platine :
oldtty=`stty -g`
stty -opost -echo -echoe -echok -icanon eof "^@" eol "^T"
echo "\033[<a\c"
read ADR_IP
stty $oldtty
if [ -z "$ADR_IP" ]; then
#Pas sur une Platine
else
#Sur une Platine
fiUne fois la Platine identifiée il peut être nécessaire d'identifier la session. Deux méthodes sont disponibles :
- numéro de session : à réception de la séquence escape "Esc [ < 5a", la Platine renvoie le numéro de session courante suivie de <RC>.
- message de retour : le set-up de la Platine permet d'attribuer un message de retour (answer back message) à chaque session. La séquence ANSI "Esc [ < 4a" ou le caractère de contrôle VT220 "Ctrl-E" permet de récupérer ce message.
- Identification par la variable TERM
A chaque session de la Platine peut être associée une variable TERM. Généralement cette chaîne de caractères est composée de un seul mot (ansi, vt220...). Mais il est possible d'ajouter d'autres mots. Par exemple "vt220 platine" ou "ansi mag axel1". Le script Unix suivant permet d'extraire ces informations de la variable TERM :
set `echo $TERM`
TERM=$1
LOCATION=$2
TYPE=$3
export TERM LOCATION TYPE- Identification par le tty
Le protocole telnet attribue un pseudo-terminal dynamique à chaque session écran ce qui interdit toute identification. Par contre, le protocole tty (conçu par axel), permet d'attribuer un pseudo-terminal fixe à des sessions écran de Platine. Cliquez ici pour plus d'information sur le protocole tty.
Les paramètres de fonctionnement de la Platine peuvent être modifiés soit par le set-up interactif ou soit par le set-up à distance.
Les fonctions de set-up à distance sont activées par une commande rsh (ou rcmd pour SCO UNIX) :
La mise à jour des paramètres set-up de la Platine s'effectue par la commande suivante :
# rsh axname setup_send < file |
Dans cette commande, axname est le nom de la Platine (référencé dans /etc/hosts), setup_send est le mot clé de mise à jour set-up et file est le fichier dans lequel sont stockés les paramètres set-up.
Note : le fichier file a été précédemment créé soit par un éditeur de texte soit par une commande de récupération de set-up (voir ci-dessous).
Après les modifications set-up, la Platine doit être soit éteint et rallumée soit réinitialisée par la commande suivante :
# rsh axname ax_reboot |
Les paramètres set-up d'une Platine peuvent être récupérés par la commande suivante :
# rsh axname setup_get > file |
Dans cette commande, axname est le nom de la Platine (référencé dans /etc/hosts), setup_get est le mot clé de récupération set-up et file est le fichier set-up généré.
Le système Unix SCO depuis la version 3.2.4 supporte la connexion de terminaux en gestion clavier scancode.
Pour gérer la gestion clavier ASCII-scancode, la description terminfo de l'émulation utilisée doit contenir les directives 'smsc' et 'rmsc' intégrant les séquences escape Axel gestion clavier (Esc [ < Ps A).
Voici les étapes pour intégrer 'smsc' et 'rmsc' au fichier terminfo ansi :
# cd /usr/lib/terminfo # infocmp ansi > ansi.src |
smsc=\E[<0A, rmsc=\E[<1A, xonc=e, xoffc=g, |
Le fichier terminfo étant modifié, il est nécessaire de créer deux scripts pour changer la gestion clavier
Script de passage en scancode :
tput smsc ; stty isscancode xscancode mapkey /usr/lib/keyboard/ps.ibm.fra |
Script de passage en ASCII :
tput rmsc ; stty -isscancode |
Note : le passage en gestion scancode peut nécessiter
la resynchronisation des leds du clavier. Une séquence
escape ANSI est disponible : CSI < Pn1;Pn2;Pn3 O (où
Pn1, Pn2 et Pn3 représentent respectivement l'état
des leds NUM, CAPS et SCROLL). Les valeurs possibles de ces trois
paramètres sont :
- 0 : l'état de la led n'est pas modifié
- 1 : allume la led
- 2 : éteint la led
La communication réseau est certainement à l'origine d'un tel problème. La Platine rejette des trames ce qui provoque des phénomènes de lenteurs ou de saccade. Les origines probables sont :
Note : le set-up de la Platine offre un environnement de statistiques (menu [Diagnostic]-[Statistiques]-[Ethernet]) permettant le diagnostic du problème.
Premières vérifications :
Testez l'imprimante en local
Entrez dans le set-up de la Platine et sélectionnez les menus [Configuration]-[Ports aux.]-[xxx]. Dans la boîte de dialogue affichée, sélectionnez le bouton [TEST]. Une bannière de test devrait être imprimée.
Si ce test d'impression locale ne fonctionne pas le problème est local entre la Platine et l'imprimante. Sinon le problème vient du paramétrage du service réseau de la Platine ou du paramétrage du système d'exploitation.
Dernières vérifications
Certaines impressions peuvent ne pas se terminer et désactiver l'imprimante au niveau AIX. Ce dysfonctionnement est dû à un timer insuffisant au niveau AIX.
Pour corriger ce problème il est nécessaire d'augmenter ce timer (1 minute par défaut).
Pour cela, éditez le fichier /etc/qconfig et recherchez l'entrée dédiée à la Platine. Modifiez la ligne associée pour ajouter le paramètre '-T xx' (où xx est un nombre de minutes) au process rembak. Exemple :
axel: /usr/lib/lpd/rembak -T 5 |
Les grandes impressions ne sont pas imprimées en entier sur Unix SCO. Ce dysfonctionnement est dû à un paramétrage par défaut de SCO qui interdit des impressions supérieures à 1 Méga Octets.
Pour résoudre ce problème, il est nécessaire de modifier le fichier /etc/printcap qui décrit les imprimantes LPD sous SCO.
Dans ce fichier, ajoutez la directive mx#0 à la description de l'imprimante pour désactiver cette vérification de taille. Par exemple :
prnaxel:\ :lp=:rm=ax3002:ex:rp=prnaxel:sd=/usr/spool/lpd/prnaxel:mx#0: |
Un dysfonctionnement des imprimantes gérées par le service tty a été observé dans les conditions suivantes :
la machine SCO est éteinte par la commande shutdown tous les soirs alors que les Platines hébergeant les imprimantes restent sous tension.
Résultat : lors de la prochaine mise sous tension de la machine SCO les imprimantes ne fonctionnent plus.
Ceci est dû au fait que la commande shutdown "oublie" de fermer les connexions TCP/IP en cours (ceci n'arrive pas avec la commande haltsys). Deux solutions sont possibles pour résoudre ce problème :