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"".

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.7" com o "bit" "suid") para declarações como:

(II) intel(0): direct rendering: DRI2 Enabled

ou

(II) NOUVEAU(0): Loaded DRI module
[Nota]

Nota

A configuração da "DRI" possivelmente seja diferente se você estiver usando controladores alternativos, como aqueles 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-22.3.5". A partir de um terminal do "X", execute "glxinfo" e procure pela frase:

nome da tela: :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-15.0.7" 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, [então] ele estará localizado no diretório "$HOME/.local/share/xorg/". Se o "Xorg" for iniciado por um gerenciador de exibição (por exemplo, "lightdm-1.32.0", "lxdm-0.5.3" ou "GDM-43.0") ou se "$XORG_PREFIX/libexec /Xorg" tiver o "bit" "suid" configurado, [então] 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 somente uma placa de vídeo no sistema, [então] ele pode ser seguramente ignorado. Se desejado, [então] 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>
(EE) AIGLX error: dlopen of /opt/xorg/lib/dri/i965_dri.so failed

Esse erro, acompanhado por "(EE) AIGLX error: unable to load driver i965", ocorre em alguns sistemas com dispositivos gráficos baseados em Intel. Isso é causado por uma incompatibilidade entre o "Xorg-Server-21.1.7" e o "Mesa-22.3.5" atuais. O "Xorg" não mais usa o controlador "i965" e usa os controladores Mesa "crocus" ou "iris", conforme indicado pelo comando "xdriinfo". Ele pode seguramente ser ignorado.

Se desejado, [então] esse aviso pode ser removido comentando-se as linhas 330-331 e 337-338 ("LogMessage") do "glx/glxdricommon.c" no pacote "Xorg-Server-21.1.7".

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:Intel
Provider 1: id: 0x56 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 1 associated providers: 1 name:radeon

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

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

Nota

Com controladores do "Xorg" mais recentes, como "modesetting" ou "intel", que são compatíveis 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

Novamente, com o "Xorg" moderno, pouca ou nenhuma configuração adicional é necessária. Se devesse precisar de opções extras passadas para o teu controlador de vídeo, por exemplo, você poderia usar algo como o seguinte (novamente, executado como o(a) usuário(a) "root"):

cat > /etc/X11/xorg.conf.d/videocard-0.conf << "EOF"
Section "Device"
    Identifier  "Videocard0"
    Driver      "radeon"
    VendorName  "Fornecedor da placa de vídeo"
    BoardName   "ATI Radeon 7500"
    Option      "NoAccel" "true"
EndSection
EOF

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