Jump to content

# Working with the serial console (Français)

2 languages

- English
- 日本語

From ArchWiki
État de la traduction: Cet article est la version francophone de Working with the serial console. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Une machine sous Arch Linux peut être configurée pour des connexions via le port de console série, ce qui permet d'administrer une machine même si aucun clavier, souris, moniteur ou réseau ne lui est attaché.

L'installation d'Arch Linux est également possible via la console série.

Un environnement de base pour ce scénario est constitué de deux machines connectées à l'aide d'un câble série (câble de connexion à 9 broches). La machine administratrice peut être n'importe quelle machine Unix/Linux ou Windows avec un programme émulateur de terminal (PuTTY ou Minicom, par exemple).

Les instructions de configuration ci-dessous permettront de sélectionner le menu du chargeur d'amorçage, les messages de démarrage et le transfert de terminal vers la console série.

## Configurer l'accès à la console sur la machine cible

### Chargeur d'amorçage

#### GRUB

Lorsque vous utilisez GRUB avec un `grub.cfg` généré, éditez `/etc/default/grub` et activez la prise en charge des entrées et sorties série :

    /etc/default/grub

    ...
    GRUB_TERMINAL_INPUT="console serial"
    ...
    GRUB_TERMINAL_OUTPUT="gfxterm serial" ...
    ...

Ajoutez ensuite la variable `GRUB_SERIAL_COMMAND` et définissez les options pour la connexion série. Pour COM1 (`/dev/ttyS0`) avec une vitesse de transmission de 115200 bit/s :

    /etc/default/grub

    ...
    GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200"

Lisez le manuel de GRUB sur Utilisation de GRUB via un port série et la commande série pour une explication détaillée des options disponibles.

#### GRUB Legacy

Editez le fichier de configuration GRUB Legacy `/boot/grub/menu.lst` et ajoutez ces lignes dans la zone générale de la configuration :

    serial --unit=0 --speed=9600
    terminal --timeout=5 serial console

Note: Lorsque la ligne `terminal --timeout=5 serial console` est ajoutée à votre `menu.lst`, votre séquence de démarrage affichera désormais une série de messages `Press any key to continue`. Si aucune touche n'est enfoncée, le menu de démarrage s'affichera sur le périphérique (série ou console) apparaissant en premier dans la ligne de configuration `terminal`

#### rEFInd

rEFInd prend en charge la console série uniquement en mode texte. Editez `refind.conf` et décommentez `textonly`.

#### Syslinux

Pour activer la console série dans Syslinux (Français), éditez `syslinux.cfg` et ajoutez `SERIAL` comme première directive dans le fichier de configuration.

Pour COM1 (`/dev/ttyS0`) avec un débit en bauds de 115200 bit/s :

    SERIAL 0 115200

Les paramètres série sont codés en dur à 8 bits, sans parité et 1 bit d'arrêt [1]. Lisez Wiki Syslinux:Config#SERIAL pour les options.

### Kernel

La sortie du noyau peut être envoyée à la console série en définissant le `console=` paramètre du noyau. Le dernier `console=` spécifié sera défini comme `/dev/console`.

    console=tty0 console=ttyS0,115200

Consultez https://docs.kernel.org/admin-guide/serial-console.html.

### getty

Au démarrage, systemd-getty-generator(8) démarre une instance getty pour chaque console spécifiée dans la ligne de commande du noyau.

Si vous n'avez pas configuré `console=` dans la ligne de commande du noyau démarrez `serial-getty@device.service`. Pour `/dev/ttyS0` (COM1), ce serait `serial-getty@ttyS0.service`. Activez le service pour le démarrer au démarrage.

Sauf indication contraire dans la ligne de commande du noyau, getty attendra un débit en bauds de 38400 bit/s, 8 bits de données, pas de parité et un bit d'arrêt.

## Faire des connexions

### Connexion à l'aide d'un programme émulateur de terminal

Note: Avant d'établir une connexion, il est recommandé d'ajouter votre utilisateur au groupe `uucp`. Sinon, vous aurez besoin de l'autorisation de root pour établir une connexion :

    # gpasswd -a username uucp

Consultez Users and groups (Français)#Groupes d'utilisateurs pour plus de détails.

Effectuez ces étapes sur la machine utilisée pour connecter la console distante.

#### dterm

dtermAUR[broken link: package not found] est un petit programme de communication série. Si vous l'invoquez sans paramètres, il se connectera à `/dev/ttyS0` à 9600 bauds par défaut. L'exemple suivant se connecte à `/dev/ttyS0` à 115200 bauds, avec 8 bits de données, aucun bit de parité et 1 bit d'arrêt :

    $ dterm 115200 8 n 1

Consultez sa page d'accueil [2][dead link 2023-05-06—HTTP 404] pour plus d'exemples.

#### Minicom

minicom peut être obtenu à partir des dépôts officiels. Démarrez Minicom en mode configuration :

    $ minicom -s

En utilisant le menu de navigation textuel, modifiez les paramètres du port série comme suit :

    Serial Device : /dev/ttyS0
    Bps/Par/Bits : 9600 8N1

Appuyez sur Entrée pour quitter les menus (l'appui sur Echap n'enregistrera pas les changements). Supprimez les chaînes Init et Reset du modem, car nous ne nous connectons pas à un modem. Pour ce faire, dans le menu `Modem and Dialing`, supprimez les chaînes Init et Reset. Vous pouvez également sauvegarder la configuration en choisissant `save setup as dfl` dans le menu principal. Redémarrez minicom avec le câble série connecté à la machine cible. Pour terminer la session, appuyez sur `Ctrl+A` suivi de `Ctrl+X`.

#### picocom

picocom est un petit programme d'émulation de terminaux muets qui ressemble beaucoup à minicom, mais au lieu de mini, c'est pico. L'exemple suivant se connecte à `ttyS0` à 9600 bps :

    $ picocom -b 9600 /dev/ttyS0

Note: si la touche de retour arrière ne fonctionne pas correctement, essayez cette option : `--omap delbs`

Consultez son manuel pour une utilisation détaillée.

#### Screen

GNU Screen est capable de se connecter à un port série. Il se connectera à 9600 bauds par défaut :

    $ screen /dev/ttyS0

Une vitesse de transmission différente (par exemple 115200) peut être spécifiée sur la ligne de commande.

    $ screen /dev/ttyS0 115200

Pour terminer la session, appuyez sur `Ctrl+a` suivi de `K`. Vous pouvez également appuyer sur `Ctrl+a`, taper `:quit` et confirmer en appuyant sur `Enter`.

#### Serialclient

Serialclient [3] est un client CLI pour la connexion série écrit en ruby. Installez le paquet ruby, puis installez-le avec ce qui suit :

    # gem install serialclient

Ensuite, vous pouvez l'utiliser comme ceci :

    $ serialclient -p /dev/ttyS0

### Interfaces graphiques

- cutecom — Un moniteur série avec interface graphique.

  https://gitlab.com/cutecom/cutecom || cutecomAUR

- PuTTY — Un client SSH/Telnet avec un terminal intégré.

  https://www.chiark.greenend.org.uk/~sgtatham/putty/ || putty

- moserial — Un terminal série basé sur GTK, principalement destiné aux utilisateurs techniques et aux bricoleurs informatiques qui ont besoin de communiquer avec des systèmes embarqués, des équipements de test et des consoles série.

  https://wiki.gnome.org/moserial || moserial

### Clients Windows

Sur les machines Windows, connectez-vous au port série à l'aide de programmes comme PuTTY [4] ou Terminalbpp [5].

## Installation d'Arch Linux à l'aide de la console série

Note: Le chargeur d'amorçage de la version mensuelle d'Arch Linux (c'est-à-dire le médium d'installation) a été configuré [6] pour écouter sur le port 0(`ttyS0`/COM1) à 115200 bps, avec 8 bits de données, aucun bit de parité et 1 bit d'arrêt.

1. Connectez-vous à la machine cible en utilisant la méthode décrite ci-dessus.
2. Démarrez la machine cible en utilisant le medium d'installation d'Arch Linux.
3. Lorsque le chargeur d'amorçage s'affiche, sélectionnez Boot Arch Linux (<arch>) et appuyez sur `Tab` pour éditer.
4. Ajoutez `console=ttyS0,115200` et appuyez sur `Enter`.
5. Maintenant systemd devrait détecter ttyS0 et lancer un getty en série dessus. Connectez-vous en tant que `root` et démarrez l'installation comme d'habitude.

Note:

- Une fois l'installation terminée, les paramètres de la console ne seront pas sauvegardés sur la machine cible ; afin d'éviter d'avoir à connecter un clavier et un moniteur, configurez l'accès à la console sur la machine cible avant de redémarrer.
- Bien qu'une vitesse de port de 9600 soit utilisée dans la plupart des exemples de ce document, il est recommandé de travailler avec des valeurs plus élevées (la liste des vitesses disponibles est affichée dans Minicom en appuyant sur `Ctrl+a` puis `p`)

## Déboguer une machine qui ne répond pas en utilisant une console série

Bien que [7] ne contienne que des instructions brutes et laconiques, il présente un bon résumé. Il est important de noter qu'ici, la machine testée a perdu sa réactivité de manière reproductible. Et que cela s'est produit pendant un fonctionnement normal. On pouvait donc y accéder normalement avant de devoir la déboguer. Cependant, en général, la console série est également utile pour déboguer les problèmes de démarrage. Peut-être en configurant le chargeur d'amorçage à la main au moment du démarrage de la machine. Notez également la mention netconsole dans le paragraphe P.S. du lien externe de cette section.

## Dépannage

### Ctrl+c et Minicom

Si vous avez des difficultés à envoyer une commande `Ctrl+c` via minicom, vous devez désactiver le contrôle de flux matériel dans les paramètres du périphérique (`minicom -s`), ce qui active alors l'interruption.

### Redimensionnement d'un terminal

Contrairement à ssh, les connexions série n'ont pas de mécanisme pour transférer quelque chose comme `SIGWINCH` lorsqu'un terminal est redimensionné. Cela peut causer des problèmes étranges avec certains programmes plein écran (par exemple, `less`) lorsque vous redimensionnez la fenêtre de votre émulateur de terminal.

Le redimensionnement du terminal via `stty` est une solution de contournement :

    $ stty rows lignes cols colonnes.

Cependant, cela vous oblige à saisir manuellement la géométrie appropriée. Les méthodes suivantes devraient être plus simples.

1. Il existe un utilitaire moins connu appelé `resize`, fourni avec xterm, qui peut résoudre ce problème. Appelez-le sans paramètres après avoir redimensionné la fenêtre de l'émulateur de terminal :

    $ resize

2. Si vous ne souhaitez pas installer xterm, il est possible d'effectuer le même travail via une fonction shell. Placez la fonction suivante dans votre zshrc et invoquez-la sans paramètres après avoir redimensionné la fenêtre de l'émulateur de terminal :

    rsz() {
    	if [[ -t 0 && $# -eq 0 ]];then
    		local IFS='[;' escape geometry x y
    		print -n '\e7\e[r\e[999;999H\e[6n\e8''.
    		read -sd R escape geometry
    		x=${geometry##*;} y=${geometry%%;*}
    		if [[ ${COLUMNS} -eq ${x} && ${LINES} -eq ${y} ]];then
    			print "${TERM} ${x}x${y}"
    		else
    			print "${COLUMNS}x${LINES} -> ${x}x${y}"
    			stty cols ${x} lignes ${y}
    		fi
    	else
    		[[ -n ${commandes[repo-elephant]} ]] && repo-elephant || print 'Usage : rsz' ## oeuf de Pâques ici :)
    	fi
    }

### Ports manquants sur les cartes d'extension multi-ports

Le nombre de ports série utilisant le pilote générique 8250 dans la configuration par défaut du noyau est fixé à 4 au moment de l'exécution avec un maximum de 32. Cela empêchera la création de `/dev/ttyS4` et plus. En comptant le port série intégré typique sur la carte mère, cela empêche l'utilisation du 4ème port série sur une carte d'extension à 4 ports.

Ceci peut être annulé par le paramètre du noyau `8250.nr_uarts`. Par exemple

    8250.nr_uarts=5

Category:

- Hardware (Français)

Hidden categories:

- Pages with broken package links
- Pages with dead links