Citações do link
No começo eu estava tentando um sistema diário Ubuntu 16.04 com o kernel Xenial empacotado. No entanto, mesmo que este driver binário AMDGPU empacotado use o DKMS, há uma quebra na compatibilidade com o código desse driver do kernel em relação ao Linux 4.4. Devido a algumas mudanças na interface de kernel do DRM do Linux 4.4, a construção do módulo DKMS falhou . Isso deve ser corrigido pela AMD assim que Bridgman observou nos fóruns, mas por enquanto, a solução fácil era instalar o Linux 4.2 na caixa do Ubuntu 16.04
Eu não tentei a solução fácil, mas encontrei a mais difícil no começo do dia e funcionou para mim sem um problema.
No entanto Se você tentar isso, eu recomendo fazer o backup do seu sistema antes de tentar isso.
O problema para o AMDGPU-PRO no Ubuntu GNOME é que o COGL não está compilando corretamente.
existe um arquivo de patch para ele:
Corrija os drivers COGL para AMDGPU-PRO de Ashley Sommer. link
--- a/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -403,9 +403,13 @@
&ctx->glsl_minor);
}
- if (COGL_CHECK_GL_VERSION (ctx->glsl_major, ctx->glsl_minor, 1, 2))
- /* We want to use version 120 if it is available so that the
- * gl_PointCoord can be used. */
+ if (COGL_CHECK_GL_VERSION (ctx->glsl_major, ctx->glsl_minor, 1, 5))
+ ctx->glsl_version_to_use = 150;
+ else if (COGL_CHECK_GL_VERSION (ctx->glsl_major, ctx->glsl_minor, 1, 4))
+ ctx->glsl_version_to_use = 140;
+ else if (COGL_CHECK_GL_VERSION (ctx->glsl_major, ctx->glsl_minor, 1, 3))
+ ctx->glsl_version_to_use = 130;
+ else if (COGL_CHECK_GL_VERSION (ctx->glsl_major, ctx->glsl_minor, 1, 2))
ctx->glsl_version_to_use = 120;
else
ctx->glsl_version_to_use = 110;
Há um guia do usuário illwieckz sobre como aplicar a correção aqui:
link
O que fazer:
Você precisa reconstruir o pacote
libcogl20
. Como não consegui reconstruir os pacotescogl
com êxito, acabei de substituir o próprio bináriolibcogl.so
.
sudo apt-get build-dep cogl
se você obtiver: E: Unable to find a source package for cogl
sudo gedit /etc/apt/sources.list
e adicione isso no final do arquivo:
# COGL
deb-src ftp://ftp.de.debian.org/debian/ stable main contrib
próximo:
sudo apt-get update && sudo apt-get build-dep cogl
instale alguns pacotes necessários para criar cogl
:
sudo apt-get install devscripts libcogl-gst-dev
depois continue:
The following commands I executed from the home directory,
because of permission errors and 'command is not found'
errors I was getting.
apt-get source cogl
cd cogl-1.22.0
wget -O /tmp/cogl.patch https://gist.githubusercontent.com/ashleysommer/25118d366bf8c1608f3b1a64bc52d4e5/raw/e35e535e7ea9684538a63fe6ea0eb2709b1813f1/cogl_driver_gl_gl_cogl-driver-gl.c
patch -p1 < /tmp/cogl.patch
dpkg-source --commit
debuild -us -uc -j$(nproc)
Se a construção terminar com êxito para você, basta instalar o arquivo
libcogl20
deb gerado (no diretório pai) comgdebi
oudpkg
:
sudo dpkg -i libcogl20_1.22.0-2_amd64.deb
Se falhar por você como ele falhou para mim, há outra opção restante, você pode fazer como eu fiz.
Já que no meu final, a compilação falhou em alguma parte desnecessária, mas a biblioteca corrigida foi construída bem, eu acabei de substituir o binário manualmente:
Código:
sudo cp -a debian/tmp/usr/lib/x86_64-linux-gnu/libcogl.so.20.4.1 /usr/lib/x86_64-linux-gnu/libcogl.so.20.4.1
O desktop congela por alguns segundos.
Desde que substituí um arquivo que vem de um pacote, marquei o pacote para "segurar" para ter certeza de que uma atualização futura não irá sobrescrevê-lo, é uma boa idéia segurá-lo também se você construiu o pacote com sucesso, por o mesmo motivo.
Código:
sudo apt-mark hold libcogl20
Se você quiser reverter as coisas sujas, basta fazer:
Código:
sudo apt-mark unhold libcogl20
sudo apt-get install --reinstall libcogl20
Pro-tip, você pode usar a ferramenta debsums (do pacote debsums) para verificar se você está executando um libcogl.so de um pacote ou um patch com correção rápida e suja como eu:
Código:
debsums -s libcogl20
debsums: changed file /usr/lib/x86_64-linux-gnu/libcogl.so.20.4.1 (from libcogl20:amd64 package)
Se você criou o pacote com sucesso e instalou o dpkg, o debsums não irá reclamar.
A última parte da instalação do amdgpu-pro se parece com esta
Setting up amdgpu-pro (16.30.3-315407) ...
Setting up amdgpu-pro-dkms (16.30.3-315407) ...
Loading new amdgpu-pro-16.30.3-315407 DKMS files...
First Installation: checking all kernels...
Building for 4.4.0-36-generic and 4.8.0-rc5
Building for architecture x86_64
Building initial module for 4.4.0-36-generic
Done.
amdgpu:
Running module version sanity check.
- Original module
- Installation
- Installing to /lib/modules/4.4.0-36-generic/updates/dkms/
depmod....
DKMS: install completed.
Building initial module for 4.8.0-rc5
ERROR: Cannot create report: [Errno 17] File exists:
'/var/crash/amdgpu-pro-dkms.0.crash'
Error! Bad return status for module build on kernel: 4.8.0-rc5 (x86_64)
Consult /var/lib/dkms/amdgpu-pro/16.30.3-315407/build/make.log for more information.
update-initramfs: deferring update (trigger activated)
Setting up amdgpu-pro-lib32:i386 (16.30.3-315407) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
Processing triggers for initramfs-tools (0.122ubuntu8.1) ...
update-initramfs: Generating /boot/initrd.img-4.8.0-rc5
Warning: Not updating LILO; /etc/lilo.conf not found!
Atualização de 10 a 9 de 2016 : Usando o RX 480.
A instalação é um sucesso com um 4.4.0-36-generic
kernel,
mas a construção do módulo para o kernel 4.8.0-rc5
falha.
Verifique se você tem: sudo apt-mark hold libcogl20
Este comando impede que gnome package updater
substitua o libgogl20
compilado por uma versão mais recente.
Ele também impede que outros pacotes sejam instalados porque alguns pacotes dependem de uma versão mais recente de cogl
e assim por diante.
Precisamos aguardar uma correção oficial para esse problema, até que essa seja uma boa maneira de obter o amdgpu-pro
driver trabalhando em Ubuntu Gnome 16.04
.