• [^] # Re: Du point de vue utilisateur ou mainteneur ?

    Posté par . En réponse au journal Ne dites pas à ma mère que j'ai installé systemd, elle croit que je suis pianiste dans un bordel.. Évalué à 10.

    Le but de l'init est d'initialiser tout le système

    Tout dépend de ce que tu appelles le système. Si tu parles de la partie userland, l'init peut effectivement mettre en place l'ensemble du userland, mais ce n'est en rien une obligation. Un certain nombre d'autres éléments peuvent s'en charger. L'init va lancer le premier processus qui a son tour peut lancer d'autres processus. Sur des terminaux type NCD l'inti va juste lancer un listener qui lui lancera le reste des applications en fonction des demandes.

    Par contre pour que l'init puisse se lancer il faut que le système non userland soit déjà dans un état très avancé.

    Pour faire tout ceci correctement l'init est proche du noyau car c'est ce dernier qui offre des abstractions pour gérer des processus

    Le kernel n'offre pas des abstractions pour gérer les processus, il fournit des interfaces userland. Généralement ces interfaces sont utilisées ensuite pour créer des abstractions (typiquement le pseudo file system /proc ). Mais l'init (traditionnel, systemd étant en train de changer la donne à ce niveau là) n'a aucun avantage au niveau de ses interfaces ou des pseudo-fs comparé à n'importe quel processus avec les droits root. D'ailleurs de nombreux logiciel de gestion des processus (de nice à psDoom) bypassent complètement l'init.

    De façon générale le noyau offre toute les fonctionnalités possibles et imaginables de l'OS. C'est le seul à pouvoir attribuer de la mémoire, du temps d'éxécution, un PID, des droits d'accès sur les devices ou les pseudo-devices, des changements de contexte etc.

    On pourrait dire que pour faire son travail correctement Postgresql est proche du noyau parceque c'est ce dernier qui offre la ram et les accès disque dont il a beson pour faire son travail correctement. Ou encore que ping est proche du noyeau parceque c'est lui qui offre les accès réseau et les abstractions ICMP dont il a besoin.

    L'init est juste un processus comme les autres, lancé en premier et avec les droits root. Il n'est pas plus "proche" du noyeau que n'importe quel autre processus. Le fait que systemd commence par fermer la porte à double tour pour s'assurer que l'on ne puisse pas lui piquer le contrôle des cgroups ne change rien à celà. C'est exactement comme si un init traditionnel bloquait le port 80 en se mettant dessus.