Eles são dispositivos terminais virtuais do kernel , multiplexados nos dispositivos de framebuffer físico e de entrada humana por um programa emulador de terminal que é embutido no próprio kernel. Para programas aplicativos rodando sobre o kernel, eles se parecem com qualquer outro dispositivo terminal, como um dispositivo terminal serial . (Eles têm uma disciplina de linha, mas nenhum controle de modem).
O sistema implementa login de terminal por meio da execução de um programa getty
(ou equivalente) e um programa login
que aceita credenciais de usuário e invoca sessões de login .
O programa Servidor X também precisa usar o framebuffer físico e os dispositivos de entrada humana. Ele precisa negociar o compartilhamento com o emulador de terminal do kernel. Ele faz isso alocando um terminal virtual e dizendo ao kernel para desconectar isso do emulador de terminal do kernel.
Por isso, parece que o servidor X "roda" em um determinado terminal. Quando o emulador de terminal do kernel vê o acorde da tecla de atalho para alternar para o terminal virtual alocado, ele cede o controle do framebuffer e dos dispositivos de entrada humana para o servidor X. Quando o servidor X vê o acorde da tecla de atalho para mudar para outro terminal virtual, o servidor X cede o controle.
Estes acordes de teclas de atalho não são necessariamente simétricos. Em um dos meus sistemas, o atalho de atalho implementado pelo programa de emulação de terminal do kernel para mudar para o terminal virtual # 2 é Alt + F2 enquanto o atalho de atalho implementado pelo servidor X para a mesma ação é Ctrl + Alt + F2 .
Quando se trata de login gráfico , um gerenciador de exibição manipula a inicialização de servidores X com programas greeter . Você está apenas começando um servidor X diretamente e não está usando um gerenciador de exibição, é claro. Depois que as credenciais do usuário forem autenticadas, um gerenciador de desktop exibe um ambiente de área de trabalho , que compreende um conjunto de aplicativos X client de vários graus de complexidade . Para ambientes de desktop complexos, há um monte de programas de servidor interconectados através de um barramento de desktop . (Em um dos meus sistemas, o chamado "pequeno e leve" Editor do GNOME requer um corretor D-BUS e nove outros programas de servidor em execução.)
Alguns desses programas cliente X podem ser outros emuladores de terminal, como o LXTerminal, Unicode RXVT, Terminal GNOME, Terminate, roxterm, evilvte, xterm e assim por diante. Eles não usam diretamente dispositivos framebuffer e de entrada humana, e utilizam dispositivos pseudo-terminais .