in

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

fatmawati achmad zaenuri / Shutterstock

systemd a 10 ans, mais les sentiments à son 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 majeures de Linux, l’opposition inconditionnelle 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 de l’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 que 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, activant d’autres matériels à l’intérieur de votre ordinateur et fournissant 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 des utilisateurs. 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 le f (liste plein format) et p Options (PID):

ps -fp 1

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 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

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

ps -f --ppid 1

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

Les alternatives

Plusieurs projets ont essayé 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, les uns après les autres. 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.

Voici quelques informations sur certains d’entre eux:

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

La manière systemd

systemd est sorti 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 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 sommes:

  • systemd-udevd: Gère les appareils physiques.
  • systemd-logind: Gère les connexions utilisateur.
  • résolu par systemd: 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.
  • usiné systemd: 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 fait trop. »

Les adversaires de systemd Soulignez le vaste 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, il 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. Tandis que systemd n’est 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.

Bien que ce ne soit peut-être pas monolithique, il est grand. 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 systemd branche principale du référentiel GitHub.

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. Par contre, systemd avait 1 349 969, soit près de 1,4 million. Avec notre métrique happy-go-lucky, systemd sort à environ 5 pour cent 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 a 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 avec «les 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 se soucier de 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 mélangé avec du 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 le système d’initialisation par défaut, mais aussi pour prendre en charge des alternatives.

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 ou non systemd avec une distribution Linux particulière. Au contraire, les distributions choisissent elles-mêmes si elles veulent ou non 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’opposer à 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, il y a 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 non-systemd fourchettes 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 non-systemd fourches. 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 un peu de quoi systemd fait (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 une partie de 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. Pourtant, systemd est là pour le long terme.

Si vous administrez des machines Linux pour d’autres, découvrez systemd ainsi que vous connaissez 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment forcer n’importe quelle application Android en mode immersif plein écran (sans enracinement)

Comment utiliser la navigation privée sur votre Oculus Go