Debian Wheezy & Fglrx - Installation du module noyau avec Linux 3.14

Quoi qu'y dit ?

Sous Debian ( et dans la plupart des distro GNU/Linux d'ailleurs), il existe plusieurs solutions en ce qui concerne les pilotes de carte graphique.

Sous Debian Wheezy, et en ce qui concerne les cartes AMD/ATI, le pilote proprio s'appelle Fglrx, et son installation est laborieuse avec une version de noyau > 3.2, à cause d'un bug lors de la compilation du module noyau. Il existe un projet destiné à faciliter l'installation des pilotes graphiques dans la plupart des distributions GNU/Linux ; Sgfxi. Le problème de la compilation reste néanmoins existant. Ayant passé quelques heures à chercher une solution, je partage ici la solution que j'ai trouvé au problème avec l'aide d'autres utilisateurs bien sûr.

Modification du fichier 'firegl_public.c'

Le fichier source 'firegl_public.c' qui se trouve dans /usr/src/fglrx-xx.xx contient une instruction qui fait Ă©chouer la compilation du module.

Le problème se trouve à la ligne 1761. Remplacer

#ifdef current_euid
    return current_euid();
#else

par

#ifdef current_euid
    return __kuid_val(current_euid());
#else

et recompiler le noyau règle le problème.

Recompilation manuelle du module

MĂ©thode un peu crado :

sudo su
apt-get install --install-depends fglrx-driver

L'installation finit sur une erreur, on va la régler en faisant les modifs du point précédant puis relancer la compil'.

cd /usr/src/fglrx-13.12
make

Une fois que c'est fait, on installe le module.

mkdir -p /var/lib/dkms/fglrx/kernel-X.xx_etc/module/ 
cp fglrx.ko /lib/modules/3.14-0.bpo.1-amd64/updates/dkms/ 
cp fglrx.ko /var/lib/dkms/fglrx/kernel-X.xx_etc/module/ 
update-initramfs -u 

MĂ©thode plus propre : modif du paquet

Une méthode plus propre : on modifie le fichier dans le paquet, et onl'installe.

On télécharge le paquet ( adaptez votre version et architecture !) :

wget  http://ftp.fr.debian.org/debian/pool/non-free/f/fglrx-driver/fglrx-modules-dkms_13.12-4~bpo70+1_amd64.deb

On extrait le paquet :

dpkg -x fglrx-modules-dkms_13.12-4~bpo70+1_amd64.deb build 
dpkg -e fglrx-modules-dkms_13.12-4~bpo70+1_amd64.deb build/DEBIAN 

On fait les modifs sur le fichier 'firegl_public.c' qui se trouve dans build/usr/src/fglrx-13.12/.

On reconstruit le paquet :

dpkg -b fglrx-modules-dkms_13.12-cor_amd64.deb build 

On installe :

dpkg -i fglrx-modules-dkms_13.12-cor_amd64.deb build 

Bonus : DĂ©sactivation du module radeon

Le module radeon ne doit pas être chargé en même temps que le module fglrx, car ils sont en conflit.

Il faut donc veiller à vérifier que le module radeon est blacklisté dans /etc/modprobe.d/fglrx-blacklists-radeon.conf. Si ce n'est pas le cas, on crée le fichier :

 echo "blacklist radeon" > /etc/modprobe.d/fglrx-blacklists-radeon.conf' 

On vérifie bien dans /etc/initramfs-tools/modules qu'aucune ligne ne contient radeon. On vérifie dans /etc/default/grub la ligne , et on ajoute l'option radeon.modeset=0 si besoin:

 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.modeset=0" 

On oublie pas de générer l'image noyau et la config grub :

 sudo update-initramfs -u   sudo update-grub 

Sources :

http://devgurus.amd.com/thread/159241

http://ati.cchtml.com/show_bug.cgi?id=847