Comment X11 interagit avec le noyau / effectue la connexion


14

Si je comprends bien pour l'interaction textuelle avec le noyau Linux, un programme appelé initdémarre getty(ou agetty) qui se connecte à l'un des appareils TTY sous /devet demande un nom d'utilisateur. Après cela, un programme appelé loginest exécuté qui demande le mot de passe de l'utilisateur et s'il est correct, puis lance le shell préféré de l'utilisateur (par exemple bashou csh). À ce stade, bash interagit avec le noyau via le périphérique TTY.

Comment fonctionne ce processus de connexion pour X11? X11 interagit-il avec le noyau via un ATS?

Réponses:


15

Le shell utilise un appareil TTY (s'il est connecté à un) pour obtenir une entrée utilisateur et produire une sortie, et pas grand-chose d'autre. Le fait qu'un shell soit connecté à un ATS est déterminé par getty(et conservé par login); la plupart du temps, le shell ne se soucie pas de savoir s'il est connecté à un ATS ou non. Son interaction avec le noyau se fait via des appels système.

Un serveur X11 ne connaît pas les connexions (comme un shell). Le processus de connexion dans X11 fonctionne de deux manières:

  • soit l'utilisateur se connecte sur le terminal, puis démarre X (généralement en utilisant startx);
  • ou un serveur X est démarré avec un «gestionnaire d'affichage» qui invite l'utilisateur à entrer un identifiant et un mot de passe (ou toute autre information d'authentification requise).

La façon dont les serveurs X11 obtiennent des entrées et produisent des sorties est très différente de celle d'un shell. Côté entrée, X connaît les périphériques qui ne le sont pas, à commencer par les souris; il gère généralement ceux-ci directement avec ses propres pilotes. Même pour les claviers, X a ses propres pilotes qui complètent la gestion du noyau (donc si je comprends bien, sous Linux par exemple, X utilise le pilote TTY pour lire les entrées brutes du clavier, mais interprète ensuite cela en utilisant son propre pilote). Côté sortie, X pilote directement les périphériques d'affichage, avec ou sans l'aide du noyau, et sans passer par un périphérique TTY.

Serveurs X11 sur de nombreux systèmes font les appareils utilisent l' ATS si, pour la synchronisation avec le noyau: sur les systèmes qui prennent en charge les terminaux virtuels, X doit « réserve » le VT , il fonctionne sur, et la commutation poignée de VT. Il y a quelques autres subtilités en cours de route; ainsi sous Linux, X peaufine le TTY pour désactiver GPM (un programme qui permet l'utilisation des souris en mode texte). X peut également partager un VT ...

Sur certains postes de travail dans le passé, il n'y avait pas beaucoup de synchronisation explicite avec le noyau; si vous ne couriez pas xconsole, vous pourriez vous retrouver avec des messages du noyau affichés en «mode texte» en haut de votre écran X11.


2

Le noyau n'a absolument aucune notion de connexion, ni de qui est connecté - tout ce qui compte c'est qu'il y ait des processus qui s'exécutent sous un certain ID utilisateur (qui n'est pas non plus l'affaire du noyau!). Un programme de connexion, que ce soit sur un terminal ou un gestionnaire d'affichage X11, s'exécute en tant que root, puis utilise setuid () et les appels associés pour configurer un environnement pour quel que soit l'UID que le résolveur local (NSS et libc - pas le noyau du business non plus) a suggéré à utiliser pour l'utilisateur qui vient de s'authentifier.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.