systemd 208 : logind et Wayland

Posté par . Édité par Davy Defaud, Pierre Jarillon, Xavier Claude, Ontologia, palm123 et Nils Ratusznik. Modéré par tuiu pol. Licence CC by-sa
47
4
oct.
2013
Linux

Une nouvelle version de systemd vient de sortir. Lennart annonce que les nouveautés autour de Wayland en font une version majeure.

logind, le remplaçant en espace utilisateur de VT-switching permet de faire tourner Wayland et kmscon avec les privilèges de l’utilisateur. Lors de la bascule entre console virtuelle (exemple : du mode graphique Wayland au mode texte kmscon), les descripteurs de fichiers des entrées‐sorties sont bâillonnés pour les processus en arrière‐plan, afin que ceux‐ci ne puissent pas espionner la console virtuelle active (en enregistrant notamment les frappes au clavier). Cela reproduit l’isolation des VT. C’est d’ailleurs un des problèmes que rencontre Mir actuellement.

Dans les journaux, un champ _SYSTEMD_SLICE permet de filtrer par client final. On peut imaginer que cette nouveauté concerne Pantheon et ses 150 000 conteneurs gérés par systemd. Des optimisations ont été apportées sur la gestion de masse de sockets UNIX et des points de montages.

Enfin, un ajout appréciable : systemd-analyze exploite les informations de performance stockées dans la table ACPI. Cela permet de mesurer le temps de démarrage du BIOS et de l’amorceur.

La prochaine Fedora tirera‐t‐elle partie de cette version pour son aperçu technologique de Wayland ?

  • # Réinventer la roue, NIH ?

    Posté par (page perso) . Évalué à 6.

    logind, le remplaçant en espace utilisateur de VT-switching permet de faire tourner Wayland et kmscon avec les privilèges de l'utilisateur. Lors de la bascule entre console virtuelle (exemple : du mode graphique Wayland au mode texte kmscon), les descripteurs de fichiers des entrées-sorties sont bâillonnés pour les processus en arrière plan afin que ceux-ci ne puisse pas espionner la console virtuelle active (en enregistrant notamment les frappes au clavier). Cela reproduit l'isolation des VT. C'est d'ailleurs un des problèmes que rencontre Mir actuellement.

    Et quel était le problème avec les VT exactement ?

    • [^] # Re: Réinventer la roue, NIH ?

      Posté par . Évalué à -1.

      Ça se voit que c'est vendredi !

      "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

    • [^] # Re: Réinventer la roue, NIH ?

      Posté par . Évalué à 10.

      • [^] # Re: Réinventer la roue, NIH ?

        Posté par (page perso) . Évalué à 10.

        kmscon a l'air vraiment super cool!

        internationalized font rendering,

        J'ai toujours des problèmes avec ça: caractères mal affichés (alors que si je fais setfont ma_police ça remet tout bien), mes caractères qui sont remplacés n'importe comment par des symboles après avoir essayer de regarder un fichier binaire par exemple (à cause de symboles inconnus?), des caractères non-reconnus par une police sont affichés par un rectangle blanc (oui espace insécable, c'est de toi que je parle).

        XKB-compatible keyboard handling

        Ça aussi ça a l'air génial, pas besoin de se taper deux fichiers de conf pour une disposition!

        Écrit en Bépo selon l’orthographe de 1990

        • [^] # Re: Réinventer la roue, NIH ?

          Posté par . Évalué à 1.

          XKB-compatible keyboard handling
          

          Ça aussi ça a l'air génial, pas besoin de se taper deux fichiers de conf pour une disposition!

          Vu comme j’ai eu du mal à pondre ma dispo perso - je suis allé un peu plus loin qu’une association touche-caractères, j’ai par exemple plusieurs couches de symboles - je suis partagé entre le fait que je n’aurais pas tout à réécrire, et le fait que ça à été vraiment compliqué et qu’il auraient pu faire quelque-chose de mieux.

          bépo powered

          • [^] # Re: Réinventer la roue, NIH ?

            Posté par (page perso) . Évalué à 2.

            Tiens, en regardant sur une ISO Ubuntu avant-hier j’ai cru comprendre qu’Ubuntu faisait ce genre de chose déjà, mais j’ai rien compris et je me suis tapé l’azerty sur mon clavier marqué Bépo (quel amusement… vraiment).

            Écrit en Bépo selon l’orthographe de 1990

    • [^] # Re: Réinventer la roue, NIH ?

      Posté par . Évalué à 9.

      Bonne question. J'ai peut-être mal formulé dans la dépêche.

      Le premier problème est la gestion du multi-poste (multi-seat). Les VT ne sont disponibles que sur le poste principal. De plus, un VT est insuffisant pour isoler les périphériques d'un poste, par exemple lorsqu'un utilisateur branche une clef USB, dans quelle sessions le périphérique vas-t-il apparaître ? Comment couper le son d'une session inactive ?

      logind se débrouille avec ou sans VT car les VT ne sont pas forcément là. Et les dév noyaux sont plutôt enclins a laisser ça à l'espace utilisateur qu'à continuer à le maintenir. L'objectif actuellement est plutôt de mieux gérer les privilèges sur les cartes graphiques (KMS entre autre) pour permettre de faire tourner X11 avec moins de privilèges ou Wayland.

      http://dvdhrm.wordpress.com/2013/08/24/session-management-on-linux/

      Par exemple ConsoleKit permet à pulseaudio de couper le son lorsque tu change de VT. logind est le remplacement de ConsoleKit.

      Tu peux voir les fonctionnalités de logind dans la doc http://www.freedesktop.org/software/systemd/man/systemd-logind.service.html .

      • [^] # Re: Réinventer la roue, NIH ?

        Posté par . Évalué à 9.

        un VT est insuffisant pour isoler les périphériques d'un poste, par exemple lorsqu'un utilisateur branche une clef USB, dans quelle sessions le périphérique vas-t-il apparaître ?

        Ce problème est insoluble. (Si j'ai bien compris, bien entendu.) Comment un système pourra-t'il jamais déterminer l'être humain (par extension: la session) à qui appartient un périphérique mobile qui vient d'être branché?

        Voir un disque USB, par exemple, comme n'importe quel autre périphérique non mobile sur l'ordinateur est sans doute le meilleur moyen de ne pas s'arracher les cheveux. Et dans ce cas, je ne suis pas certain de comprendre en quoi isoler un périphérique est important pour un VT (si on fait exception d'un périphérique activé de manière logicielle à travers une session existante, bien entendu).

        Sed errare humanum est et je ne fais sûrement pas exception. Donc si quelqu'un peut éclairer ma lanterne… (Je sais que c'est vendredi mais non, je suis de bonne foi :D. )

        • [^] # Re: Réinventer la roue, NIH ?

          Posté par . Évalué à 7.

          Déjà, il faut abandonné le concept de VT qui n'est pas multi-poste.

          On peut assigner à un poste un contrôleur USB (ex, le controlleur USB intégré dans le moniteur). C'est déjà nécessaire pour associer un clavier USB à une session. Dans ce cas précis, on manipule /dev/input, mais le concept de poste dépasse le VT.

          En fait, on va plutôt implémenter des VT au dessus du poste plutôt que d'utiliser les VT pour implémenter isoler les postes. Mais ce sera alors des VT en espace utilisateur, car le noyau n'a pas de notion de poste.

          • [^] # Re: Réinventer la roue, NIH ?

            Posté par . Évalué à 4.

            Déjà, il faut abandonné le concept de VT qui n'est pas multi-poste.

            Je n'ai malheureusement pas les compétences techniques pour comprendre cette phrase :( . J'ai vu dans Linux Magazine un article qui parle du VT, je devrai sans doute le lire à fond avant…

            On peut assigner à un poste un contrôleur USB (ex, le controlleur USB intégré dans le moniteur). C'est déjà nécessaire pour associer un clavier USB à une session.

            Ça, je pense avoir compris.

            En fait, on va plutôt implémenter des VT au dessus du poste plutôt que d'utiliser les VT pour implémenter isoler les postes. Mais ce sera alors des VT en espace utilisateur, car le noyau n'a pas de notion de poste.

            Heu… (Je comprends les gens qui me regardent, l'air hagard, quand je pars en vrille dans une explication trop technique pour eux. Je pense avoir cette tête-là, à l'instant.) N'y vois pas d'attaque personnelle, je n'ai tout simplement rien compris.

          • [^] # Re: Réinventer la roue, NIH ?

            Posté par . Évalué à -3.

            Déjà, il faut abandonné le concept de VT qui n'est pas multi-poste.
            *abandonner

        • [^] # Re: Réinventer la roue, NIH ?

          Posté par . Évalué à 10.

          Ce problème est insoluble. (Si j'ai bien compris, bien entendu.) Comment un système pourra-t'il jamais déterminer l'être humain (par extension: la session) à qui appartient un périphérique mobile qui vient d'être branché?

          Ce n'est pas insoluble, et c'est même assez facile :
          J'utilise le multi-seat chez moi au quotidien : un siège pour moi et un siège pour ma compagne.
          Typiquement, j'ai dit à logind "cette carte graphique et ce port USB appartiennent au siège 2".
          A partir de là, tout ce qui est branché sur ce port est lié au siège 2 : j'y ai donc mis un hub USB, sur lequel j'ai simplement branché le clavier, la souris, une carte son USB.
          Le siège est donc immédiatement opérationnel! (3 commandes à taper!)
          Ensuite, quand elle branche une clef USB sur l'un des ports libres du hub, elle est directement liée à sa session : elle apparait donc seulement dans son navigateur de fichier, et pas dans le mien. Même chose en console : je ne peux pas explorer la clef si elle a été branchée sur "son siège" (bon, sauf que j'ai le compte root :-) )

          Je ne croyais pas vraiment à une telle simplicité au départ, mais c'est quand même vachement bien fait!
          J'imagine qu'une telle solution pour un cybercafé offre un potentiel énorme d'économies au niveau du matériel! (disque/RAM/proc mutualisés, maintenance simplifiée, etc…)
          Seule contrainte à l'heure actuelle, mais j'ai vu que c'était analysé : il faut obligatoirement 2 cartes graphiques séparées, on ne peut pas utiliser 2 sorties d'une même carte graphique. D'un point de vue driver, ça se comprends…

          Je vous invite donc à essayer chez vous! De mon coté ça m'a fait économiser un PC complet… :-)

          • [^] # Re: Réinventer la roue, NIH ?

            Posté par . Évalué à 7.

            Seule contrainte à l'heure actuelle, mais j'ai vu que c'était analysé : il faut obligatoirement 2 cartes graphiques séparées, on ne peut pas utiliser 2 sorties d'une même carte graphique. D'un point de vue driver, ça se comprends…

            Le fait tu avec Wayland ? Si oui ça m'intéresse fortement et je ne te contredirais pas sur le point que tu as cité.

            Par contre si tu fonctionne avec Xorg il est tout a fait possible de faire du multiposte avec une seule carte graphique. J'en ai fait un tuto ici. Si tu peux le compléter de tes compétences (isolation des prises USB) ça serait parfait ;-)

            • [^] # Re: Réinventer la roue, NIH ?

              Posté par . Évalué à 2.

              Le fait tu avec Wayland ? Si oui ça m'intéresse fortement et je ne te contredirais pas sur le point que tu as cité.

              Non désolé… J'attends qu'il soit "pleinement supporté" pour l'essayer : le désavantage du multi poste, c'est que tu ne peux plus t'amuser à faire n'importe quoi, car tu n'es plus seul sur la machine!

              Par contre si tu fonctionne avec Xorg il est tout a fait possible de faire du multiposte avec une seule carte graphique. J'en ai fait un tuto ici. Si tu peux le compléter de tes compétences (isolation des prises USB) ça serait parfait ;-)

              Je n'ai pas lu dans le détail (comprendre : je me suis arrêté après le sommaire), mais ce que je vois est autrement plus compliqué que la solution "logind" en 3 lignes de commandes. De là à comparer et à dire "il est tout a fait possible de faire du multiposte avec une seule carte graphique", je pense que le temps à investir n'est clairement pas le même! (et vaut-il la carte économisée? :-) )
              Le problème de la solution "à la main", c'est que justement le travail supplémentaire pour gérer les ports USB est loin d'être négligeable… J'imagine que c'est faisable avec des règles udev, puisqu'il me semble qu'indirectement c'est ce que fait logind.

              Goulou

          • [^] # Re: Réinventer la roue, NIH ?

            Posté par . Évalué à 2.

            J'utilise le multi-seat chez moi au quotidien : un siège pour moi et un siège pour ma compagne.
            Typiquement, j'ai dit à logind "cette carte graphique et ce port USB appartiennent au siège 2".
            A partir de là, tout ce qui est branché sur ce port est lié au siège 2 : j'y ai donc mis un hub USB, sur lequel j'ai simplement branché le clavier, la souris, une carte son USB.

            Merci pour l'info. C'est assez subtil mais cette solution pose la question à l'envers: comment une personne fait-elle pour s'assurer que sa clé soit visible dans sa session. Rien n'empêche un quidam de brancher sa clé (par exemple à des fins malicieuses) sur un quelconque port. Voire encore sur un port USB du fond du PC.

            Mais c'est vrai (je l'avais oublié) le multi-seat apporte une solution élégante au groupement des ressources amovibles. Toutefois la question de l'appartenance n'est pas faisable, comme je le disais. Le multi-seat est un contournement: il ne permet pas au système de savoir à quelle personne un périphérique amovible (anonyme donc) appartient; c'est à l'utilisateur de brancher son périphérique correctement pour que ce qui lui appartient soit vu par lui exclusivement. C'est du semi-automatique, je dirais.

            • [^] # Re: Réinventer la roue, NIH ?

              Posté par (page perso) . Évalué à 1.

              udev (et donc systemd) permet d'avoir des règles spécifiques selon le périphérique (UUID). Je ne sais pas si la fonctionnalité est implémentée mais il ne devrait pas être trop difficile d'avoir un règle du type :
              clé usb UUID "machin" => utilisateur toto.

              D'ailleurs c'est peut-être ce qui est fait par goulou mais avec une règle sur le port USB plutôt que sur le périphérique.

              Matthieu Gautier|irc:starmad

              • [^] # Re: Réinventer la roue, NIH ?

                Posté par . Évalué à 4.

                … ce qui signifie que le périphérique doit préalablement être connu.

                • [^] # Re: Réinventer la roue, NIH ?

                  Posté par (page perso) . Évalué à 5.

                  C'est l'intérêt du hub, tu dis que tout ce qui est branché sur ce hub là appartient à tel session et comme une session est liée à un utilisateur, tu peux le rendre visible pour cette utilisateur.

                  « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

                • [^] # Re: Réinventer la roue, NIH ?

                  Posté par (page perso) . Évalué à 4. Dernière modification le 04/10/13 à 17:30.

                  Tu peux aussi filtrer sur le label de la partition, le constructeur/modèle de la clé, …

                  Après, si tu veux connaitre l'appartenance de n'importe quel périphérique inconnu, sans caractéristique particulière et branché sur n'importe quel port … il reste la caméra pour détecter qui branche le périphérique. (je te laisse le coder, ça devrait être facile :) )

                  Matthieu Gautier|irc:starmad

            • [^] # Re: Réinventer la roue, NIH ?

              Posté par . Évalué à 3.

              Merci pour l'info. C'est assez subtil mais cette solution pose la question à l'envers: comment une personne fait-elle pour s'assurer que sa clé soit visible dans sa session. Rien n'empêche un quidam de brancher sa clé (par exemple à des fins malicieuses) sur un quelconque port. Voire encore sur un port USB du fond du PC.

              Dans ma configuration, qui est je suppose la configuration par défaut, tu associes un ou des ports à chaque siège supplémentaire. Du coup, le port au fond du PC est nécessairement associé au siège "0", et la clef apparaitra sur ledit siège.
              Quand à déterminer, comme dit plus loin, à qui appartient cette clef USB tout juste sortie de son emballage et achetée chez le marchand du coin… En poussant à l’extrême ni ma compagne, ni moi ne le savons encore : comment donc le PC pourra-t-il décider? Si on la branche sur son port, ce sera à elle, sinon ce sera à moi :-)

        • [^] # Re: Réinventer la roue, NIH ?

          Posté par . Évalué à 3. Dernière modification le 04/10/13 à 21:16.

          Ce problème est insoluble. Comment un système pourra-t'il jamais déterminer l'être humain (par extension: la session) à qui appartient un périphérique mobile qui vient d'être branché?

          +1,
          Quant on ne peut compter que sur l'humain, alors comptons les humains.

          Un poste sur lequel un seul utilisateur est déclaré est différent d'un poste multi-utilisateur. Effectivement, il semble bien que ce problème soit insoluble de manière globale, donc peut être qu'il est attaquable sous cet autre angle, celle de la délégation à l'usage, et sans blesser l'objectif de système universel. Pour logind, il ne s'agirait que d'une possibilité de plus : un ou plusieurs utilisateurs déclarés (voir actifs, locaux/distants : mieux, plus fin), et ça reste simple.

          Non ?

          • [^] # Re: Réinventer la roue, NIH ?

            Posté par . Évalué à 0.

            C'est pas non plus une raison pour baisser les bras et ne pas apporter de solution pour faciliter le contrôle par les humains.

          • [^] # Re: Réinventer la roue, NIH ?

            Posté par . Évalué à -9.

            sans blesser l'objectif de système universel

            Objectif qui bien sur ne sera jamas atteint et au nom duquel on se permet de casser ce qui fonctionne simplement pour le remplacer par des usines à gaz qui en font moins fonctionnellement que l'existant.

            • [^] # Re: Réinventer la roue, NIH ?

              Posté par . Évalué à 10. Dernière modification le 05/10/13 à 19:36.

              LUL WAT ?!

              systemd fonctionne bien mieux que SysV (en partie grâce aux cgroups) :

              • systemd ne démarre que ce dont l'utilisateur a besoin (là où SysV était basé sur le pari que le matériel ne change jamais après le boot. :p Et puis cet idiot démarrait tous les services qu'on lui avait configuré à l'avance. C'est bien, mais c'est peut-être pas la peine de démarrer CUPS alors qu'il n'y a pas d'imprimante…)

              • on peut enfin tuer un service de manière fiable (vivent les cgroups !)

              • fini les scripts init nauséabonds et compliqués

              • on standardise les unit files, plutôt que d'avoir chaque distrib avec ses scripts d'inits propre pour le même service

              • systemd offre tout une boîte à outils bien utile (systemd-analyze, …)

              • on peut enfin lancer un service que lorsqu'un évènement arrive (exemple : pas la peine de lancer Apache tant qu'il n'y a pas de connexion réseau)

              • moins de processus pour démarrer un service (vu qu'on utilise pas de scripting, chose qui n'était pas fait pour ça)

              • démarrage parralèlisé et plus rapide

              • gestion des dépendances entre services plus simple

              • le bordel d'avoir des dizaines de répértoires /etc/rc.d ou /etc/init.d est fini ! \o/

              • le bordel des runlevels obscurs (dont la définition exacte de chaque peut être différent entre les distribs) est enfin fini est fini (on utilise des targets à la place).

              "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

            • [^] # Re: Réinventer la roue, NIH ?

              Posté par (page perso) . Évalué à 6.

              qui en font moins fonctionnellement que l'existant.

              lol
              Je sais pas quoi dire d'autre devant une telle résistance au changement qui revient à chaque journal alors qu'on lui a rien demandé (et surtout en disant des choses bien fausse : ce n'est pas pour rien que systemd plait, c'est justement qu'il permet tellement plus fonctionnellement…)

              J'avoue que je m'attendais à ce que les phrases de ce type arrive plus tôt, tu as été un peu lent cette fois.

              • [^] # Re: Réinventer la roue, NIH ?

                Posté par . Évalué à -2.

                J'avoue que je m'attendais à ce que les phrases de ce type arrive plus tôt, tu as été un peu lent cette fois.

                Comme je l'ai dit par ailleurs, je n'étais pas très bien Vendredi … Sinon ce n'est pas tant à Systemd qu'à Wayland que je pensais. Et je reste convaincu que l'outil universel n'existe pas, et que le libre va se casser les dents dessus (comme les autres d'ailleurs, sauf que des boites comme Microsoft par exemple peuvent se permettre un gros bide de temps en temps).

                • [^] # Re: Réinventer la roue, NIH ?

                  Posté par . Évalué à 7. Dernière modification le 06/10/13 à 15:20.

                  Ni Wayland, ni systemd, n'ont vocation à faire partie d'un quelconque système universel.

                  systemd : l'init moderne grâce à linux (cgroups, …).
                  wayland : le protocole moderne pour l'affichage local.

                  "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

      • [^] # Re: Réinventer la roue, NIH ?

        Posté par . Évalué à 4.

        Le premier problème est la gestion du multi-poste (multi-seat)

        Tout comme la redirection des flux par le réseau avec Pulseaudio, le multi-seat est un usage marginal largement supplanté par les clients légers…

        (C'est Vendredi)

        On dirait que chez redhat on est très à l'écoute des minorités…

        • [^] # Re: Réinventer la roue, NIH ?

          Posté par . Évalué à 9.

          (C'est Vendredi)

          Justement, je suis très déçu : je reviens exprès 15h après la sortie de la news, qui parle de systemd est est postée un vendredi matin… Et il n'y a que 18 commentaires!!
          (et en plus il y en a des constructifs…)

          Tout va à vélo décidément…

        • [^] # Re: Réinventer la roue, NIH ?

          Posté par (page perso) . Évalué à 4.

          L'usage est marginal parce que ce n'est pas facilement faisable ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.