17 de enero de 2014

Drivers AMD Catalyst en Fedora 20


Si tienes Fedora 20, una tarjeta gráfica AMD (antes ATI), y no te gusta mucho el driver libre radeon, sea por lo que sea. Siento decirte que estamos de luto. En el repositorio RPM Fusion desde Fedora 20 no tenemos más soporte. Aunque esto no nos debe de impresionar, dado que, radeon es el driver libre que nos viene por defecto en Fedora. Y es lo que nosotros apoyamos. No nos olvidemos que RPM Fusion son repositorios ajenos al proyecto, con el fin de facilitar programas, librerías, códecs... privativos o que no correspondan con los términos del Software Libre que defiende Fedora. Este repositorio no es oficial y está hecho gracias a un equipo voluntario que lo mantiene día tras día.

Sin embargo, todos los que lo usamos, es un palo bastante grande. De la comodidad de akmod o kmod, a pasar de vuelta a la ejecución de un script. Tal vez sea no muy llevadero para quiénes no estén muy familiarizados con el tema de la compilación. Sin embargo, para otros es como comer pipas que los veo y me dan envidia. No obstante, lo bueno de Linux y este mundillo es que no se cansan de hacer soluciones.

Por ende, encontré una alternativa a la hora de instalar los controladores de Catalyst en Linux, en las anotaciones del siguiente autor del blog tojaj donde nos relata un poco como hacerlo.

¡OJO! Es muy importante que sepas, que para la instalación del driver nosotros compilaremos el núcleo y usaremos el sistema SIN el secure boot activado.

Bueno, primero tenemos que revisar nuestra versión de servidor X.org instalada en nuestro sistema, y comparar si corresponde a la versión que tenemos en nuestro sistema, además de la versión de nuestro kernel.
  • Xorg/Xserver 7.4 y/o superior (1.14)
  • Linux kernel 2.6 o superior (3.11)
Después deberíamos tener instalado en nuestro sistema, las fuentes del kernel, más el compilador GCC y otras herramientas como make, binutils...
  • $ su -c "dnf install gcc binutils make kernel-devel kernel-headers"
Pasamos a descargarnos el driver de la página de AMD y lo descomprimimos.

Luego, nos situamos en el directorio desde terminal, otorgamos permisos de ejecución y lo corremos como root!
  • # chmod +x amd....sh
  • # ./amd...run 
Asistente de instalacón Catalyst
Nos saltará un asistente gráfico, nosotros seguiremos los pasos de "Siguiente", y la opción la dejamos en automático. Una vez que realicemos la instalación nos dará un pequeño error con el que no nos debemos asustar. Según estuve mirando, es un error de AMD que no tomó en cuenta las APIs del kernel de Fedora, supuestamente. Y falla en la compilación dando a lugar el siguiente error:
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.a .??* *.symvers
make -C /lib/modules/3.12.7-300.fc20.x86_64/build SUBDIRS=/usr/lib/modules/fglrx/build_mod/2.6.x modules
make[1]: Entering directory `/usr/src/kernels/3.12.7-300.fc20.x86_64'
  CC [M]  /usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.o
  CC [M]  /usr/lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.o
/usr/lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.c: In function ‘KCL_ACPI_ParseTable’:
/usr/lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.c:999:5: warning: passing argument 1 of ‘(acpi_status (*)(u32,  void *, void *))handler’ makes integer from pointer without a cast [enabled by default]
     ((acpi_table_handler)handler)(hdr);
     ^
/usr/lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.c:999:5: note: expected ‘u32’ but argument is of type ‘struct acpi_table_header *’
/usr/lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.c:999:5: error: too few arguments to function ‘(acpi_status (*)(u32,  void *, void *))handler’
make[2]: *** [/usr/lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.o] Error 1
make[1]: *** [_module_/usr/lib/modules/fglrx/build_mod/2.6.x] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.12.7-300.fc20.x86_64'
make: *** [kmod_build] Error 2
build failed with return value 2
[Error] Kernel Module : Failed to compile kernel module - please consult readme.
[Reboot] Kernel Module : dracut

Nuestra solución es la siguiente:
Cerramos el instalador y con un editor de texto, modificamos el fichero que se encuentra en /lib/modules/fglrx/build_mod/kcl_acpi.c y en la línea 999. Realizaremos este pequeño cambio:

==> ((acpi_table_handler)handler)(hdr);) 
==>((acpi_tbl_table_handler)handler)(hdr)

Posteriormente, guardamos el fichero y ejecutamos los siguientes comandos que nos llevarán a la compilación he instalación del driver:
  • $ cd /lib/modules/fglrx/build_mod/
  • $ ./make.sh
  • $ cd .. && ./make_install.sh
Una vez terminado, editaremos el fichero /etc/default/grub con un editor de texto y añadimos en la línea del kernel el parámetro radeon.modeset=0, quedando más o menos así.
GRUB_CMDLINE_LINUX="vconsole.font=latarcyrheb-sun16 $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param || :) rhgb quiet radeon.modeset=0"
Regeneramos el fichero del gestor de arranque:
  • # grub2-mkconfig -o /boot/grub2/grub.cfg
 Y ¡voilá!

Solución de errores:

No sé ustedes, pero yo NO he podido utilizar Fedora con GNOME 3.10.*.




Desconozco el error. El GDM no lo puedo utilizar, porque se pone oscura la pantalla. Y he iniciar X desde startx y configurando el .xinitrc para que me abra openbox. Solo sé que un tal Clutter dice que no existe OpenGL en nuestro sistema y no lanza programas como Cheese, gnome-shell... No lo comprendo porque si puedo lanzar muchos programas de GNOME que parecen no requerirlo como nautilus, gnome-terminal, y programas como Stellarium que necesitan OpenGL para correr. Además que fglrxinfo dice la versión que soporta OpenGL el driver incluso. Si alguien sabe el por qué, por favor, que no dude en sumarse al reporte que abrí en Bugzilla.

Fuentes:
  • FedoraForum.org
  • Tojaj.com
  • Google

3 comentarios:

  1. See my blogpost to learn why GNOME doesn't work with catalyst in Fedora 20:
    http://kparal.wordpress.com/2014/01/08/amd-radeon-r9-270-in-fedora-20-experience/

    ResponderEliminar
  2. lo que debes hacer es instalar akmods, y luego instalar el driver automaticamente, asi te funciona absolutamente todo, no olvides instalar el paquete kernel -devel

    ResponderEliminar
    Respuestas
    1. El problema es que con la salida de Fedora 20 no existe akmods ni kmod, ni las librerías para X.org de Catalyst a través de RPM Fusion. Por un lado no tiene por qué estar porque Fedora no distribuye algo que no sea software libre o de código abierto. Por otro lado, el usuario se verá a obligado en caso de querer esos drivers vérselas con una compilación.

      Al final, como quería comprar una laptop, decidí comprarla Intel íntegra. Así ahorro en soportar este tipo de cosas porque sus drivers son libres, aparte, como no juego ni nada por el estilo me interesa más por el ahorro de la batería. Si por un casual, quisiera comprar un laptop o PC, para jugar o renderizar...etc. Compraría NVIDIA porque su soporte es mucho mejor en cualquier SO inclusive FreeBSD. Y no tengo que esperar a que cada vez que se actualice el kernel o el servidor gráfico tenga que estar esperando a que se liberen nuevos drivers, o tenga que usar Beta con ese molesto logo en la parte inferior derecha de la pantalla.

      Eliminar

Gracias por visitar mi blog y animarte a comentar. Por favor se respetuoso con sus comentarios. Cualquier error es preferible reportárlo que criticarlo por el bien de todos.



Licencia y responsabilidades

Licencia Creative Commons
netSys blog por Álvaro Castillo se encuentra bajo una Licencia Creative Commons Atribución-CompartirIgual 3.0 Unported.

El propietario de este blog no se responsabiliza de los daños que puedan generarse u ocurrir por la información expuesta aquí, en caso de ser utilizada la responsabilidad recae bajo quién la use.

Se les informa de posibles publicaciones donde queden expuestas imágenes a terceros o marcas comerciales que siempre tendrán sus fuentes, y sus atribuciones.

Por último, en caso de confusión por la temática que se trate de los artículos, tutoriales...etc dejaremos claro que este sitio Web no colabora directamente con ningún proyecto de forma oficial.