Pourquoi le systemd de Linux divise encore après toutes ces années

systemd a 10 ans, mais les sentiments à ce sujet dans la communauté Linux ne se sont pas adoucis – il est aussi source de division que jamais. Bien qu’il soit utilisé par de nombreuses distributions Linux majeures, l’opposition hardcore n’a pas cédé.

La séquence de démarrage Linux

Lorsque vous allumez votre ordinateur, le matériel démarre, puis (selon le type de Secteur de démarrage votre ordinateur utilise) soit le enregistrement de démarrage principal (MBR) exécute ou le Interface de micrologiciel extensible unifiée (UEFI) s’exécute. La dernière action de ces deux éléments est de déclencher le Noyau Linux.

Le noyau est chargé en mémoire, se décompresse et s’initialise. UNE système de fichiers temporaire est créé en RAM, généralement par un utilitaire appelé initramfs ou initrd. Cela permet de déterminer et de charger les pilotes requis. Ceci, à son tour, permet au système de fichiers de l’espace utilisateur de se charger et de se préparer à établir l’environnement d’espace utilisateur.

La création de l’environnement de l’espace utilisateur est gérée par le processus init, qui est le premier processus lancé par le noyau dans un espace utilisateur. Il a un ID de processus (PID) de 1. Tous les autres processus sont des enfants directs ou indirects du processus init.

Avant systemd, le principal défaut du processus d’initialisation était une refonte du Init Unix System V. Il y avait d’autres choix disponibles, mais System V init était l’option standard dans la plupart des non-Distribution de logiciels à Berkeley (BSD) distributions dérivées. Parce qu’il vient directement de System V Unix – l’ancêtre spirituel de Linux – beaucoup de gens le considèrent comme «la manière officielle» de faire init.

Le processus d’initialisation démarre tous les démons et les services nécessaires pour faire fonctionner le système d’exploitation de manière significative et interactive. Ces démons gèrent des éléments tels que la pile réseau, activent d’autres matériels à l’intérieur de votre ordinateur et fournissent un écran de démarrage.

Beaucoup de ces processus d’arrière-plan continuent de s’exécuter après leur démarrage. Ils font des choses comme consigner les informations sur les événements, surveillent les modifications matérielles lorsque vous insérez ou supprimez des périphériques et gèrent les connexions utilisateur. Sans surprise, le système init inclut également des fonctionnalités pour gérer les services.

On peut utiliser ps pour voir le processus qui a le PID 1. Nous utiliserons les options f (liste plein format) et p (PID):

ps -fp 1

ps -fp 1 dans une fenêtre de terminal.

Nous voyons que le processus avec PID 1 est systemd. L’exécution de la même commande sur Manjaro Linux a donné un résultat différent. Le processus avec le PID 1 a été identifié comme / sbin / init. Un rapide coup d’œil à ce fichier montre qu’il s’agit d’un lien symbolique vers systemd:

ps -fp 1
ls -hl /sbin/init

ps -fp 1 dans une fenêtre de terminal.

En utilisant l’option ppid (ID de processus parent) avec ps, nous pouvons voir quels processus ont été directement lancés par systemd:

ps -f --ppid 1

ps -f --ppid 1 dans une fenêtre de terminal.

C’est une liste assez longue, comme vous pouvez le voir dans l’image ci-dessous.

ps -f --ppid 1 dans une fenêtre de terminal.

Les alternatives

Plusieurs projets ont tenté de produire une alternative au traditionnel init System V. L’un des principaux problèmes est que, avec System V init, tous les processus sont lancés en série, l’un après l’autre. Pour améliorer l’efficacité de la séquence de démarrage, de nombreux projets alternatifs utilisent le parallélisme pour démarrer les processus simultanément et de manière asynchrone.

  Comment débloquer le déverrouillage OEM sur Samsung Galaxy S8 / S9 / Note 8

Voici quelques informations sur certains d’entre eux:

Parvenu: Développé par Canonique, il a été utilisé dans Ubuntu 9.10, chapeau rouge, Red Hat Enterprise Linux (RHEL) 6, CentOS 6 et Feutre 9.
Exécuter: Fonctionne sur FreeBSD et autres dérivés BSD, macOS et Solaris, ainsi que les systèmes Linux. C’est aussi le système d’initialisation par défaut sur Néant Linux.
s6-linux-init: Ce remplacement de System V init a été conçu pour suivre de près les Philosophie Unix, qui se réduit souvent à la morsure sonore «faites une chose et faites-la bien».

Il existe de nombreuses autres fonctionnalités et design différents. Cependant, aucun d’entre eux créé la fureur systemd l’a fait.

La manière systemd

systemd a été publié en 2010 et a été utilisé dans Fedora en 2011. Depuis lors, il a été adopté par de nombreuses distributions. Il a été développé par Lennart Poettering et Kay Sievers, deux ingénieurs logiciels chez RedHat.

systemd est bien plus qu’un remplacement d’init. Il s’agit plutôt d’une suite d’environ 70 binaires qui gèrent l’initialisation du système, les démons et services, la journalisation et la journalisation, et de nombreuses autres fonctions qui étaient déjà gérées par des modules dédiés sous Linux. La plupart d’entre eux n’ont rien à voir avec l’initialisation du système.

Certains des démons fournis par systemd sont:

systemd-udevd: Gère les périphériques physiques.
systemd-logind: gère les connexions utilisateur.
résolu par le système: fournit une résolution de nom de réseau aux applications locales.
systemd-networkd: Gère et détecte les périphériques réseau et gère les configurations réseau.
systemd-tmpfiles: crée, supprime et nettoie les fichiers et répertoires volatils et temporaires.
systemd-localed: gère les paramètres régionaux du système.
systemd-machined: détecte et surveille les machines virtuelles et les conteneurs.
systemd-nspawn: peut lancer une commande ou un autre processus dans un conteneur d’espace de noms léger, donnant une fonctionnalité similaire à chroot.

Et ce n’est que la pointe de l’iceberg, qui est aussi le nœud du problème. systemd a depuis longtemps dépassé ce qui est exigé d’un système d’initialisation, qui, selon ses adversaires, est la définition même du fluage de portée.

« C’est trop grand. Cela en fait trop. »

Les opposants à systemd soulignent le grand et curieux mélange de fonctionnalités qu’il englobe. Toutes ces fonctionnalités existaient déjà sous Linux et, peut-être, certaines d’entre elles nécessitaient une actualisation ou une nouvelle approche. Cependant, regrouper toutes ces fonctionnalités dans ce qui est censé être un système d’initialisation est déroutant sur le plan architectural.

systemd a été qualifié de point de défaillance unique pour trop de fonctions critiques, mais cela ne semble pas justifiable. Certes, cela jette le Philosophie Unix de créer de petits outils qui fonctionnent ensemble au lieu de gros logiciels qui font tout par la fenêtre. Bien que systemd ne soit pas strictement monolithique (il est composé de nombreux binaires plutôt que d’un seul énorme), il inclut de nombreux outils et commandes de gestion disparates sous un même parapluie.

Même s’il n’est peut-être pas monolithique, il est gros. Pour avoir une idée de l’échelle, nous avons compté les lignes de texte dans la base de code du noyau 5.6.15 et la branche master systemd du référentiel GitHub.

  Comment jouer à des jeux PlayStation 2 sous Linux

C’était une métrique relativement grossière. Il comptait des lignes de texte, pas seulement des lignes de code. Donc, cela comprenait des commentaires, de la documentation et tout le reste. Cependant, c’était une comparaison comparable et nous a donné un critère simple:

( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l

Le noyau contenait près de 28 millions (27 784 340, pour être exact) de lignes de texte. En revanche, systemd en comptait 1 349 969, soit près de 1,4 million. Avec notre métrique happy-go-lucky, systemd sort à environ 5% de la taille du noyau, ce qui est fou!

Comme autre comparaison, le nombre de lignes pour une implémentation moderne de System V init pour la distribution Arch Linux est ressorti à 1721 lignes.

Poettering n’a manifestement aucun égard pour la Institut d’ingénieurs en électricité et électronique (IEEE) Computer Society, ni la Interface du système d’exploitation portable (POSIX) standard. En fait, il encouragé les développeurs à ignorer POSIX:

«Alors, procurez-vous une copie de l’interface de programmation Linux, ignorez tout ce qu’elle dit sur la compatibilité POSIX et piratez votre incroyable logiciel Linux. C’est assez soulageant!

Il y a eu des accusations selon lesquelles systemd est un projet Red Hat qui ne profite qu’à Red Hat, mais il est alimenté de force dans le monde Linux au sens large. Oui, il est né au sein de Red Hat et est régi et dirigé par lui. Cependant, sur les 1 321 contributeurs, seule une fraction travaille pour Red Hat.

Alors, quels sont les avantages pour Red Hat?

Jim Whitehurst, le président d’IBM, qui était une fois le PDG de Red Hat, a déclaré:

«Red Hat a examiné de nombreuses options disponibles et a même utilisé Upstart de Canonical pour Red Hat Enterprise Linux 6. En fin de compte, nous avons choisi systemd car c’est la meilleure architecture qui offre l’extensibilité, la simplicité, l’évolutivité et des interfaces bien définies pour résoudre les problèmes que nous constatons. aujourd’hui et prévoir dans le futur.

Whitehurst a également déclaré qu’il voyait également des avantages dans les systèmes embarqués. Red Hat s’associe aux «plus grands fournisseurs embarqués au monde, en particulier dans les secteurs des télécommunications et de l’automobile où la stabilité et la fiabilité sont la principale préoccupation.»

Celles-ci semblent être des raisons techniquement valables. Vous pouvez comprendre le besoin de fiabilité de l’entreprise, et il n’est pas déraisonnable pour Red Hat de veiller à ses propres intérêts, mais tout le monde devrait-il faire de même?

Boire le systemd Kool-Aid?

Certains adversaires de systemd disent que les distributions et les gens suivent aveuglément l’exemple de Red Hat et l’adoptent.

Cependant, tout comme la phrase «boire le Kool-Aid», ce n’est pas tout à fait vrai. Inventé en 1978 après chef de culte, Jim Jones, a contraint ses plus de 900 adeptes à se suicider en buvant un liquide aromatisé au raisin imbibé de cyanure, la phrase fait honte à tort à Kool-Aid. Le groupe a en fait bu Flavour Aid, mais Kool-Aid est goudronné par ce pinceau depuis.

De plus, les distributions Linux ne suivent pas aveuglément Red Hat; ils adoptent systemd après de sérieuses délibérations. Le débat a fait rage sur le Debian listes de diffusion depuis longtemps. Cependant, en 2014, la communauté a voté pour adopter systemd comme système d’initialisation par défaut, mais aussi pour prendre en charge des alternatives.

  iOS 12.2 est maintenant disponible avec Apple News + et plus

Debian est un exemple important car il n’est pas dérivé de RedHat, Fedora ou CentOS. Il n’y a pas de pilotage appliqué à Debian depuis Red Hat. Et Debian, comme PID 1, a de nombreux descendants, dont Ubuntu et ses nombreux dérivés.

Les décisions prises par la communauté Debian ont une portée considérable. Ils sont également vigoureusement débattus et votés sur l’utilisation le mode de vote Condorcet. La communauté ne fait pas non plus de tels choix à la légère.

Il a voté à nouveau en décembre 2019 continuer à se concentrer sur systemd et de continuer à explorer des alternatives. Le contraire de suivre aveuglément, c’est en fait un exemple classique de démocratie et de liberté de choix au travail.

Les limites du choix

Vous ne pouvez généralement pas choisir d’utiliser systemd avec une distribution Linux particulière. Au contraire, les distributions choisissent elles-mêmes si elles veulent l’utiliser, et vous pouvez choisir la distribution Linux que vous préférez. Peut-être qu’une distribution Linux que vous aimez est passée à systemd. Comme un musicien préféré qui change de genre, cela peut être choquant.

Les personnes qui utilisent Debian, Feutre, CentOS, Ubuntu, Cambre, Solus, et openSUSE, et s’opposent à l’adoption de systemd, peuvent avoir l’impression qu’ils ne peuvent plus utiliser la distribution de leur choix. S’ils sont suffisamment convaincus par l’un des choix architecturaux, le fluage de la portée ou le non-respect de POSIX, ils pourraient trouver intenable de continuer à utiliser cette distribution.

Il y a un spectre, bien sûr. À une extrémité, vous avez les gens qui ne comprennent pas les problèmes (ou même s’en soucient), et à l’autre, vous avez les objecteurs passionnés. Quelque part au milieu se trouvent ceux qui n’aiment pas les changements, mais qui ne s’en soucient pas assez pour quitter le navire. Mais qu’en est-il de la répartition des réfugiés, qui ne peuvent pas rester sur la répartition choisie en raison de leurs préférences ou de leurs principes?

Malheureusement, ce n’est pas aussi simple que d’installer le système d’initialisation de votre choix. Tout le monde n’a pas la capacité technique de le faire, sans oublier les difficultés qui surviennent lorsque des applications ou des environnements de bureau, tels que GNOME, avoir des dépendances sur systemd.

Qu’en est-il du passage à une autre distribution? Certains, comme Devuan, apparaissait comme des fourches non-systemd de distributions (dans ce cas, Debian) qui avaient adopté systemd. L’utilisation de Devuan devrait être similaire à la distribution parente, mais ce n’est pas le cas pour tous les forks non-systemd. Par exemple, si vous quittez Fedora et passez à AntiX, Gentoo, ou Slackware, vous allez vivre une expérience très différente.

Ça ne va nulle part

J’aime une partie de ce que fait systemd (mécanismes de contrôle simples et standardisés pour les processus). Je ne comprends pas la raison d’être de ce qu’il fait (journaux binaires). Je n’aime pas non plus ce qu’il fait (réorganiser les dossiers de départ – qui a demandé cela?).

Des distributions comme Debian font la chose intelligente et étudient des alternatives pour garder ses options ouvertes. Cependant, systemd est là pour le long terme.

Si vous administrez des machines Linux pour d’autres, apprenez systemd ainsi que System V init. De cette façon, peu importe ce que vous rencontrez, vous serez en mesure d’accomplir vos tâches.

Utilisez simplement Linux à la maison? Si tel est le cas, choisissez une distribution qui à la fois répond à vos besoins techniques et complète votre idéologie Linux.