Ubuntu 17.04 Gnome 3.24 Sessão Wayland - Não é possível obter gráficos híbridos para funcionar

2

Eu tenho lutado com o gnome 3,24 em muitas distros na semana passada.

Eu tenho um dell XPS 9560 que usa a tecnologia NVIDIA Optimus, que é basicamente ter uma GPU dupla (CPU integrada + discreta). No meu caso, são gráficos do Kaby Lake do meu i7 e de uma NVIDIA GTX 1050.

Eu tentei instalar o Ubuntu 17.04 Gnome como é a distro mais recente e imaginei que seria melhor fora da caixa do que minhas muitas tentativas fracassadas (arch, tumbleweed, fedora 26).

O problema é que posso iniciar uma sessão do Wayland (depois de nova instalação), mas não posso usar o GPU secundário (nvidia) para abrir apps, jogos, etc. ele também não aparece nas configurações.

Eu então executei uma sessão do Xorg para obter os drivers adicionais e instalei o nvidia one, reiniciei e meu GPU padrão era agora NVIDIA, na sessão do Xorg, no entanto não consigo iniciar minha sessão do Wayland.

Então eu abri as configurações da Nvidia e no Prime Profiles mudei minha GPU para a Intel, reiniciei e agora eu poderia iniciar a sessão Wayland mas agora a da Xorg, eu acabei de receber uma tela cinza. E mesmo em Wayland com o driver nvidia e meu perfil privilegiado definido em meus gráficos Intel não consigo abrir usando o GPU secundário. Então, a partir de agora, reverti para o driver xorg nouveau padrão e estou usando minha sessão Wayland com meus gráficos Intel.

Ainda não tentei instalar os drivers beta mais recentes nesta distro, mas quando tentei em minhas tentativas precedentes, não pude nem conseguir que os principais perfis aparecessem nas nvidia-settings.

Eu não tenho idéia se o meu problema vem de drivers desatualizados, suporte de hardware, uma falha na matriz, então qualquer ajuda de qualquer tipo seria apreciada.

EDIT: A versão nvidia eu tentei instalar foi o atual 375, eu também tentei o 381 beta em outras distros, mas não no Ubuntu 17.04 ainda. Além disso:

$ lspci | grep -E "VGA|3D"
00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04)
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)
    
por Kevin 17.04.2017 / 19:03

1 resposta

0

Tente isto:

1.- Crie uma pasta para armazenar os arquivos SSDT. Em seguida, extraia-o das tabelas da ACPI (execute esta parte como root):

# mkdir dsdt
# cd dsdt
# SSDT_FILES='ls /sys/firmware/acpi/tables/ | grep SSDT'
# for file in $SSDT_FILES ; do cat "/sys/firmware/acpi/tables/$file" > "$file.dat"; done
# cat /sys/firmware/acpi/tables/DSDT > DSDT.dat

2.- Verifique se você tem IASL instalado. No Ubuntu, o sudo apt install iasl deve ser suficiente. Eu baixei o código e o compilei para obter a versão mais recente, mas não acho necessário.

3.- Há uma definição duplicada em um arquivo SSDT que não nos permite desassociá-lo. Descubra qual é e exclua:

# grep PRT0 *.dat
Binary file DSDT.dat matches
Binary file SSDT1.dat matches
# mv SSDT1.dat SSDT1.bak

Então, no meu caso, é SSDT1. Substitua-o com o que você conseguir. Não toque em DSDT.dat

4.- Em seguida, encontramos o arquivo SSDT com o código que precisamos alterar. Nós procuramos o arquivo com ambos "NVID" e "OSYS" presentes: (Provavelmente há uma maneira melhor de fazer isso no grep)

# grep NVID *.dat
Binary file SSDT10.dat matches
Binary file SSDT3.dat matches
# grep OSYS SSDT10.dat
# grep OSYS SSDT3.dat
Binary file SSDT3.dat matches

Então, no meu caso, era o SSDT3, se é diferente, você substitui todas as outras instâncias do SSDT3 com o que você recebe.

5.- Desmonte!

# iasl -e *.dat -d SSDT3.dat

6.- Espero que você não veja nenhum erro neste momento. Substitua todas as instâncias de OSYS, exceto a declaração com a constante para o Windows 7, e bata o número do bloco de definição em um:

# sed -i '/^ *External/! s/OSYS/0x07D9/g' SSDT3.dsl
# sed -i '/^ *DefinitionBlock/ s/0x00001000/0x00001001/g' SSDT3.dsl

Se você tiver um BIOS diferente, o número do Bloco de Definição pode não ser 1000. Basta abrir o SSDT3.dsl em um editor de texto e procurar por DefinitionBlock. Qualquer número que você vir nessa linha, incremente um por um.

7.- Compile tudo e espere que não haja erros.

# iasl -ve -tc -p SSDT3 SSDT3.dsl

8.- Crie uma imagem:

# mkdir -p kernel/firmware/acpi
# cp SSDT3.aml kernel/firmware/acpi/ssdt3.aml
# find kernel | cpio -H newc --create > acpi_gpufix

8.- Todas as instruções seguintes, correspondentes ao Ubuntu e ao GRUB2. Copie-o para a pasta de inicialização. o initrd.img é seu img padrão da pasta de inicialização:

# cp acpi_gpufix /boot/

você pode adicioná-lo permanentemente ao seu GRUB editando /etc/grub.d/10_linux. Eu tive que mudar a linha initrd ${rel_dirname}/${initrd} para initrd ${rel_dirname}/acpi_gpufix ${rel_dirname}/${initrd} . Em seguida, execute update-grub2.

9.- Para verificar se funciona:

$ dmesg | grep ACPI | grep override
[    0.000000] ACPI: Table Upgrade: override [SSDT-PegSsd- PegSsdt]
[    0.000000] ACPI: SSDT 0x000000007A715080 Physical table override, new table: 0x0000000079493000

Agora você pode alterar a GPU sem congelar

fonte:

link link link

    
por Glats 18.06.2017 / 01:24