Running in the Dark Daemons in Linux

Cette vidéo déconstruit la pile des services Linux en trois catégories (essentiels, quasi-essentiels, optionnels) du point de vue d’un utilisateur ayant choisi un système sans systemd, pour redonner au administrateur la maîtrise de ce qui tourne sur sa machine.

Voir la source

SYNTHÈSE STRUCTURÉE

La définition d’un service et le problème de la prolifération

Un service (ou démon) est un processus qui tourne en arrière-plan sans interface utilisateur, exécutant une tâche spécifique pendant que vous faites autre chose. Le problème survient quand ces processus se multiplient, s’emboîtent les uns dans les autres, et deviennent une infrastructure opaque. L’intervenant résume : « When you no longer know what’s running on your machine and why. » La clé est de retrouver cette connaissance.

Le système d’init : le premier processus (PID 1)

Le processus avec PID 1 est le premier lancé par le noyau après le boot. Sur systemd, c’est un binaire de près de 2 Mo qui gère démarrage, logs, réseau, login, montages, sockets, timers… « A monolith. » Sur Void Linux, l’intervenant utilise runit, un binaire de 18 Ko. Chaque service est un répertoire dans /etc/sv. Pour l’activer, on crée un lien symbolique dans /var/service ; pour le désactiver, on le supprime. « No magic, no abstraction. The file system as a control interface. » D’autres alternatives existent : OpenRC (Gentoo, Artix), s6, finit. Leur point commun est la séparation des responsabilités, contrairement à systemd.

Les services essentiels : sans eux, le bureau n’existe pas

udev/eudev : le gestionnaire de périphériques

udev reçoit les messages du noyau quand vous branchez une clé USB, un écran ou une webcam, et crée le nœud dans /dev. Sans lui, votre souris, clavier, écran n’existent pas. Sur les systèmes sans systemd, on utilise eudev (fork né chez Gentoo en 2012) ou le udev de systemd en composant autonome. Avant udev, les périphériques dans /dev étaient statiques, souvent erronés. L’intervenant rappelle : « The birth of udev in Gentoo is the first major anti-systemd political break. »

D-Bus : le système de messagerie inter-processus

D-Bus permet aux processus de communiquer entre eux. Quand NetworkManager veut vous dire que vous êtes connecté, ou que votre environnement de bureau veut connaître l’état de la batterie, cela passe par D-Bus. « Any modern desktop environment requires it. It’s non-negotiable with a full desktop environment. » C’est un composant centralisé paradoxal dans un système décentralisé comme Linux.

Gestion de session utilisateur : logind, elogind, ou turnstile

Sur systemd, c’est systemd-logind qui gère la suspension, le montage de périphériques sans root, les sessions Xorg. Sans systemd, deux alternatives : elogind (fork autonome de systemd-logind, qui fonctionne bien mais porte « systemd DNA ») et turnstile (alternative plus légère, supporte Wayland nativement, idéale avec un gestionnaire de fenêtres minimaliste). L’intervenant souligne : « GNOME became dependent on this component, making it difficult to use alternative init systems. »

Gestion réseau : dhcpcd ou NetworkManager

dhcpcd suffit pour des configurations simples. NetworkManager gère le Wi-Fi, les VPN, les connexions multiples. Né chez Red Hat au début des années 2000, il a résolu le problème du Wi-Fi sur les laptops, mais « it ends up completely hiding how networking works. » Aujourd’hui, tout le monde l’utilise, mais peu savent ce qu’il fait réellement.

Polkit et PAM : autorisations et authentification

Polkit gère les dialogues d’autorisation (ex. : demander un mot de passe pour monter un disque). PAM gère l’authentification bas niveau (login, sudo). Sur un bureau multi-utilisateurs, ils sont nécessaires. Sur un système minimaliste mono-utilisateur, on peut s’en passer, mais la plupart des environnements de bureau les supposent présents. L’intervenant note le paradoxe : « It was born to increase security and control, but it’s so complex and invisible that few users truly understand how it works. »

Les services quasi-essentiels : sans eux, le bureau est dégradé

PipeWire et WirePlumber : l’audio et la vidéo unifiés

PipeWire est un serveur audio/vidéo unifié qui parle le langage de PulseAudio et de JACK, gère l’audio du navigateur, le streaming d’écran, le Bluetooth. Il est né pour résoudre un problème de sécurité sur Wayland (partage d’écran). WirePlumber est le gestionnaire de session de PipeWire, qui décide quels flux connecter à quels périphériques. Sans lui, PipeWire ne fonctionne pas. Sur Void, PipeWire ne démarre pas comme un service runit, mais via l’autostart de l’environnement de bureau ou les spécifications XDG. L’intervenant souligne : « PipeWire is one of the most innovative projects in the entire Linux ecosystem, but also one of the least visible. »

UDisks2 : la gestion des périphériques de stockage

UDisks2 se place au-dessus d’udev et offre une interface haut niveau pour les périphériques de stockage. Quand vous branchez une clé USB et que le gestionnaire de fichiers l’affiche automatiquement, c’est UDisks2 qui a fait le travail. Sans lui, vous devez monter manuellement avec mount. Né dans l’écosystème freedesktop.org, il a standardisé la gestion du stockage, mais « what was once an explicit command, mount, becomes an automatic invisible event. »

UPower : la gestion de l’énergie

UPower surveille la batterie, l’alimentation, les périphériques d’entrée qui se mettent en veille. Sur un laptop, c’est lui qui prévient quand la batterie est faible. Il est interrogé en continu par tout le système via D-Bus. « You only notice it when it’s missing. » Sans lui, le système perd toute conscience de son état énergétique.

Le serveur d’affichage et le gestionnaire d’affichage

Le serveur d’affichage (Xorg ou un compositeur Wayland comme Sway, River) n’est pas techniquement un service, mais l’infrastructure sur laquelle tout le bureau repose. Le gestionnaire d’affichage (LightDM, SDDM, GDM) est une option de confort : il affiche l’écran de connexion graphique. Sur Void, beaucoup utilisent startx depuis le terminal, ce qui supprime une couche entière. L’intervenant rappelle : « The entire graphical interface, what we perceive as the operating system, is nothing more than a layer on top of the real system. »

Les services optionnels : installés par défaut, rarement nécessaires

Syslog/rsyslog : la journalisation centralisée

syslog et rsyslog collectent et centralisent les logs. Sur Void, ce n’est pas installé par défaut. Le noyau écrit dans dmesg et les services runit écrivent leurs logs localement. « If you’re not managing a server with dozens of services to monitor, syslog is noise. » C’est un outil conçu pour les serveurs, pas pour un bureau minimaliste.

Bluetooth (BlueZ) : pour les périphériques sans fil

Le service Bluetooth fait partie de la pile BlueZ. Essentiel si vous utilisez des écouteurs, souris ou claviers Bluetooth. Mais si vous n’avez aucun périphérique Bluetooth, « it just sits there running in the background doing nothing. »

Cups : l’impression

Cups est le système d’impression standard, développé à l’origine par Apple. Si vous n’imprimez jamais, c’est du poids mort. L’intervenant ironise : « Linux uses services developed by Apple. »

Avahi : la

Du même canal

Tout voir