Testagem e Configuração do Xorg-7

Testando o Xorg

[Nota]

Nota

Antes de iniciar o Xorg pela primeira vez, é útil reconstruir o cache da biblioteca executando-se o ldconfig como o(a) usuário(a) root.

[Nota]

Nota

Antes de iniciar o Xorg pela primeira vez, muitas vezes é necessário reinicializar o sistema para garantir que todos os processos de segundo plano apropriados sejam iniciados e que os problemas de segurança apropriados estejam configurados adequadamente. Como alternativa, sair e logar-se novamente possivelmente funcione, mas ao tempo deste texto, não foi testado.

[Atenção]

Atenção

Se o "Xorg" travar por algum motivo (por exemplo, ausência de um controlador de entrada adequado), [então] o sistema poderá parar de responder a qualquer entrada gerada de usuário(a). Como precaução, você pode habilitar uma tecla mágica "SysRq" antes de testar o "Xorg". Como o(a) usuário(a) "root", emita:

echo 4 > /proc/sys/kernel/sysrq

Então, se o "Xorg" travar, é possível usar "Alt+SysRq+R" para reconfigurar o modo do teclado. Agora ele deveria ser capaz de usar "Ctrl+Alt+Fx" (substitua o "x" por um número de "VT") para comutar para outro "VT". Se funcionar, [então] logue-se e mate o "Xorg" usando a linha de comando no novo "VT".

Para testar a instalação do "Xorg", emita "startx". Esse comando traz um gerenciador de janelas rudimentar chamado "twm" com três janelas do "xterm" e uma janela do "xclock". A janela do "xterm" no canto superior esquerdo é um terminal de "login" e executar-se "exit" a partir desse terminal sairá da sessão do "Janelas X". A terceira janela do "xterm" possivelmente esteja obscurecida em teu sistema pelos outros dois "xterms".

[Nota]

Nota

Ao testar o "Xorg" com o gerenciador de janelas "twm", existirão vários avisos no arquivo de registro do "Xorg", "$HOME/.local/share/xorg/Xorg.0.log", a respeito de arquivos de fontes ausentes. Além disso, existirão vários avisos no terminal de modo texto (geralmente "tty1") a respeito de fontes ausentes. Esses avisos não afetam a funcionalidade, mas podem ser removidos, se desejado, instalando-se o "Fontes Legadas do Xorg".

[Nota]

Nota

Em sistemas com GPUs NVIDIA que estão usado o controlador de núcleo Nouveau, você pode encontrar congelamentos e travamentos ocasionais da GPU. Se esse problema ocorrer, rebaixe para a versão mais recente do núcleo Linux 6.1.

Geralmente, não existe configuração específica exigida para o "Xorg", mas a personalização é possível. Para detalhes, veja-se "“Configurando Dispositivos do Xorg”" abaixo.

Verificando a Instalação da Direct Rendering Infrastructure (DRI)

"DRI" é uma estrutura que permite que logiciário acesse "hardware" gráfico de maneira segura e eficiente. Ela é instalada no "X" por padrão (usando "Mesa") se você tiver uma placa de vídeo suportada.

Para verificar se os controladores da "DRI" estão instalados adequadamente, verifique o arquivo de registro "$HOME/.local/share/xorg/Xorg.0.log" (ou "/var/log/Xorg.0.log" se você tiver construído o "Xorg-Server-21.1.8" com o "bit" "suid") para declarações como:

(II) modeset(0): [DRI2] Setup complete
(II) modeset(0): [DRI2]   DRI driver: crocus
(II) modeset(0): [DRI2]   VDPAU driver: va_gl
[Nota]

Nota

A configuração da DRI possivelmente difira se você estiver usando controladores alternativos, como tradicionais controladores DDX ou os controladores proprietários oriundos da NVIDIA ou da AMD.

Outra maneira de determinar se a "DRI" está funcionando adequadamente é a de usar um dos dois aplicativos de demonstração "OpenGL" instalados opcionalmente no "Mesa-23.1.6". A partir de um terminal do "X", execute "glxinfo" e procure pela frase:

name of display: :0
display: :0  screen: 0
direct rendering: Yes

Se a Renderização Direta estiver habilitada, [então] você poderá adicionar detalhamento executando "LIBGL_DEBUG=verbose glxinfo". Isso mostrará os controladores, nós de dispositivos e arquivos usados pelo sistema da "DRI".

Para confirmar se a aceleração de "hardware" "DRI2" está funcionando, você pode (ainda no terminal do "X") executar o comando glxinfo | grep -E "(OpenGL vendor|OpenGL renderer|OpenGL version)". Se isso informar algo diferente de "Software Rasterizer", então você tem aceleração funcional para o(a) usuário(a) que executou o comando.

Se o teu "hardware" não tiver nenhum controlador "DRI2" disponível, [então] ele usará um "Software Rasterizer" para Renderização Direta. Nesses casos, você pode usar um novo "Software Rasterizador", acelerado por "LLVM", chamado "LLVMPipe". Para a finalidade de construir o "LLVMPipe", apenas certifique-se de que o "LLVM-16.0.5" esteja presente ao tempo da construção do "Mesa". Observe que toda a decodificação é feita na "CPU" e não na "GPU", de forma que a exibição ficará mais lenta que com aceleração de "hardware". Para verificar se você está usando o "LLVMpipe", revise a saída gerada do comando "glxinfo" acima. Um exemplo de saída gerada usando o "Software Rasterizer" é mostrado abaixo:

OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.5, 256 bits)
OpenGL version string: 3.0 Mesa 10.4.5

Você também consegue forçar o "LLVMPipe" exportando a variável de ambiente "LIBGL_ALWAYS_SOFTWARE=1" ao iniciar o "Xorg".

Novamente, se você tiver construído os demonstrativos "OpenGL" do "Mesa", [então] também poderá executar o aplicativo de teste "glxgears". Esse aplicativo abre uma janela com três engrenagens girando. O terminal do "X" exibirá quantos quadros foram desenhados a cada cinco segundos, de forma que isso dará uma avaliação comparativa aproximada. A janela é escalonável e os quadros desenhados por segundo são altamente dependentes do tamanho da janela. Em alguns "hardwares", o "glxgears" executará sincronizado com o sinal de atualização vertical e a taxa de quadros será aproximadamente a mesma que a taxa de atualização do monitor.

Depurando o Xorg

Ao iniciar o "Xorg", existem algumas maneiras de verificar quaisquer problemas que você possa ter. Se o sistema funcionar, [então] você poderá ver qual controlador está sendo usado executando o "xdriinfo". Se existirem problemas ou você quiser apenas verificar, {então} consulte Xorg.0.log.

O local do Xorg.0.log depende de como o Xorg está instalado. Se as instruções no livro forem seguidas à risca e o Xorg for iniciado a partir da linha de comando, ele estará localizado no diretório $HOME/.local/share/xorg/. Se o Xorg for iniciado por um gerenciador de telas (por exemplo, lightdm-1.32.0, sddm-0.20.0 ou GDM-44.1) ou se $XORG_PREFIX/bin/Xorg tiver o bit suid configurado, ele estará localizado no diretório /var/log/.

Problemas do Xorg.0.log

Ao olhar para o "Xorg.0.log", verifique entradas como ("EE") ou ("WW"). Abaixo estão algumas entradas comuns:

(WW) Open ACPI failed (/var/run/acpid.socket)

Esse aviso ocorre porque o "acpid-2.0.34" não está instalado. Se você não estiver em um "laptop", [então] ele pode ser seguramente ignorado. Em um "laptop", instale o "acpid-2.0.34" para habilitar ações como reconhecer quando a tampa está fechada.

(WW) VGA arbiter: cannot open kernel arbiter, no multi-card support

Esse aviso é exibido quando um(a) usuário(a) normal inicia o Xorg. A biblioteca libpciaccess.so emite esse aviso quando ela tenta abrir o /dev/vga_arbiter. Se existir não mais que uma placa gráfica PCI legada (não PCIe) no sistema, ele pode ser seguramente ignorado. Se realmente necessário, as permissões desse dispositivo podem ser mudadas adicionando-se uma regra do Udev e adicionando-se o(a) usuário(a) local ao grupo de vídeo. Como o(a) usuário(a) root:

cat > /etc/udev/rules.d/99-vga-arbiter.rules << EOF
# /etc/udev/rules.d/99-vga-arbiter.rules: Configura grupo/modo do "vga_arbiter"

ACTION=="add", KERNEL=="vga_arbiter", GROUP="video" MODE="0660"
EOF

usermod -a -G video <usuário(a) executando o Xorg>

Gráficos Híbridos

Os Gráficos Híbridos ainda estão em estado experimental para o Linux. Os(As) desenvolvedores(as) do "Xorg" desenvolveram uma tecnologia chamada "PRIME" que pode ser usada para comutar entre "GPU" discreta integrada e sem "mux" à vontade. A comutação automática não é possível no momento.

Para a finalidade de usar a "PRIME" para comutação de "GPU", certifique-se de que está usando o Núcleo Linux 3.4 ou posterior (recomendado). Você precisará dos controladores "DRI" e "DDX" mais recentes para o teu "hardware" e do Servidor "Xorg" 1.13 ou posterior.

O Servidor "Xorg" deveria carregar ambos os controladores de "GPU" automaticamente. Você pode verificar isso executando:

xrandr --listproviders

Deveria existir dois (ou mais) provedores listados, por exemplo:

Providers: number : 2
Provider 0: id: 0x7d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:modesetting
Provider 1: id: 0x56 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 1 associated providers: 1 name:modesetting

Para a finalidade de poder executar um aplicativo GLX em uma GPU discreta, você precisará executar o seguinte comando, onde <provider> é o ID da placa discreta mais poderosa e <sink> é o ID da placa que tiver uma tela conectada:

xrandr --setprovideroffloadsink <provider> <sink>
[Nota]

Nota

Com o controlador de configuração de modo do Xorg, que é compatível com DRI3, o comando acima não mais é necessário. No entanto, ele não danifica.

Então, você precisará exportar a variável de ambiente "DRI_PRIME=1" toda vez que quiser que a poderosa "GPU" seja usada. Por exemplo,

DRI_PRIME=1 glxinfo | grep -E "(OpenGL vendor|OpenGL renderer|OpenGL version)"

mostrará o fornecedor, o renderizador e a versão do "OpenGL" para a "GPU" discreta.

Se o último comando informar o mesmo renderizador "OpenGL" com e sem "DRI_PRIME=1", [então] você precisará verificar a tua instalação.

Configurando Dispositivos do Xorg

Para a maioria das configurações de "hardware", o "Xorg" moderno corrigirá automaticamente a configuração do servidor sem qualquer intervenção do(a) usuário(a). Existem, no entanto, alguns casos em que a configuração automática estará incorreta. A seguir estão alguns de itens de configuração manual de exemplo que possivelmente sejam de uso nesses casos.

Configurando Dispositivos de Entrada do X

Para a maioria dos dispositivos de entrada, nenhuma configuração adicional será necessária. Esta seção é fornecida somente para fins informativos.

Uma amostra de configuração padrão do "XKB" poderia ser semelhante ao seguinte (executado como o(a) usuário(a) "root"):

cat > /etc/X11/xorg.conf.d/xkb-defaults.conf << "EOF"
Section "InputClass"
     Identifier "XKB Defaults"
     MatchIsKeyboard "yes"
     Option "XkbLayout" "fr"
     Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
EOF

A linha XkbLayout é um exemplo para um teclado francês ("AZERTY"). Mude-a para o modelo do teu teclado. Essa linha não é necessária para um teclado "QWERTY" ("EUA").

Configurações de Ajuste Fino de Exibição

Se você deseja configurar a resolução do monitor para o Xorg, primeiro execute xrandr em um terminal do X para listar as resoluções suportadas e as correspondentes taxas de atualização. Por exemplo, ele gera o seguinte para um monitor:

Screen 0: minimum 16 x 16, current 5760 x 2160, maximum 32767 x 32767
DP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
   3840x2160     59.98*+
   2048x1536     59.95
   1920x1440     59.90
   1600x1200     59.87
   1440x1080     59.99
   1400x1050     59.98
   1280x1024     59.89
   1280x960      59.94
   1152x864      59.96
   1024x768      59.92
   800x600       59.86
   640x480       59.38

A partir da saída gerada podemos ver que o monitor está identificado como DP-1. Selecione uma resolução adequada a partir da lista da saída gerada, por exemplo 1920x1440. Então, como o(a) usuário(a) root, crie um arquivo de configuração para o servidor Xorg:

cat > /etc/X11/xorg.conf.d/monitor-DP-1.conf << "EOF"
Section "Monitor"
    Identifier  "DP-1"
    Option      "PerferredMode" "1920x1440"
EndSection
EOF

Às vezes, o xrandr pode falhar para detectar algumas configurações de resolução suportadas pelo monitor. Isso geralmente acontece com monitores virtuais de gerenciadores de máquinas virtuais, como qemu-8.1.0 ou VMWare: um monitor virtual na verdade suporta todos os pares de números inteiros em um intervalo conforme a resolução, mas xrandr só listará alguns. Para usar uma resolução não listada por xrandr, primeiro execute cvt para obter a linha de modo para a resolução. Por exemplo:

cvt 1600 900
# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
Modeline "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync

Como o(a) usuário(a) root, crie um arquivo de configuração do servidor Xorg contendo essa linha de modo e especifique o modo como modo preferido:

cat > /etc/X11/xorg.conf.d/monitor-DP-1.conf << "EOF"
Section "Monitor"
    Identifier  "DP-1"
    Modeline    "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
    Option      "PerferredMode"   "1600x900_60.00"
EndSection
EOF

Alguns monitores LCD de última geração suportam uma taxa de atualização superior a 100 Hz, mas xrandr pode falhar para reconhecer a taxa de atualização suportada e usar 60 Hz. Esse problema impediria você de utilizar a capacidade completa do monitor e poderia fazer com que a tela piscasse ou mostrasse artefatos como malhas ou grades. Para resolver o problema, use novamente cvt para obter a linha de modo com uma taxa de atualização personalizada:

cvt 3840 2160 144
# 3840x2160 143.94 Hz (CVT) hsync: 338.25 kHz; pclk: 1829.25 MHz
Modeline "3840x2160_144.00"  1829.25  3840 4200 4624 5408  2160 2163 2168 2350 -hsync +vsync

Em seguida, cole-a no arquivo de configuração do servidor Xorg e configure-a como modo preferido.

Outra configuração comum é ter vários esquemas de servidor para uso em ambientes diferentes. Apesar de que o servidor automaticamente detectará a presença de outro monitor, ele possivelmente obtenha a ordem incorreta:

cat > /etc/X11/xorg.conf.d/server-layout.conf << "EOF"
Section "ServerLayout"
     Identifier     "DefaultLayout"
     Screen      0  "Screen0" 0 0
     Screen      1  "Screen1" LeftOf "Screen0"
     Option         "Xinerama"
EndSection
EOF

Quando você arrasta uma janela no TWM (ou em qualquer gerenciador de janelas não de composição) horizontalmente, você poderá observar que as bordas verticais da janela são quebradas em vários segmentos. Esse é um exemplo dos artefatos visuais chamados rasgamento de tela. Para resolver os problemas de rasgamento de tela, crie um arquivo de configuração que habilite a opção TearFree. Observe que você precisa ter o remendo Tearfree aplicado a partir de Xorg-Server-21.1.8 para isso funcionar corretamente e isso pode aumentar a alocação de memória e reduzir o desempenho.

cat > /etc/X11/xorg.conf.d/20-tearfree.conf << "EOF"
Section "Device"
   Identifier "Graphics Adapter"
   Driver     "modesetting"
   Option     "TearFree" "true"
EndSection
EOF

Com o moderno Xorg, pouca ou nenhuma configuração adicional de placa gráfica é necessária. Se você devesse precisar de opções extras passadas para o teu controlador de vídeo, adicione-as na seção Device também. As opções suportadas pelo controlador de configuração de modo estão documentadas na página de manual modesetting(4).