Même s'il est souvent possible de configurer un équipement à partir d'une interface Web, la console a toujours été l'interface de configuration la plus «sérieuse». Voici quelques arguments pour étayer cette idée :
-
Les «conditions de sécurité» des accès Web de configuration d'équipement ont toujours été médiocres jusqu'à présent. Soit le serveur Web inclus dans l'équipement contient de nombreux trous de sécurité (il suffit d'interroger les bases de rapport d'incidents du CERT: Vulnerabilities, Incidents & Fixes pour s'en convaincre) ; soit le coût financier et humain de modification de l'infrastructure d'accès aux équipements est trop important relativement aux bénéfices attendus.
-
Les interfaces Web ne permettent pas d'appréhender globalement les paramètres de configuration. En effet, dès que le nombre des paramètres et des options devient important, les formulaires Web deviennent très lourds à gérer. Naviguer d'un paramètre à l'autre suppose plusieurs manipulations de formulaires alors que la même opération est immédiate à la console.
Sur les systèmes GNU/Linux, minicom est le «couteau suisse» idéal pour toutes les manipulations sur les liaisons séries. Avant d'aborder sa configuration et sont utilisation, on vérifie que le système offre bien les fonctions nécessaires : Section 3.1, « Ports série » et Section 3.2, « Administration des accès ».
Avant de s'attaquer à la configuration du logiciel, il faut s'assurer que le port série que l'on veut utiliser est disponible. Comme il s'agit d'un périphérique matériel, c'est dans le noyau Linux que l'on trouve les informations utiles. Normalement, tous les noyaux livrés avec les distributions intègrent directement les pilotes des ports série.
Il est facile de vérifier que les ports sont disponibles à l'aide de la commande dmesg :
$ dmesg | less <snip/> Serial: 8250/16550 driver .Revision: 1.4 . 48 ports, IRQ sharing enabled ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
Les informations ci-dessus indiquent que l'on dispose de deux
ports : ttyS0
et ttyS1
pilotés par le composant 16550A
.
Dans le cas où l'on utilise un noyau «compilé maison», il faut retenir les options indiquées ci-dessous à partir des menus de configuration du noyau :
Linux Kernel Configuration Device Drivers Character devices Serial drivers <*> 8250/16550 and compatible serial support [*] Console on 8250/16550 and compatible serial port < > 8250/16550 PCMCIA device support [ ] 8250/16550 device discovery via ACPI namespace (4) Maximum number of non-legacy 8250/16550 serial ports [*] Extended 8250/16550 serial driver options [*] Support more than 4 legacy serial ports [*] Support for sharing serial interrupts [ ] Autodetect IRQ on standard ports (unsafe) [*] Support special multiport boards [*] Support RSA serial ports --- Non-8250 serial port support
Une fois que le noyau Linux assure le pilotage des ports série,
il faut administrer les droits d'accès à ces ports. Par défaut, les
périphériques du système de fichiers correspondant aux ports série
appartiennent au groupe dialout
:
$ ls -l /dev/ttyS? crw-rw---- 1 root dialout 4, 64 2003-02-13 16:41 /dev/ttyS0 crw-rw---- 1 root dialout 4, 65 2002-03-14 22:51 /dev/ttyS1 crw-rw---- 1 root dialout 4, 66 2002-03-14 22:51 /dev/ttyS2 crw-rw---- 1 root dialout 4, 67 2002-03-14 22:51 /dev/ttyS3
Pour qu'un utilisateur normal ait accès aux ports série, il doit
appartenir au groupe dialout
:
# adduser etu dialout Ajout de l'utilisateur etu au groupe dialout... Fait.
L'utilisateur etu
doit se
reconnecter pour bénéficier des ces nouveaux droits d'accès.
Comme indiqué dans la section Section 1.3, « Logiciels utilisés », seuls les paquets de la distribution Debian GNU/Linux sont présentés ici. L'installation de minicom se résume donc à l'instruction suivante :
# apt-get install minicom lrzsz
Après cette étape, il faut créer le fichier de configuration par
défaut. Ce fichier sert de dénominateur commun à l'échelle du
système. Les paramètres de ce fichier : /etc/minicom/minirc.dfl
sont activé à chaque
lancement du programme minicom.
L'utilisateur est ensuite libre de tout modifier et de se créer ses
propres paramètres de configuration par défaut.
Voici un exemple de première exécution du programme :
# minicom -s <snip/> -------------[configuration]------------- | Noms de fichers et chemins | | Protocoles de transfert | | Configuration du port série | Modem et appel | | Ecran et clavier | | Enregistrer config. sous dfl | Enregistrer la configuration sous... | | Sortir | | Sortir de Minicom | -----------------------------------------
Pour aller au plus simple, on se contente de fixer les paramètres du port série et de sauvegarder.
Première étape, le port série : voir Section 3.3.1, « Paramètres du port série » |
|
Enregistrement du fichier |
Les valeurs présentés ci-dessous correspondent à la grande majorité des paramètres par défaut des équipements d'interconnexion.
----------------------------------------------------------------------- | A - Port série : /dev/ttyS0 | B - Emplacement du fichier de verrouillage : /var/lock | | C - Programme d'appel intérieur : | | D - Programme d'appel extérieur : | | E - Débit/Parité/Bits : 9600 8N1 | F - Contrôle de flux matériel : Oui | G - Contrôle de flux logiciel : Non | | | | Changer quel réglage ? | -----------------------------------------------------------------------
En fonction de la liste des ports série disponibles (voir Section 3.1, « Ports série »), on saisit le nom du premier port série. |
|
En fonction des paramètres de l'équipement à gérer, on fixe les paramètres de la liaison à l'aide du menu suivant : ------[Paramètres de communication]------- | | | Actuellement : 9600 8N1 | | | | Vitesse Parité Données | | | | A: 300 L: Aucune S: 5 | | B: 1200 M: Paire T: 6 | | C: 2400 N: Impaire U: 7 | | D: 4800 O: Marque V: 8 | | E: 9600 P: Espace | | F: 19200 Bits d'arrêt | | G: 38400 W: 1 | | H: 57600 X: 2 | | I: 115200 Q: 8-A-1 | | J: 230400 R: 7-P-1 | | | | | | Choix, ou <Entrée> pour sortir ? | ------------------------------------------ |
|
Toujours en fonction de l'équipement à gérer, on choisit le contrôle de flux matériel. C'est le mode le plus fiable. |
Voici une exemple de fichier /etc/minicom/minirc.dfl
obtenu à partir des
réglages ci-dessus.
# Fichier généré automatiquement - utilisez « minicom -s » # pour changer les paramètres pu port /dev/ttyS0 pu baudrate 9600 pu bits 8 pu parity N pu stopbits 1 pu scriptprog /usr/bin/runscript pu minit ~^M~ATZ^M~ pu mreset ~^M~ATZ^M~ pu escape-key Escape (Meta)
Il est aussi possible d'effacer toutes les commandes Hayes de dialogue avec les modems. Comme minicom possède une option de démarrage éliminant tous les dialogues modems, il n'est pas nécessaire de traiter ce problème au niveau système. Il se peut qu'un utilisateur ait effectivement besoin d'un modem.
Le jeu des fonctionnalités de minicom est très riche. Il suffit de consulter
les pages de manuels pour s'en convaincre : man minicom
. L'objet de ce
document n'étant de dresser un catalogue exhaustif de ces
fonctions, voici un exemple type de configuration utilisateur :
$ MINICOM="-o -8 -l -m -con -t linux" ; export MINICOM
Option |
|
Option |
|
Option |
|
Option
|
|
Option |
|
Option |
|
Positionnement de la variable d'environnement |
Une fois que l'on est satisfait de son jeu d'options minicom, il est possible de le conserver dans la configuration du shell :
$ echo export MINICOM=\"-o -8 -l -m -con -t linux\" >>~/.bash_profile
De cette façon, toute ouverture d'un nouveau shell comprendra la variable d'environnement
MINICOM
et ses options.
Les exemples d'utilisation des séquences Break
sont nombreux. Le plus souvent, il s'agit
d'interrompre brutalement le chargement du système d'exploitation
sur un équipement. À la suite de cette opération, on peut charger
une nouvelle image système ou reprendre la main sur un équipement
dont on a perdu les mots de passe.
Suivant la configuration de minicom, les séquences de touches diffèrent.
-
Avec un codage clavier sur 7 bits, la séquence est : Ctrl+a puis f.
-
Avec un codage clavier sur 8 bits, la séquence est : Alt+f.
- Initialisation d'un commutateur Cisco™ 2950
-
Pour interrompre le chargement du système d'un commutateur de ce modèle il faut que la variable d'environnement
ENABLE_BREAK
soit préalablement positionnée suron
.sw1#sh boot BOOT path-list: Config file: flash:/config.text Private Config file: flash:/private-config.text Enable Break: ON Manual Boot: no HELPER path-list: NVRAM/Config file buffer size: 32768
Lors du redémarrage de l'équipement il est possible d'utiliser la séquence Ctrl+a puis f pour envoyer un
Break
et interrompre le chargement du système.flashfs[0]: Bytes available: 3169792 flashfs[0]: flashfs fsck took 7 seconds. ...done initializing flash. Boot Sector Filesystem (bs:) installed, fsid: 3 Parameter Block Filesystem (pb:) installed, fsid: 4 Loading "flash:/c2950-i6q4l2-mz.121-22.EA2.bin"...###########################bad Error loading "flash:/c2950-i6q4l2-mz.121-22.EA2.bin" Interrupt within 5 seconds to abort boot process. Boot process failed... The system is unable to boot automatically. The BOOT environment variable needs to be set to a bootable image. switch:
- Initialisation d'un routeur Cisco™ 2500
-
Pour interrompre le chargement du système IOS d'un routeur de cette marque, il faut envoyer un
Break
pendant les 60 premières secondes après la mise sous tension de l'équipement. Comme cet exemple est traité via un portable avec une interface graphique, la séquence de touches est : Alt+f.System Bootstrap, Version 11.0(10c)XB2, PLATFORM SPECIFIC RELEASE SOFTWARE (fc1) Copyright (c) 1986-1998 by cisco Systems 2500 processor with 14336 Kbytes of main memory Abort at 0x11198B6 (PC) > >o/r 0x2142 > >b
En reprenant le cas du commutateur Cisco™ 2950, on peut transférer une image du système d'exploitation via la connexion série avec le protocole xmodem. Ce n'est certainement pas la méthode la plus rapide mais lorsque toutes les informations de la mémoire flash ont été détruite, il ne reste pas beaucoup d'autre solution.
Voici un exemple de «catastrophe provoquée» :
-
On commence par détruire le contenu de la mémoire flash.
switch: format flash: Are you sure you want to format "flash:" (all data will be lost) (y/n)?y flashfs[0]: 0 files, 1 directories flashfs[0]: 0 orphaned files, 0 orphaned directories flashfs[0]: Total bytes: 7741440 flashfs[0]: Bytes used: 1024 flashfs[0]: Bytes available: 7740416 flashfs[0]: flashfs fsck took 5 seconds. Filesystem "flash:" formatted switch: dir flash: Directory of flash:/ 2 -rwx 285 <date> env_vars 7739904 bytes available (1536 bytes used) switch:
-
On prépare le transfert d'image système via xmodem sur le commutateur.
switch: flash_init Initializing Flash... ...The flash is already initialized. switch: load_helper copy xmodem: flash:c2950-i6q4l2-mz.121-22.EA2.bin Begin the Xmodem or Xmodem-1K transfer now... C
-
On lance le transfert à partir de la séquence de touches Crtl+A puis s.
Sélection du protocole de transfert.
Sélection du fichier image système à transférer.
Transfert du fichier image système.
+-[Envoyer]--+ | zmodem | | ymodem | | xmodem | kermit | | ascii | +------------+ <snip/> +-----------[Sélectionner un fichier pour envoyer]------------+ |Répertoire : /home/etu | | [..] | | [ios] | | .bash_history | | .bash_profile | | .bashrc | | .viminfo | | c2950-i6q4l2-mz.121-22.EA2.bin | c2950-i6q4l2-tar.121-22.EA2.tar | | minicom.log | | | | | | (Échap pour sortir, Espace pour marquer) | +-------------------------------------------------------------+ [Aller] [Préc.] [Voir] [Marq.] [Dém .] [OK] <snip/> +-----[xmodem envoyer - Appuyez sur CTRL-C pour quitter]------+ |Sending c2950-i6q4l2-mz.121-22.EA2.bin, 24111 blocks: Give yo| |ur local XMODEM receive command now. | |Xmodem sectors/kbytes sent: 138/17k | | | | | | | | +-------------------------------------------------------------+