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.
- Le pilote libre : parfait pour les applications 2D ( bureautique, vidéo...), les performances 3D sont souvent limitées. Notons que dans certains cas ou le support n'est plus assuré par le constructeur, c'est la seule solution.
- Le pilote proprio packagé par la distro : Proprio = performances 2D/3D optimales. Il sera installé via le gestionnaire de paquet de la distribution.
- Le pilote proprio via un installateur fournis par le constructeur.
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 :