Il faut �diter plusieurs fichiers pour configurer l'ordinateur pour g�rer le terminal. Si vous avez de la chance, vous ne devrez �diter que /etc/inittab. On fait ce travail d'�dition � partir de la console (ou de n'importe quel terminal qui fonctionne).
Afin de lancer un processus de login sur un port s�rie quand l'ordinateur d�marre (ou change de niveau d'ex�cution) une commande getty doit �tre plac�e dans le fichier /etc/inittab. Getty permet de faire fonctionner (GET) un terminal (TTY). Chaque terminal a besoin de sa commande getty. Il y a aussi au moins une commande getty pour la console dans chaque fichier /etc/inittab. Trouvez-la et ajoutez-y les commandes getty pour les vrais terminaux. Ce fichier peut contenir des lignes d'exemples de commandes getty pour les terminaux texte mises en commentaire, et donc tout ce qu'il vous reste � faire est d'enlever les commentaires (enlevez le # au d�but de la ligne) et de modifier quelques arguments.
Les arguments autoris�s d�pendent du getty que vous utilisez :
Les deux meilleurs getty pour les terminaux reli�s de mani�re directe sont :
Les deux gettys plus appropri�s pour les modems (�vitez-les pour les terminaux) sont :
Un getty simple � utiliser uniquement pour les logins sur la console :
Si vous n'avez pas le getty que vous d�sirez, cherchez-le dans d'autres
distributions et utilisez le programme alien
pour le convertir entre
paquets RPM et Debian. Le code source sur
Metalab (logiciels s�rie).
Si vous n'utilisez pas les lignes de contr�le du modem (par exemple si vous n'utilisez que les 3 conducteurs minimums : transmission, r�ception et masse commune) vous devriez le faire savoir � getty en utilisant un drapeau "local". Le format de celui-ci d�pend du getty que vous utilisez.
Un exemple de ligne dans /etc/inittab :
S1:23:respawn:/sbin/getty -L 19200 ttyS1 vt102
S1 vient de ttyS1. 23 veut dire que getty est lanc� en entrant dans les niveaux d'ex�cution 2 ou 3. respawn veut dire que si getty est tu�, il se relancera automatiquement. /sbin/getty est la commande getty. Le -L veut dire Local (ignorer les signaux de contr�le du modem). -h (non montr� dans l'exemple) permet le contr�le de flux mat�riel (m�me chose que stty crtscts). 19200 est la vitesse de transmission. ttyS1 veut dire /dev/ttyS1 (COM2 sous MS-DOS). vt102 est le type de terminal et ce getty donnera cette valeur � la variable d'environnement TERM. Il n'y a pas de fichiers de configuration. Tapez "init q" sur la ligne de commande apr�s avoir �dit� la ligne de getty et vous devriez apercevoir une invite de login.
Le programme agetty
d�tectera automatiquement la parit� configur�e dans
le terminal. Excpt� si vous utilisez 8bit d'octet de donn�es avec 1-bit de
parit�. Si vous utilisez stty
pour fixer la parit�, agetty
la
d�sactivera automatiquement puisqu'il veut que le bit de parit� passe comme
si c'�tait un bit de donn�e. C'est parce qu'il a besoin d'obtenir le dernier
bit (qui peut �tre un bit de parit�) pendant que vous tapez votre nom de
login afin d'auto-d�tecter la parit�. Donc, si vous utilisez la parit�, ne
l'activez que du c�t� du terminal et laissez agetty
la d�tecter
automatiquement et la positionner sur l'ordinateur. Si votre terminal
supporte la parit� en r�ception, l'invite de login sera brouill�e jusqu'� ce
que vous tapiez quelque chose et que getty positionne la parit�. L'invite
brouill�e repoussera les visiteurs etc. qui essaient de se logger. Cela peut
�tre exactement ce que vous voulez.
Il y a parfois des probl�mes avec l'autodetection de parit�. Cela arrive
car apr�s la premi�re frappe de votre login, agetty
utilise le programme
login
pour finir de vous loguer. Si le premier essai de login �choue,
login
se relance pour s'occuper des �ssais futurs de login (incluant
l'�criture de votre login). Le probl�me est que seulement agetty peut detecter
la parit� tandis que le programme login
ne le fait pas. Donc, si vous
remontez dans le programme login
pour quelque raison que ce soit et que
la parit� n'a pas encore �t� d�tect�e, vous etes en difficult� tant que le
programme login
ne peut pas detecter la parit�. Avec une mauvaise parit�,
login
ne peut pas lire correctement ce que vous �crivez et vous ne pouvez
pas vous loguez. Si votre terminal supporte la r�ception de parit�, vous
continuerez � voir un �cran brouill�.
On peut arriver dans cette "boucle de login" de plusieurs fa�ons. Supposez que
vous tapez une ou deux lettres seulement pour votre login et que vous tapez
Entr�e. Si ces lettres ne sont pas suffisantes pour la detection de parit�,
alors login
se lancera avant que la parit� soit detect�e. Quelque fois ce
probl�me arrive si vous n'avez pas le terminal allum� et connect� quand
agetty
d�marre pour la premi�re fois. Si vous restez bloqu� dans cette
"boucle de login", une solution est d'attendre � peu pr�s une minute, le temps
qu'agetty se relance d� au "timeout".
Malheureusement, agetty
ne peut pas detecter cette parit�. Il (fin 1999)
n'y a pas d'options pour desactiver l'auto-detection de parit� et cela
detectera les parit�s incorrects. Le r�sultat est que le processus de login
sera brouill� et la parit� sera mal regl�. Ainsi il ne parait pas faisable
d'essayer d'utiliser des octets de donn�es de 8-bit avec parit�.
(Ceci est tir� du vieux Serial-HOWTO de Greg Hankins).
Ajoutez des
entr�es pour getty
pour utiliser votre terminal dans le fichier de
configuration /etc/gettydefs
si elles ne sont pas d�j� pr�sentes :
# 38400 bps Dumb Terminal entry DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400 # 19200 bps Dumb Terminal entry DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200 # 9600 bps Dumb Terminal entry DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600
Si vous voulez, vous pouvez faire en sorte que getty
affiche des choses
int�ressantes dans la banni�re de login. Dans mes exemples, je fais afficher
le nom du syst�me et la ligne s�rie. Vous pouvez ajouter d'autres choses :
@B la vitesse courante (�valu�e au moment o� @B est rencontr�).
@D la date courante, au format MM/JJ/AA.
@L la ligne s�rie � laquelle est attach� getty.
@S le nom du syst�me.
@T l'heure courante, au format HH:MM:SS (24 heures).
@U le nombre d'utilisateurs actuellement logg�s. C'est le compte
du nombre d'entr�es dans le fichier /etc/utmp qui poss�dent
un champ ut_name non nul.
@V la valeur de VERSION, donn�e dans les fichiers de valeurs par
d�faut.
Pour afficher un caract�re '@', utilisez soit '\@', soit '@@'.
Quand vous avez fini d'�diter /etc/gettydefs
, vous pouvez v�rifier
que la syntaxe est correcte en faisant :
linux# getty -c /etc/gettydefs
Assurez-vous qu'il n'y a pas de fichier de configuration getty
ou
uugetty
pour le port s�rie auquel est attach� votre terminal
(/etc/default/{uu}getty.ttyS
N ou
/etc/conf.{uu}getty.ttyS
N), car cela entrera s�rement en
conflit avec le lancement de getty
sur un terminal. Enlevez le fichier
s'il existe.
�ditez le fichier /etc/inittab
pour lancer getty
sur le port
s�rie (en mettant les informations correctes pour votre environnement --
port, vitesse et type de terminal par d�faut) :
S1:23:respawn:/sbin/getty ttyS1 DT9600 vt100
Relancez init
:
linux# init q
� ce point, vous devriez voir une invite de login sur votre terminal. Vous devrez peut-�tre appuyer sur Retour pour que le terminal soit attentif.
Le "m" veut dire modem. Ce programme est d'abord destin� aux modems et en mi-1999 ne fonctionnait pas toujours tr�s bien pour les terminaux texte. Il est tr�s mal document� pour les terminaux et vous devrez parcourir beaucoup de documentation sur les modems pour d�terminer comment l'utiliser pour un terminal. Regardez les derni�res lignes de /etc/mgetty/mgetty.config pour avoir un exemple de la configuration d'un terminal. [Note du relecteur : je le trouve au contraire bien document� (janvier 1999) dans man mgetty : un mgetty -r -s 9600 /dev/ttyS0 (par exemple) est suffisant. Le -r indique que la connexion est directe (sans modem).] Ceci sera, esp�rons-le, r�par� dans le futur. Il serait bien d'avoir le m�me getty � la fois pour les terminaux et les modems mais mgetty n�cessite quelques am�liorations avant de convenir pour les deux utilisations.
Il y a � la fois une commande "stty" et une commande "setserial" pour
configurer les ports s�rie. Certains (ou tous les) param�tres stty
n�cessaires peuvent �tre positionn�s gr�ce � getty et il peut ne pas �tre
n�cessaire d'utiliser setserial ; l'utilisation de ces deux commandes peut
donc ne pas �tre n�cessaire. Celles-ci (stty et setserial) param�trent
diff�rents aspects du port s�rie. Stty en fait la plupart tandis que
setserial configure la partie bas niveau comme les interruptions et les
adresses de ports. Pour "sauvegarder" les param�tres, ces commandes doivent
�tre �crites dans certains fichiers (scripts shell) qui sont lanc�s � chaque
d�marrage de l'ordinateur. Les distributions de Linux fournissent souvent un
script shell qui lance setserial
mais en fournissent rarement un qui
lance stty
tant qu'on en aura rarement besoin..
N'utilisez jamais setserial
avec des portables (PCMCIA). setserial
est un programme vous permettant d'indiquer au logiciel pilote l'adresse
d'entr�e/sortie du port s�rie, quelle interruption (IRQ) est positionn�e dans
le mat�riel du port, le type d'UART que vous poss�dez, etc. Il peut aussi
vous montrer comment le pilote est configur� � ce moment. En plus, il peut
faire des requ�tes au mat�riel (si certaines options sont donn�es).
Si vous avez seulement un ou deux ports s�ries, ils seront bien configur�
sans utiliser setserial. Autrement (ou si il y'a des probl�mes avec ce port s�rie) vous devrez utiliser setserial. En plus du manuel de setserial
,
regardez les informations dans /usr/doc/setserial.../
ou autre.
Cela devrait vous indiquer comment setserial se comporte dans votre
distribution de Linux.
Setserial
est souvent lanc� automatiquement au d�marrage par un script
shell. Il ne fonctionnera que si le module s�rie est charg�. Si vous devez
pour une raison ou pour une autre d�charger le module s�rie plus tard, les
modifications faites pr�c�demment par setserial
seront oubli�es.
Setserial
doit donc �tre re-lanc� pour les prendre en compte � nouveau.
En plus de le lancer avec un script de d�marrage, quelque chose semblable �
setserial
se lance quand le module s�rie est charg�. Ainsi quand vous
regardez les messages de d�marrage sur l'�cran il pourra vous sembler �tre
lanc� deux fois, et en fait c'est ce qui s'est pass�.
Setserial peut r�gler le temps que le port restera actif apr�s qu'il soit ferm� (pour sortir les caract�res qui sont encore dans leurs buffers dans la RAM principale). C'est nec�ssaire pour un taux de transferts de 1200 baud ou plus bas. C'est aussi nec�ssaire pour des vitesses plus rapides si il y'a beaucoup de "contr�le de flux" en attente.
Si votre port s�rie est Plug-and-Play, vous devrez peut-�tre consulter d'autres HOWTOs, comme Plug-and-Play et Serial.
Avec les bonnes options, setserial
peut chercher (� une adresse
d'entr�e/sortie donn�e) un port s�rie mais vous devez deviner l'adresse
d'entr�e/sortie. Si vous lui demandez de chercher /dev/ttyS2 par exemple, il
ne cherchera qu'� l'adresse o� il pense trouver ttyS2. Si vous dites �
setserial que ttyS2 est � une adresse diff�rente, alors il cherchera � cette
adresse, etc. Voyez
Recherche.
Setserial ne positionne pas lui-m�me les IRQ ou les adresses d'entr�e/sortie dans le mat�riel du port s�rie. Ceci est fait soit avec des cavaliers, soit par plug-n-play. Vous devez dire � setserial les valeurs m�mes qui ont �t� configur�es dans le mat�riel. N'inventez pas simplement des valeurs dont vous pensez qu'elles font joli en les soumettant � setserial. Cependant, si vous connaissez les adresses d'entr�e/sortie mais pas l'IRQ, vous pouvez demander � setserial de tenter de d�terminer l'IRQ.
Vous pouvez voir une liste des commandes possibles et utilisables (mais pas
les options � une lettre telles que -v pour verbeux -- que vous devriez
normalement utiliser pour d�boguer) en tapant simplement setserial
sans
argument. Notez que setserial nomme une adresse d'entr�e/sortie un "port". Si
vous tapez :
setserial -g /dev/ttyS*
vous verrez quelques informations sur la mani�re dont ce pilote de p�riph�riques est configur� pour vos ports. Ajoutez un "v" � l'option "-g" pour en voir plus. Mais ceci ne vous dira pas si le mat�riel dispose vraiment de ces valeurs. En fait, vous pouvez lancer setserial et assigner une adresse d'entr�e/sortie purement fictive, n'importe quelle IRQ, et tout type d'UART que vous aimeriez avoir. Alors, la prochaine fois que vous lancerez "setserial ...", il affichera ces valeurs fausses sans se plaindre. Notez que les assignations faites par setserial sont perdues quand le PC est �teint donc il est en g�n�ral lanc� automatiquement quelque part � chaque fois que Linux est d�marr�.
Afin de tenter de trouver si vous avez un certain type de mat�riel s�rie,
vous devez d'abord savoir (ou deviner) son adresse d'entr�e/sortie (ou le
pilote de p�riph�rique doit en avoir une adresse d'entr�e/sortie, s�rement
positionn�e pr�c�demment par setserial). Pour tenter de d�tecter le mat�riel
physique, utilisez l'option -v (verbeux) et la commande autoconfig
de
setserial
. Si le message r�sultant montre un type d'UART tel que 16550A,
alors tout est bon pour vous. Si par contre il affiche un type d'UART
"unknown
" (inconnu), alors il n'y a s�rement pas de port s�rie du tout �
cette adresse d'entr�e/sortie. Certains ports s�rie bon march� ne
s'identifient pas correctement donc si vous voyez "unknown
" vous avez
peut-�tre quand m�me un port s�rie � cet endroit.
En plus de faire une auto-d�tection sur le type d'UART, setserial peut aussi
d�terminer automatiquement les IRQs, mais ceci ne fonctionne pas toujours
bien non plus. Dans les versions de setserial>= 2.15, votre dernier test de
recherche peut �tre sauv� et plac� dans le fichier de configuration
/etc/serial.conf
qui sera utilis� au prochain d�marrage de Linux. Le
script qui lance setserial
au d�marrage ne fait g�n�ralement pas de
recherche, mais vous pouvez le modifier pour qu'il le fasse. Voyez la section
suivante.
Oui, mais... Votre distribution doit deja le faire au d�marrage. Mais vous pouvez le customiser. C'est facile � faire avec setserial < 2.15. Ajoutez simplement quelques lignes au fichier qui lance setserial au d�marrage. Voyez vieille m�thode de configuration : �dition d'un script. Par exemple, pour ttyS3 vous ajouteriez :
/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig
au fichier qui lance setserial au d�marrage. Faites ceci pour chaque port s�rie que vous voulez auto-configurer. Assurez-vous de donner un nom de p�riph�rique qui existe vraiment sur votre machine. Dans certains cas ca ne marchera pas bien � cause du mat�riel, donc vous pouvez lui assigner un irq et/ou un type d'uart. Par exemple:
/sbin/setserial /dev/ttyS3 irq 5 uart 16550A skip_test
Pour les versions>= 2.15 (� condition que votre distribution ait inclus la modification, Redhat ne l'a pas fait), il est plus difficile de le faire puisque le fichier qui lance setserial au d�marrage, /etc/init.d/setserial ou autre n'a pas �t� pr�vu pour �tre �dit� par l'utilisateur. Il peut ne pas y avoir de commentaires utiles comme il y en avait dans les versions pr�c�dentes.
Quand le noyau charge le module s�rie (ou si le "module" est int�gr� au
noyau) alors seuls ttyS{0-3}
sont auto-d�tect�s et le pilote est
configur� avec les IRQs 4 et 3 (peu importe la configuration r�elle du
mat�riel). Vous le voyez sur un message au d�marrage comme si setserial
avait �t� lanc�. Si vous utilisez 3 ports ou plus, ceci peut engendrer des
conflits d'IRQ.
Pour r�gler de tels conflits en donnant � setserial les vraies IRQs (ou pour
d'autres raisons) il peut y avoir un fichier quelque part qui lance
setserial
� nouveau. Ceci se passe t�t pendant le d�marrage avant que
n'importe quel processus utilise le port s�rie. En fait, votre distribution
peut avoir configur� les choses pour que le programme setserial se lance
automatiquement � partir d'un script au d�marrage. On peut trouver plus
d'informations pour g�rer cette situation dans /usr/doc/setserial.../ ou
autre.
les versions inferieurs � la 2.15 de setserial
, la fa�on pour
le configurer �tait d'�dit� le script shell qui lancait setserial
au d�marrage. Avec la version 2.15 (1999) de setserial
le
script shell n'est pas �dit� mais est lanc� au d�marrage et obtient
ses donn�es � partir d'un fichier de configuration: /etc/serial.conf.
Mais on n'�dite normalement jamais /etc/serial.conf. � la place,
utilisez simplement setserial
sur la ligne de commande.
Normalement, ce que vous avez modifi� avec la commande setserial est sauv�
dans le fichier de configuration (serial.conf) quand vous �teignez
(normalement) ou que vous red�marrez. Ceci ne fonctionne que si
"###AUTOSAVE###" ou similaire se trouve sur la premi�re ligne de serial.conf.
Si vous devez utiliser setserial
de mani�re exp�rimentale et qu'il ne
fonctionne pas correctement, alors n'oubliez pas de le relancer pour que les
param�tres exp�rimentaux ne soient pas sauv�s par erreur. Le fichier le plus
couramment utilis� pour lancer setserial au d�marrage (en restant conforme
avec le fichier de configuration) est maintenant /etc/init.d/setserial
(Debian) ou /etc/init.d/serial (Redhat), ou etc., mais ne devrait normalement
pas �tre �dit� non plus.
Pour d�sactiver un port, utilisez setserial
pour le positionner � "uart
none". Le format de /etc/serial.conf appara�t �tre comme celui des param�tres
plac�s apr�s "setserial" sur la ligne de commande avec une ligne pour chaque
port. Si vous n'utilisez pas autosave, vous pouvez �diter /etc/serial.conf �
la main. Pour la version 2.15, la distribution Debian installe le syst�me
avec la sauvegarde automatique activ�e, mais Redhat 6.0 avait simplement un
fichier /usr/doc/setserial-2.15/rc.serial que vous deviez d�placer dans
/etc/init.d/.
BOGUE : en juillet 1999 il un bogue/probl�me puisqu'avec ###AUTOSAVE### seuls les param�tres de setserial affich�s par "setserial -G /dev/ttyS?" (o� ? vaut 0, 1, 2, ...) sont sauv�s mais pas les autres param�tres. Ceci n'affecte qu'une minorit� d'utilisateurs puisque les param�tres non sauv�s sont de toute fa�on rarement utilis�s. Cela a �t� rapport� comme un bogue et peut �tre r�par� maintenant.
Afin de forcer les param�tres courants positionn�s par setserial � �tre
sauv�s dans le fichier de configuration (serial.conf) sans �teindre la
machine, faites ce qui se passe normalement quand vous �teignez : lancez le
script shell /etc/init.d/{set}serial stop
. La commande "stop"
sauvera la configuration courante mais les ports s�rie continueront de
fonctionner correctement.
Dans certains cas vous pouvez avoir l'ancienne et nouvelle m�thode d'install� mais heureusement juste une d'elles se lance au d�marrage. Debian �tiquette les fichiers obsol�tes avec "...pre-2.15".
Avant la version 2.15 (1999) il n'y avait pas /etc/setserial.conf pour configurer setserial. Ainsi vous devez chercher un fichier qui lance setserial au d�marrage et l'�dit�. S'il n'existe pas, vous devez en cr�er un (ou placer les commandes dans un fichier qui se lance t�t au d�marrage). Si un tel fichier est utilis� en ce moment, il se trouve s�rement dans l'arborescence /etc. Mais Redhat <6.0 l'a mis dans /usr/doc/setserial/ bien que vous deviez le d�placer dans l'arborescence /etc avant de l'utiliser. Vous pouvez utiliser "locate" pour essayer de trouver un tel fichier. Par exemple, vous pouvez taper : locate "*serial*".
Ce que pouvez chercher peut s'appeler rc.serial ou 0setserial (Debian). Si un
tel fichier est fourni, il devrait contenir un certain nombre d'exemples
comment�s. En d�commentant certains d'entre eux et/ou en les modifiant, vous
devriez pouvoir configurer les choses correctement. Assurez-vous que vous
utilisez un chemin valide pour setserial
, et un nom de p�riph�rique
valide. Vous pouvez faire un test en ex�cutant ce fichier � la main (tapez
simplement son nom en tant que super-utilisateur) pour voir si �a fonctionne
bien. Un test comme celui-ci est bien plus rapide que de faire des
red�marrages � r�p�tition pour avoir le bon r�sultat. Bien s�r, vous pouvez
aussi tester une commande setserial
unique en la tapant simplement sur
la ligne de commande.
Le script /etc/rc.d/rc.serial
�tait couramment utilis� dans le pass�.
La distribution Debian a utilis� /etc/rc.boot/0setserial
. Un autre
fichier qui a �t� utilis� est /etc/rc.d/rc.local
mais ce n'est pas
une bonne id�e car il peut ne pas �tre lanc� assez t�t. On a indiqu� que
d'autres processus peuvent essayer d'ouvrir le port s�rie avant l'ex�cution
de rc.local, ce qui entra�ne des �checs de communication s�rie.
Par d�faut, ttyS0 et ttyS2 partagent l'IRQ 4, tandis que ttyS1 et ttyS3 partagent l'IRQ 3. Le partage des interruptions s�rie n'est permis que si : 1. vous avez un noyau 2.2 ou sup�rieur, 2. vous avez compil� le support pour le faire et 3. votre mat�riel s�rie le supporte. Voyez le HOWTO S�rie, sur le partage des interruptions et les noyaux 2.2 et plus.
Si vous n'avez que deux ports s�rie, ttyS0 et ttyS1, cela fonctionne encore puisque les conflits de partage d'IRQ n'existent pas pour des p�riph�riques non existants.
Si vous ajoutez un modem interne et gardez ttyS0 et ttyS1, vous devriez alors tenter de trouver une IRQ non utilis�e et la positionner � la fois sur votre port s�rie (ou carte modem) et ensuite utiliser setserial pour l'assigner � votre pilote de p�riph�rique. Si l'IRQ 5 n'est pas utilis�e par une carte son, ce peut �tre une IRQ utilisable pour un modem. Pour positionner l'IRQ de mani�re mat�rielle vous devrez peut-�tre utiliser isapnp, un BIOS PnP ou modifier Linux pour le rendre PnP. Pour vous aider � d�terminer quelles IRQs sont disponibles, tapez "man setserial" et cherchez, disons "IRQ 11".
stty
effectue la plupart de la configuration du port s�rie mais puisque
les applications (et le programme getty) la g�rent souvent, vous n'aurez
peut-�tre pas besoin de l'utiliser souvent. C'est pratique si vous avez des
probl�mes ou voulez voir comment le port est param�tr�. Essayez de taper
``stty -a'' sur votre terminal/console pour voir les param�tres actuels.
Essayez aussi de taper la commande sans le -a (all = tout) pour obtenir une
liste courte qui montre les param�tres diff�rents de la normale. N'essayez
pas d'apprendre tous les r�glages � moins de vouloir devenir un gourou du
port s�rie. La plupart des valeurs par d�faut conviennent et certains
r�glages ne sont n�cessaires que pour certains terminaux non-intelligents et
obsol�tes fabriqu�s dans les ann�es 1970 (Mais pas apr�s)
Alors que setserial
ne travaille qu'avec les ports s�rie r�els, stty
s'utilise � la fois pour les ports s�rie et pour les terminaux virtuels comme
l'interface texte standard de Linux sur un moniteur de PC. Pour le moniteur
de PC, la plupart des param�tres de stty n'ont pas de signification. Le
changement de la vitesse de transmission, etc. ne semble pas faire grand
chose.
Voici quelques uns des items que stty peut configurer : vitesse
(bits/seconde), parit�, bits par octet, nombre de bits de stop, enlever
le 8�me bit ?, signaux de contr�le du modem, contr�le de flux, signal
d'arr�t, d�limiteurs de fin de ligne, changer la casse, remplissage, sonner
si le tampon d�borde ?, �cho, permettre � des t�ches de fond d'�crire sur le
terminal ?, d�finir des caract�res sp�ciaux (de contr�le, comme quelle touche
presser pour faire une interruption). Voyez la page de manuel de stty
ou la page info pour plus de d�tails. Voyez aussi la page de manuel :
termios
qui couvre les m�mes options que stty mais (en mi-1999) couvre
des possibilit�s que la page de manuel de stty ne mentionne pas. Pour
l'utilisation de certains caract�res sp�ciaux, voyez
caract�res sp�ciaux (de contr�le).
Avec certaines impl�mentations de getty (paquet getty_ps), les commandes qu'on enverrait normalement � stty sont entr�es dans un fichier de configuration getty : /etc/gettydefs. M�me sans ce fichier de configuration, la ligne de commande de getty devrait suffire pour param�trer les choses de sorte que vous n'ayez pas besoin de stty.
On peut �crire des programmes en C qui modifient la configuration de stty etc. Regarder la documentation pour ce faire peut aider quelqu'un � mieux comprendre l'utilisation des commandes stty (et ses nombreux arguments possibles). Le Serial-Programming-HOWTO est utile. La page de manuel de termios contient la description de la structure au sens langage C (de type termios) qui stocke la configuration de stty dans la m�moire de l'ordinateur. Bien des noms de drapeaux dans cette structure C sont quasiment les m�mes (et font la m�me chose) que les arguments de la commande stty.
L'utilisation de stty
pour inspecter ou configurer le terminal que vous
utilisez est facile. Faire ca pour terminal (�tranger) different ou un port
s�rie est d�licat. Par exemple, supposons que �tes sur le moniteur du
PC (tty1) et vouliez utiliser stty
pour le port s�rie ttyS2. Vous devez
utiliser l'op�rateur de redirection <. D'abord, soyez pr�venu que s'il y a
un terminal sur ttyS2 et un shell tourne sur ce terminal, ce que vous verrez
alors sera d�cevant et une tentative de le param�trer sera infructueuse.
Voyez
deux interfaces sur un terminal
pour comprendre ceci.
Tapez ``stty -a < /dev/ttyS2'' pour regarder les param�tres de ttyS2. Utilisez le m�me op�rateur de redirection < pour param�trer ttyS2. Cela fait de ttyS2 l'entr�e standard de stty. Ca donne au programme stty un lien vers le "fichier" ttyS2 donc il doit le "lire". Mais au lieu de lire les octets envoy�s vers ttyS2 comme on pourrait le pr�voir, il utilise le lien pour trouver les param�tres de configuration du port donc il devrait les lire ou les changer. Certaines personnes tentent d'utiliser ``stty ... > /dev/ttyS2'' pour param�trer le terminal. Ceci ne le fera pas. � la place, il prendra le message normal affich� par la commande stty pour le terminal sur lequel vous �tes (tty1) et envoie ce message � ttyS2 mais ne change aucun param�tre pour ttyS2.
Arrive un autre probl�me avec l'op�rateur de redirection. Quelques fois quand on essaye d'utiliser stty, la commande s'arrette et rien ne se passe ( vous n'avez pas de prompt pour une autre commande, m�me apr�s avoir frapper <entr�e>). C'est probablement due au port �tant bloqu� car il attend une ligne de controle modem pour �tre d�clar�. Par exemple, tant que vous n'avez pas parametrer "clocal" pour ignorer les lignes de controles modem, Alors si il n'y a pas de signal CD de d�clar�, le port ne s'ouvrira pas et stty ne fonctionnera pas. Une situation similaire doit exister pour le control de flux materiel. Si le cable du port n'a pas de fils pour la broche qui doit �tre d�clar� donc il n'y a pas besoin d'arreter l'attente.
Une fa�on � essayer pour se passer de cette attente, est d'utiliser un programme sur le port qui le forcera � �tre op�rationnel m�me si les lignes de controles disent le contraire. Ainsi heureusement, ce programme doit parametrer le port donc il n'a plus besoin du signal de controle pour ouvrir: clocal ou -crtscts. Pour se servir de "minicom" pour faire ca, il faut le reconfigurer pour un autre ttyS, etc, et le red�marrer. Puisque vous avez � reconfigurer minicom, c'est plus simple de red�marrer le PC.
Les versions � partir de 1.17 (pas encore sortie en mi-1999) n'auront plus besoin de la redirection (<) mais � la place utiliseront ``stty ... -F /dev/ttyS2'' (ou --file au lieu de -F), etc. Cela devrait forcer le port � s'ouvrir et eviter le second probl�me de redirection.
En utilisant un shell (tel que bash) avec l'�dition de la ligne de commande activ�e, il y a deux interfaces de terminal diff�rentes (ce que vous voyez quand vous tapez stty -a). Quand vous tapez sur la ligne de commande vous avez une interface "brute" temporaire (mode brut, ou "raw") o� chaque caract�re est lu par l'�diteur de ligne de commande au moment o� vous le tapez. Une fois que vous appuyez sur la touche <entr�e>, l'�diteur de ligne de commande sort et l'interface du terminal est modifi�e en interface nominale "am�lior�e" (mode am�lior� ou "cooked") pour le terminal. Ce mode am�lior� dure jusqu'� ce que l'invite suivante soit envoy�e au terminal. Notez qu'on ne tape jamais rien dans ce mode "am�lior�" mais ce qui a �t� tap� en mode raw passe en mode am�lior� d�s qu'on a tap� sur la touche <entr�e>.
Quand une invite est envoy�e au terminal, le terminal passe du mode "am�lior�" au mode "brut" (comme il le fait quand vous d�marrez un �diteur puisque vous d�marrez l'�diteur de ligne de commande). Les param�tres pour le mode "brut" ne sont bas�s que sur les param�tres de base pris � partir du mode "am�lior�". Le mode brut garde ces param�tres mais modifie plusieurs autres param�tres afin de passer en mode "brut". Il n'est pas du tout bas� sur les param�tres utilis�s dans le mode "brut" pr�c�dent. Ainsi si on utilise stty pour modifier les param�tres du mode brut, de tels param�tres seront perdus d�s qu'on appuiera sur la touche <entr�e> sur le terminal qu'on suppose avoir "configur�".
Maintenant, quand on utilise tape stty pour regarder l'interface du terminal, on peut avoir une vue soit du mode am�lior�, soit du mode brut. Vous devez trouver lequel vous regardez. Si vous utilisez stty � partir d'un autre terminal pour vous occuper d'un terminal qui affiche une ligne de commande, vous aurez la vue du mode brut. Tout changement effectu� ne le sera que pour le mode brut et sera perdu quand quelqu'un appuiera sur <entr�e> sur le terminal que vous avez tent� de "param�trer". Mais si vous tapez une commande stty sur votre terminal (sans utiliser < pour la redirection) et ensuite tapez sur <entr�e>, c'est une histoire diff�rente. <entr�e> met le terminal en mode am�lior�. Vos modifications seront sauv�es et seront toujours pr�sentes quand le terminal reviendra en mode brut (sauf, bien s�r, si c'est un param�tre non permis en mode brut).
Cette situation peut cr�er des probl�mes. Par exemple, supposez que vous corrompez votre interface de terminal et que pour la r�cup�rer vous alliez sur un autre terminal et tapiez "stty sane <dev/ttyS1" pour la r�cup�rer. Ceci ne fonctionnera pas ! Bien s�r vous pouvez essayer de taper "stty sane ..." sur le terminal corrompu mais vous ne pouvez pas voir ce qui est tap�. Tout ce qui pr�c�de ne s'applique pas aux terminaux non-intelligents mais aux terminaux virtuels utilis�s sur un moniteur de PC ainsi que sur les terminaux fen�tr�s sous X. En d'autres termes, ceci s'applique � presque tout le monde qui utilise Linux. Heureusement, un fichier qui lance stty au d�marrage s'occupera certainement d'un terminal (ou d'un port s�rie sans terminal) n'ayant aucun shell tournant dessus, donc il n'y a pas de probl�me.
Si vous avez besoin que stty
configure l'interface s�rie � chaque fois
que l'ordinateur d�marre, vous devez mettre la commande stty
dans un
fichier qui sera ex�cut� � chaque d�marrage de l'ordinateur (de Linux). Il
devrait �tre lanc� avant l'utilisation du port s�rie (ce qui comprend le
lancement de getty sur le port). Il y a de nombreux endroits disponibles pour
le mettre. S'il est mis � plus d'un endroit et que vous n'en connaissez (ou
rappelez) qu'un, il y aura s�rement un conflit. Assurez-vous donc de
documenter ce que vous faites.
Un bon endroit pour placer cette commande serait dans le m�me fichier qui lance setserial quand le syst�me d�marre. L'emplacement d�pend des distributions et des versions. Il semblerait mieux de la placer apr�s la commande setserial pour que la partie de bas niveau soit faite en premier. Si vous avez un r�pertoire dans le /etc o� tous les fichiers sont �xecut�s au d�marrage (System V Init), ainsi vous pourriez cr�er un fichier nomm� "stty" dans ce but.
Voyez Terminfo et Termcap (en d�tails) pour une discussion plus d�taill�e sur terminfo. Beaucoup d'applications que vous lancez utilisent la base de donn�es terminfo (anciennement termcap). Celle-ci poss�de une entr�e (ou fichier) pour chaque mod�le ou type (tel que le vt100) de terminal et indique ce que le terminal peut faire, quels codes envoyer pour diverses actions, et quels codes envoyer au terminal pour l'initialiser.
Puisque beaucoup de terminaux (et de PC aussi) peuvent �muler d'autres terminaux et poss�dent des "modes" d'op�ration vari�s, il peut y avoir plusieurs entr�es terminfo parmi lesquelles choisir pour un terminal physique donn�. Ils auront en g�n�ral des noms similaires. Le dernier param�tre de getty (� la fois pour agetty et getty_ps) devrait �tre le nom terminfo du terminal (ou de l'�mulation de terminal) que vous utilisez (comme vt100).
La base terminfo fait plus que simplement sp�cifier de quoi le terminal est capable et de donner les codes � envoyer au terminal pour le faire faire certaines choses. Elle sp�cifie � quoi "gras" ressemblera (sera-ce en vid�o inverse ou en intensit� forte), comment sera le curseur, si les lettres seront noires, blanches ou d'une autre couleur, etc. En terminologie PC on appelle ceci des "pr�f�rences". Elle sp�cifie les codes d'initialisation � envoyer au terminal (analogues aux cha�nes d'initialisation qu'on envoie aux modems). Linux n'envoie pas automatiquement de telles cha�nes au terminal. Voyez cha�ne d'initialisation. Si vous n'aimez pas l'affichage � l'�cran ni son comportement, vous devrez peut-�tre �diter (et ensuite mettre � jour) le fichier terminfo (ou termcap). Voyez compilateur terminfo (tic) sur la mani�re de faire la mise � jour.
Voici deux variables d'environnement pour les terminaux : TERM et TERMINFO, mais vous ne devriez rien avoir � faire avec elles. TERM doit toujours �tre positionn�e au nom du terminal que vous utilisez (comme vt100). Si vous ne connaissez pas son type (nom), voyez quel est le nom terminfo de mon terminal ?. TERMINFO contient le chemin vers la base de donn�es terminfo, mais peut ne pas �tre n�cessaire si la base de donn�es est dans un endroit pr�d�fini (ou TERMINFO peut �tre positionn� automatiquement par un fichier qui est livr� avec votre distribution de Linux). Vous voudrez voir Emplacement des bases de donn�es compil�es.
Heureusement, le programme getty positionne en g�n�ral TERM pour vous juste avant le login. Il utilise juste le type de terminal qui a �t� sp�cifi� sur la ligne de commande de getty (dans /etc/inittab). Cela permet aux applications de trouver le nom de votre terminal et ensuite de regarder les capacit�s du terminal dans la base de donn�es terminfo. Voyez variable TERM pour plus de d�tails sur TERM.
Si votre base de donn�es terminfo ne peut pas �tre trouv�e, vous verrez un message d'erreur � ce propos sur votre terminal. Si cela arrive il est temps de v�rifier o� r�side terminfo et de positionner TERMINFO si n�cessaire. Vous pouvez d�couvrir o� se trouve la base de donn�es terminfo en cherchant un fichier terminfo courant comme "vt100" avec la commande "locate". Assurez-vous que votre terminal est dans cette base de donn�es. Un exemple de positionnement de TERMINFO : export TERMINFO=/usr/share/terminfo (mettez ceci dans /etc/profile ou autre). Si les donn�es concernant votre terminal dans cette base de donn�es ne vous conviennent pas, vous devrez l'�diter. Voyez terminfo et termcap (bref).
Vous avez besoin du nom exact afin de positionner la variable d'environnement
TERM ou pour renseigner getty
. Le m�me nom doit �tre utilis� � la fois
par la base termcap et la base terminfo, vous n'avez donc besoin de le
trouver qu'une seule fois. Un terminal dispose g�n�ralement d'alias mais si
vous trouvez plus d'un nom, utilisez le premier.
Pour le trouver, essayez de regarder le fichier /etc/termcap... (si vous l'avez). Sinon, regardez soit dans l'arborescence terminfo (voyez ref id="tc_compiled_locs" name="emplacement des bases de donn�es compil�es">), soit essayez de trouver le fichier de code source de terminfo (voyez ref id="tc_source_loc" name="emplacements du code sources des bases de donn�es">).
Le fichier de configuration /etc/ttytype est utilis� pour faire la correspondance entre /dev/ttySn et les noms de terminaux comme dans terminfo. tset l'utilise, mais si la variable d'environnement TERM est d�j� positionn�e correctement, alors ce fichier n'est pas n�cessaire. Puisque le getty de Linux positionne TERM pour chaque tty, vous n'avez pas besoin de ce fichier. Dans d'autres syst�mes Unix comme FreeBSD, le fichier /etc/ttys fait la correspondance entre les ttys et bien plus de choses, comme la commande getty appropri�e, et la cat�gorie de connexion (comme "dialup"). Un exemple de ligne pour le ttytype sous Linux : vt220 ttyS1
Par d�faut, l'utilisateur root ne peut pas se logger � partir d'un terminal. Pour permettre cela vous devez cr�er (ou �diter) le fichier /etc/securetty en suivant la page de manuel "securetty". Mais cette utilisation est sp�cifique � la distribution, la Suse n'utilise pas /etc/securetty. Pour restreindre les logins de certains utilisateurs et/ou de certains terminaux etc., �ditez /etc/login.access (cela remplace le vieux fichier /etc/usertty ??). /etc/login.defs d�termine si /etc/securetty doit �tre utilis� et peut �tre �dit� afin que /etc/securetty ne soit pas n�cessaire (ou utilis�). /etc/porttime restreint les heures auxquelles certains ttys et utilisateurs peuvent utiliser l'ordinateur. S'il y a trop de tentatives de login rat�es pour un utilisateur, cet utilisateur peut se voir interdire l'acc�s au syst�me. Voyez la page de manuel "faillog" sur la mani�re de contr�ler cela.
Il y a parfois des commandes qu'on ne veut ex�cuter au d�marrage que pour un certain type de terminal. Faire cela pour la commande stty ne pose pas de probl�mes puisque l'on utilise l'op�rateur de redirection < pour sp�cifier le terminal vers lequel la commande est destin�e. Mais quid des alias de shell ou des fonctions ? Vous aurez envie de cr�er une fonction pour la commande ls qui mettra en couleur la liste des r�pertoires uniquement sur des terminaux couleur ou sur la console. Pour les terminaux monochromes vous voudrez le m�me nom de fonction (mais un corps de fonction diff�rent) qui utilisera des symboles � la place du codage par couleurs. O� mettre de telles d�finitions de fonctions qui doivent �tre diff�rentes pour des terminaux diff�rents ?
Vous pouvez les mettre � l'int�rieur d'op�rateurs "if" dans /etc/profile qui est lu au d�part � chaque fois que quelqu'un se logge. L'op�rateur confitionnel "if" d�finit certaines fonctions etc., seulement si le terminal est d'un type sp�cifique.
Bien que la plupart de ce que fait cet op�rateur if puisse �tre fait dans le fichier de configuration de dircolors, voici un exemple dans le cas du shell bash :
if [ "$TERM" = linux ]; then eval `dircolors`; elif [ "$TERM" = vt220 ]; then ls () { command ls -F $* ; } # pour exporter la fonction ls(): declare -xf ls else echo "De /etc/profile : terminal de type $TERM inconnu" fi
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:43