Por que o chaveamento do VT não funciona para o Xorg executado como root?

0

Versão do software afetado:

$ rpm -q --whatprovides /usr/bin/Xorg
xorg-x11-server-Xorg-1.19.6-8.fc28.x86_64

(Em outras palavras, isso está em uma instalação atualmente atualizada do Fedora 28 Workstation).

Etapas para reproduzir:

  1. Use ctrl + alt + f5 para alternar para o texto vt 5 e efetuar login
  2. sudo -i
  3. Xorg :10
  4. Use ctrl + alt + f6 para alternar para o texto vt 6
  5. Use ctrl + alt + f5 para voltar a vt 5

Resultados esperados: vejo a sessão X gráfica (uma tela completamente preta sem o cursor do mouse:).

Resultados reais: vejo um console de texto com algumas mensagens de log do Xorg. O processo do Xorg ainda está em execução.

Informações adicionais:

A última linha mostrada na tela é

(II) AIGLX: Suspending AIGLX clients for VT switch

Além disso, o /var/log/Xorg.10.log mostra que o Xorg não está usando systemd-logind.

(II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
    
por sourcejedi 09.06.2018 / 13:06

1 resposta

2

Você está se lembrando de como o Xorg funcionava :). Lembre-se que o X costumava iniciar no VT7 e acima, porque o VT1 até o VT6 era reservado para consoles de texto.

Com o systemd e o logind, por padrão, os VTs são configurados sob demanda. Se você nunca mudou para o VT2, então getty e login não serão iniciados no VT2. Em vez disso, o VT2 permanece disponível ... e pode ser reivindicado por um programa como o Xorg, que usa o primeiro VT livre.

Outra maneira de ver que sua sessão do Xorg está realmente no VT2 é que ps -ax mostrará que tem tty2 como seu terminal de controle.

No sistema antigo, se você se conectou a um texto VT e iniciou o Xorg, ele nunca iria reutilizar seu texto atual VT. Fiquei confuso porque startx reutiliza seu texto VT em um sistema moderno - mas isso se deve ao uso do logind. Com o logind, o X é capaz de iniciar como um processo não privilegiado ... e não tem o privilégio de mudar para um VT diferente. A opção -keeptty mencionada na mensagem de log foi adicionada especificamente por esse motivo.

Sugiro não tentar executar Xorg -keeptty dentro de sudo -i . -keeptty não foi especificamente destinado a este caso. Ou pelo menos, não funciona corretamente no meu sistema, parece que o antigo e o novo código começam a brigar uns com os outros :) -

Eu recebo uma tela mostrando um cursor de texto (sublinhado) que não está piscando, e "ctrl + alt + f6" não muda para o texto vt6; Eu tenho que usar alt + sysrq + R primeiro. (Eu tenho ativado sysrq no meu sistema Fedora ). Mudando de volta para o original vt com "ctrl + alt + f5", em seguida, mostra a tela preta que eu esperava. O terminal de controle do processo X é tty5 , mas lsof -p mostra que também tem tty2 open. Mudar para o VT2 me joga de volta no VT5, com o Xorg registrando um erro

[ 40399.826] (II) AIGLX: Suspending AIGLX clients for VT switch
[ 40399.826] (II) AIGLX: Resuming AIGLX clients after VT switch
[ 40399.826] (EE) modeset(0): failed to set mode: Permission denied
[ 40399.826] (EE) 
Fatal server error:
[ 40399.827] (EE) EnterVT failed for screen 0
[ 40399.827] (EE) 
[ 40399.827] (EE) 
Please consult the Fedora Project support 
     at http://wiki.x.org
 for help. 
[ 40399.827] (EE) Please also check the log file at "/var/log/Xorg.10.log" for additional information.
[ 40399.827] (EE) 
[ 40399.828] (II) AIGLX: Suspending AIGLX clients for VT switch
[ 40400.029] (EE) Server terminated with error (1). Closing log file.
    
por 09.06.2018 / 13:06