Au cœur du prompt de connexion Linux

Introduction aux arcanes de la console Linux

Au terme de la séquence d’amorçage d’un système Linux, le prompt invitant à la saisie des identifiants (login:) ne surgit pas par enchantement : il est orchestré en arrière-plan par le démon agetty. Plutôt que de s’égarer dans les détails austères des pages de manuel, ce tutoriel pratique décortique son articulation avec systemd, la création d’écrans d’accueil sur mesure via /etc/issue et la mise en œuvre de configurations avancées immédiatement applicables en environnement de production.

Fondamentaux d’agetty et inspection du service sous systemd

Pour localiser précisément l’exécutable agetty au sein de l’arborescence système, nous interrogeons l’environnement avec la commande which agetty.

Localisation de l’exécutable agetty

Véritable passerelle entre le noyau et l’espace utilisateur, agetty ouvre les terminaux virtuels ou les liaisons séries, calibre les paramètres du terminal (vitesse, parité) et prend en charge l’affichage de l’invite de connexion. Examinons la version actuellement déployée ainsi que l’ensemble des fonctionnalités prises en charge.
⚙️ [Options essentielles]

-a, --autologin : Démarre automatiquement une session pour le compte spécifié, contournant ainsi l’étape d’authentification interactive.
-J, --noclear : Empêche l’effacement de l’écran avant l’affichage du prompt afin de conserver visibles les journaux d’amorçage du noyau.
-f, --issue-file : Définit un fichier alternatif contenant la bannière système présentée au-dessus de l’invite de connexion.
-o, --login-options : Transmet des paramètres personnalisés au binaire login sous-jacent.
-n, --skip-login : Saute l’étape de saisie du nom d’utilisateur pour invoquer directement le mécanisme d’authentification suivant.
-8, --8bits : Configure le canal de communication pour supporter nativement le jeu de caractères 8 bits.

Vérification de la version d’agetty

Afin d’analyser l’état d’activité du premier terminal virtuel (tty1) supervisé dynamiquement par systemd, exécutons la requête systemctl status getty@tty1.service --no-pager.
Le compte rendu confirme que le processus agetty tourne parfaitement en tâche de fond, prêt à interagir dès qu’un utilisateur sollicite la console.

État opérationnel de l’unité getty@tty1.service

Conception d’une bannière d’accueil personnalisée avec /etc/issue

Le texte d’accueil précédant l’invite de connexion provient des directives définies dans /etc/issue. Prenons connaissance du modèle initialement configuré à l’aide de cat /etc/issue.
Au sein de ce fichier, certaines séquences d’échappement sont interprétées par agetty : par exemple, \n restitue le nom d’hôte de la machine, tandis que \l indique la console virtuelle (ligne tty) actuellement employée.

Lecture de la bannière système par défaut

Avant de remanier ce fichier système, il est prudent d’en préserver l’état original au moyen de sudo cp /etc/issue /etc/issue.bak.

Création d’une sauvegarde de sécurité pour /etc/issue

Nous pouvons composer un bandeau personnalisé injectant dynamiquement des informations sur le système d’exploitation et la console active en lançant echo -e '\n=== Welcome to Ubuntu Server (tty: \l) ===\nOS: \s \r (\m) | Time: \t\n' | sudo tee /tmp/custom_issue.
Ce gabarit exploite plusieurs variables interprétées par le démon : l’identifiant tty (\l), le nom du système d’exploitation (\s), la version du noyau Linux (\r), l’architecture du processeur (\m) et l’heure système (\t).

Génération du fichier temporaire de bannière

Assurons-nous que le contenu généré et les directives d’échappement sont syntaxiquement conformes via cat /tmp/custom_issue.

Vérification du gabarit /tmp/custom_issue

Personnalisation des directives agetty via les surcharges systemd

Pour comprendre comment le gestionnaire de services orchestre la console tty1, affichons la définition complète de l’unité avec systemctl cat getty@tty1.service.
Le retour écran permet d’observer la structure de base décrite dans /usr/lib/systemd/system/getty@.service, et en particulier la ligne ExecStart qui détermine les arguments transmis au programme.

Inspection de la configuration unitaire getty@tty1.service

Pour éviter de modifier directement les fichiers de configuration distribués par les paquets — pratique déconseillée lors des mises à jour système —, nous créons un répertoire de surcharge drop-in à l’aide de sudo mkdir -p /etc/systemd/system/getty@tty1.service.d.

Création du répertoire drop-in pour getty@tty1

Afin d’empêcher l’effacement de l’écran grâce au commutateur --noclear et d’ajuster simultanément les débits de transmission ainsi que l’émulation du terminal, nous déployons notre configuration dédiée via echo -e '[Service]\nExecStart=\nExecStart=-/sbin/agetty -o "-p -- \\u" --noclear -s %I 115200,38400,9600 vt220' | sudo tee /etc/systemd/system/getty@tty1.service.d/noclear.conf.
Notez la réinitialisation préalable obligatoire au moyen d’un ExecStart= vide, indispensable pour écraser la commande par défaut avant de définir la nouvelle directive agetty.

Écriture du fichier de surcharge noclear.conf

Pour que systemd recharge ses définitions et applique instantanément cette surcharge, exécutons systemctl daemon-reload.

Actualisation de la configuration de systemd

Vérifions désormais que notre fragment drop-in est correctement fusionné avec l’unité parente en exécutant de nouveau systemctl cat getty@tty1.service.
L’adjonction finale du bloc noclear.conf dans la sortie confirme que nos réglages personnalisés ont bien pris le relais.

Contrôle de la fusion des surcharges systemd

Supervision des terminaux virtuels (TTY) et des consoles séries

Pour faire le point sur l’ensemble des instances de terminaux virtuels en activité sur la machine hôte, lançons la commande systemctl list-units --type=service 'getty@*' --no-pager.
Le résultat met en évidence que l’instance getty@tty1.service, affectée au premier terminal virtuel, est active et opérationnelle.

Recensement des unités getty en cours d’exécution

Dans les déploiements sur machines virtuelles cloud ou au sein d’environnements embarqués, la gestion passe couramment par des liaisons séries. Nous pouvons vérifier l’état d’enregistrement des modèles correspondants via systemctl list-unit-files 'serial-getty*' --no-pager.
Le résultat indique la présence du template serial-getty@.service, actuellement inactif (disabled).

Examen des fichiers d’unités serial-getty

Enfin, pour surveiller en temps réel les comptes utilisateurs actuellement connectés et les terminaux (TTY) qu’ils occupent, la commande w s’avère incontournable.
Cette commande fournit une vue d’ensemble instantanée des sessions actives, du temps de fonctionnement global de la machine ainsi que des moyennes de charge système (load average).

Surveillance des sessions connectées avec la commande w

À travers ces manipulations concrètes, nous avons exploré les rouages d’agetty, de l’initialisation des consoles virtuelles jusqu’aux mécaniques avancées de configuration sous systemd.
Comprendre ces mécanismes de bas niveau offre un regard éclairé sur les phases finales du démarrage Linux et enrichit durablement vos compétences en administration système.