Agence web » Actualités du digital » Pourquoi le système de Linux est toujours source de divisions après toutes ces années

Pourquoi le système de Linux est toujours source de divisions après toutes ces années

systemd a 10 ans, mais les sentiments à ce sujet dans la communauté Linux ne se sont pas atténués – 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 utilisé par votre ordinateur) soit l'enregistrement de démarrage principal (MBR) s'exécute, soit l'interface UEFI (Unified Extensible Firmware Interface). La dernière action des deux est de lancer le noyau Linux.

Le noyau est chargé en mémoire, se décompresse et s'initialise. Un système de fichiers temporaire est créé dans la 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 systemd, le défaut par défaut pour le processus d'initialisation était une refonte de l'initialisation d'Unix System V. Il y avait d'autres choix disponibles, mais System V init était l'option standard dans la plupart des distributions dérivées de BSD (Berkeley Software Distribution). Parce qu'il est venu directement de System V Unix – l'ancêtre spirituel de Linux – beaucoup de gens le considèrent comme «la manière officielle» de faire l'init.

Le processus d'initialisation démarre tous les démons et services requis pour faire fonctionner le système d'exploitation de manière interactive et significative. Ces démons gèrent des choses comme la pile de mise en 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 les informations sur les événements de journal, surveillent les changements matériels lorsque vous insérez ou supprimez des périphériques et gèrent les connexions des utilisateurs. Sans surprise, le système init comprend également des fonctionnalités pour gérer les services.

On peut utiliser ps pour voir le processus qui a PID 1. Nous allons utiliser le f (liste complète) 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 tenté de produire une alternative au système V initial traditionnel. L'un des principaux problèmes est que, avec System V init, tous les processus sont démarré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 des processus simultanément et de manière asynchrone.

Voici quelques informations sur certains d'entre eux:

  • Parvenu: Développé par Canonical, il a été utilisé dans Ubuntu 9.10, Red Hat, Red Hat Enterprise Linux (RHEL) 6, CentOS 6 et Fedora 9.
  • Exécuter: Fonctionne sur FreeBSD et d'autres dérivés BSD, macOS et Solaris, ainsi que sur les systèmes Linux. C'est également le système d'initialisation par défaut sur Void Linux.
  • s6-linux-init: Ce remplacement de System V init a été conçu pour suivre de près la philosophie Unix, qui est souvent réduite à la morsure du son "faire une chose et bien le faire".

Il existe de nombreuses autres fonctionnalités et conceptions différentes. Cependant, aucun d'entre eux n'a créé la fureur systemd fait.

The Systemd Way

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 init. Il s’agit plutôt d’une suite d’environ 70 fichiers binaires qui gèrent l’initialisation du système, les démons et les services, la journalisation et la journalisation, ainsi que 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 des utilisateurs.
  • résolu par systemd: Fournit une résolution de noms 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é par le système: 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, offrant 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 init, qui, selon ses adversaires, est la définition même du fluage de la portée.

"C'est trop grand. Ça fait trop. »

Les opposants à systemd souligner le large 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 avaient besoin d'un rafraîchissement ou d'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é appelé un point de défaillance unique pour trop de fonctions critiques, mais cela ne semble pas être justifiable. Certes, il jette la 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 comprend de nombreux fichiers binaires plutôt qu'un seul énorme), il inclut de nombreux outils de gestion et commandes disparates sous un même parapluie.

Bien qu'il ne soit 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 avait près de 28 millions de lignes de texte (27 784 340, pour être exact). Par contre, systemd comptait 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 à 1 721 lignes.

Poettering n'a manifestement aucun respect pour l'Institute of Electrical and Electronics Engineers (IEEE) Computer Society, ni pour la norme POSIX (Portable Operating System Interface). 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 gouverné 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 autrefois le PDG de Red Hat, a déclaré:

«Red Hat a considéré 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 voyons. aujourd'hui et à l'avenir. "

Whitehurst a également déclaré qu'ils voyaient également des avantages dans les systèmes embarqués. Red Hat établit un partenariat avec «les plus grands fournisseurs intégrés au monde, en particulier dans les secteurs des télécommunications et de l'automobile, où la stabilité et la fiabilité sont la préoccupation numéro un.»

Ces raisons semblent techniquement solides. 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 est-ce que tout le monde devrait faire de même?

Boire le Systemd Kool-Aid?

Certains opposants à 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 que le chef de la secte, Jim Jones, a contraint ses plus de 900 adeptes à se suicider en buvant un liquide aromatisé au raisin mêlé de cyanure, la phrase fait honte à tort à Kool-Aid. Le groupe a en fait bu Flavor Aid, mais Kool-Aid a été 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 les listes de diffusion Debian pendant longtemps. Cependant, en 2014, la communauté a voté pour l'adoption systemd comme 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 nombreuses retombées.

Les décisions prises par la communauté Debian ont une portée considérable. Ils sont également vivement débattus et ont voté sur la méthode de vote Condorcet. La communauté ne fait pas non plus ces choix à la légère.

Il a voté à nouveau en décembre 2019 pour 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 n'avez généralement pas le choix d'utiliser ou non systemd avec une distribution Linux particulière. Au contraire, les distributions elles-mêmes choisissent 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, Fedora, CentOS, Ubuntu, Arch, Solus et openSUSE et s'opposent à l'adoption de systemd, pourraient se sentir contraints d'utiliser leur distribution de choix. S'ils sont assez 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 bien sûr un spectre. À une extrémité, vous avez les gens qui ne comprennent pas les problèmes (ou même les soins), 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 des réfugiés de distribution, qui ne peuvent pas rester sur leur distribution choisie en raison de leurs préférences ou principes?

Malheureusement, ce n'est pas aussi simple que d'installer le système d'initialisation souhaité. Tout le monde n'a pas la capacité technique de le faire, peu importe les difficultés qui surviennent lorsque des applications ou des environnements de bureau, tels que GNOME, ont des dépendances sur systemd.

Et si vous passiez à une autre distribution? Certains, comme Devuan, semblaient nonsystemd fourches 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 lessystemd 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 certains de ce systemd (mécanismes de contrôle simples et standardisés des processus). Je ne comprends pas la raison d'être de certains de ses effets (journaux binaires). Je n'aime pas non plus ce qu'il fait (réorganiser les dossiers personnels – qui a demandé cela?).

Des distributions comme Debian font la chose intelligente et recherchent des alternatives pour garder ses options ouvertes. cependant, 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 pourrez accomplir vos tâches.

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

★★★★★