Como os drivers da GPU * realmente * funcionam no Linux?

2

Nota: Eu acho que isso deve ser distro-agnóstico, mas se for relevante, estou usando o Arch Linux com o KDE Plasma 5 e SDDM.

Vou tentar resumir e manter apenas os detalhes absolutamente relevantes.

Eu fiz uma instalação limpa do Arch Linux, e eu queria configurar o Bumblebee para a funcionalidade Optimus / Prime (eu tenho um laptop otimus - Asus X550V). Eu encontrei alguns problemas com o zangão, e durante a experimentação seguinte para resolver isso, percebi que ainda não entendo como funcionam os drivers xorg e gráficos (note que eu acho que tenho uma solução muxless com os gráficos híbridos - pelo menos eu não posso mudar o cartão ativo no BIOS).

O que eu achei como funciona:

1) Se os drivers proprietários não estiverem instalados, o sistema carregará os drivers intel e nouveau, usará a intel por padrão e usará nouveau quando DRI_PRIME = 1 for passado para um comando.

2) Se os drivers proprietários estiverem instalados, o sistema não os carregará, a menos que a configuração do xorg esteja configurada da maneira como é detalhada aqui ( link - a parte" using nvidia ").

3) Se os drivers proprietários estiverem instalados e a configuração correta do xorg estiver configurada, o sistema tentará usar os drivers nvidia e o nvidia GPU, mas fornecerá uma tela preta, já que a nvidia GPU não está conectada o display - duas linhas xrandr são necessárias em ~ / .xinitrc (se estiver usando startx) ou nos arquivos de configuração do gerenciador de exibição para dizer ao xorg para usar o descarregamento.

O que realmente aconteceu:

Para investigar meus problemas de abelha eu desinstalei tudo relacionado a nvidia ou bumblebee e instalei apenas os drivers da nvidia.

Para minha surpresa, na inicialização, o SDDM falhou em aparecer. Eu mudei para um tty livre, matei sddm (sudo systemctl stop sddm), e usei startx (.xinitrc foi configurado com exec startkde mas não com as duas linhas xrandr). Para minha (mais uma vez) surpresa, o KDE começou. Minhas fontes apareceu pequena / baixa resolução, mas por outro lado estava bem, e um glxinfo | grep A NVIDIA confirmou que estou usando a nvidia.

Depois, eu adicionei as duas linhas xrandr ao / usr / share / sddm / scripts / Xsetup, e então o SDDM foi iniciado sem problemas, e eu pude fazer login no Plasma. As fontes ainda estavam ferradas, mas funcionavam e com a nvidia.

Perguntas:

  • Por que diabos meu sistema usava os drivers da Nvidia, se eu não tivesse sequer um arquivo xorg.conf? (xorg.conf.d também estava vazio, exceto por um arquivo de teclado) Se ele usa os drivers Nvidia por padrão, por que dizer em todos os lugares (Arch Wiki, Nvidia docs) para criar um arquivo xorg.conf para os drivers nvidia se eu quiser usa-os? Mais importante, como é que quando o bumblebee é instalado, o sistema usará a Intel por padrão? A pasta / etc / X11 tem o mesmo conteúdo em ambos os casos com o arquivo no xorg.conf. Alternativamente, a mesma coisa acontece no Ubuntu quando o miniaplicativo PRIME embutido é usado - existe um arquivo xorg.conf usado quando você muda para a NVIDIA, mas o xorg.conf está desabilitado ao usar a Intel. Por que não usa a NVIDIA, se ela usa NVIDIA no meu caso, mesmo que não haja nenhum arquivo xorg.conf informando ao xorg para usar a NVIDIA ?

  • Por que consegui rodar o Plasma na NVIDIA, sem ter as linhas xrandr no meu startx? Apenas o SDDM teve problemas. Correndo com startx era possível. Eu pensei que o descarregamento só deveria acontecer se essas linhas estivessem lá?

por Uldreth 09.10.2017 / 18:00

1 resposta

1

Como eles funcionam depende da distribuição em questão. O que você descreveu como o comportamento real corresponde à forma como a maioria das distros se comporta, mas há alguns casos estranhos como o Gentoo (que requer que você inclua manualmente os drivers no kernel para que os proprietários sejam carregados) que não fazem as coisas dessa maneira. .

Quanto a por que ele se comporta dessa maneira, os servidores X modernos detectam automaticamente a maioria das coisas sem nenhum dos arquivos de configuração que você mencionou. Na verdade, as melhores práticas atuais são explicitamente não ter esses arquivos de configuração, a menos que sua configuração não funcione corretamente fora da caixa com a detecção automática, de modo que mudar o hardware (por exemplo, instalando um diferente placa de vídeo) não quebra sua configuração do X. Também vale a pena notar que muita documentação ainda não alcançou isso, e Arch em particular recomenda que você tenha esses arquivos para obter exatamente o comportamento desejado (que pode ou não ser a melhor opção). O importante aqui é que o X usará qualquer driver de vídeo carregado por seu kernel por padrão, e (normalmente) retornará aos padrões detectados automaticamente se a configuração fornecida não fizer sentido (ou não se aplicar ao hardware).

Isso, então, traz a questão de por que seu kernel carregou os drivers proprietários em vez do nouveau. Sem quantidades significativas de informações sobre sua configuração exata, não posso dizer exatamente por que isso aconteceu, mas eu estaria disposto a apostar que o comportamento atual no Arch corresponde à maioria das distribuições, e preferencialmente usará os drivers proprietários em vez do nouveau. Supondo que este seja o caso, você (poderá) forçar o uso do nouveau adicionando o seguinte na linha de comando do kernel no gerenciador de inicialização:

modules_blacklist=nvidia

Isso impedirá que os drivers proprietários sejam carregados (mesmo quando você também os informar explicitamente com ferramentas como modprobe -f ), o que deve fazer com que o nouveau seja carregado.

    
por 09.10.2017 / 21:24