¿Cómo interactúa X11 con el kernel/realiza el inicio de sesión?

¿Cómo interactúa X11 con el kernel/realiza el inicio de sesión?

Según tengo entendido, para la interacción basada en texto con el kernel de Linux, initse inicia un programa llamado getty(o agetty) que se conecta a uno de los dispositivos TTY /devy solicita un nombre de usuario. Después de esto, se ejecuta un programa llamado loginque solicita la contraseña del usuario y, si es correcta, inicia el shell preferido del usuario (por ejemplo, basho csh). En este punto, bash interactúa con el kernel a través del dispositivo TTY.

¿Cómo funciona este proceso de inicio de sesión para X11? ¿X11 interactúa con el kernel a través de un TTY?

Respuesta1

El shell utiliza un dispositivo TTY (si está conectado a uno) para obtener entradas del usuario y producir resultados, y no mucho más. El hecho de que un shell esté conectado a un TTY está determinado por getty(y preservado por login); la mayoría de las veces al shell no le importa si está conectado a un TTY o no. Su interacción con el núcleo ocurre.a través dellamadas al sistema.

Un servidor X11 no conoce los inicios de sesión (como un shell). El proceso de inicio de sesión en X11 funciona de dos maneras:

  • o el usuario inicia sesión en el terminal y luego inicia X (normalmente usando startx);
  • o se inicia un servidor X con un “administrador de pantalla” que solicita al usuario un nombre de usuario y una contraseña (o cualquier información de autenticación que se requiera).

La forma en que los servidores X11 obtienen entradas y producen salidas es muy diferente en comparación con un shell. En el lado de la entrada, X conoce dispositivos que los shells no conocen, comenzando con los ratones; normalmente los gestiona directamente con sus propios controladores. Incluso para los teclados, X tiene sus propios controladores que complementan el manejo del kernel (según tengo entendido, en Linux, por ejemplo, X usa el controlador TTY para leer la entrada sin formato del teclado, pero luego lo interpreta usando su propio controlador). En el lado de salida, las unidades X muestran los dispositivos directamente, con o sin la ayuda del kernel, y sin pasar por un dispositivo TTY.

Servidores X11 en muchos sistemashacerSin embargo, use dispositivos TTY para sincronizar con el kernel: en sistemas que admiten terminales virtuales, X necesita "reservar" el VT en el que se está ejecutando y manejar la conmutación de VT. Hay algunas otras sutilezas en el camino; por lo tanto, en Linux, X modifica el TTY para desactivar GPM (un programa que permite el uso de ratones en modo texto). X también puede compartir un VT...

En algunas estaciones de trabajo en el pasado, no había mucha sincronización explícita con el kernel; Si no ejecutó xconsole, podría terminar con mensajes del kernel mostrados en “modo texto” en la parte superior de la pantalla de su X11.

Respuesta2

El kernel no tiene absolutamente ningún concepto de inicio de sesión o de quién ha iniciado sesión; lo único que le importa es que haya procesos ejecutándose bajo una determinada ID de usuario (¡quién es tampoco es asunto del kernel!). Un programa de inicio de sesión, ya sea getty en una terminal o en un administrador de pantalla X11, se ejecuta como root y luego usa setuid() y llamadas relacionadas para configurar un entorno para cualquier UID que sugiera el solucionador local (cosas de NSS y libc, tampoco negocios del kernel) para usar para el usuario que acaba de autenticarse.

información relacionada