Compiler TG3 sur Debian 2.6.18

linux
J’ai rencontré le soucis, assez problématique, de tg3 (module réseau pour Dell PowerEdge R300) lors de son installation sur une Debian Etch avec un noyau 2.6.18-6, car ce module ne comporte pas les pilotes nécessaires aux nouveaux chipsets Broadcom.

Lors de l’installation de Debian 2.6.18-6-amd64 sur un Dell PowerEdge R300 (et a priori sur beaucoup d’autre Dell aussi), le pilote tg3 (qui se trouve déjà dans la distrib) n’est pas une version suffisamment récente pour faire tourner certains chipsets réseaux Broadcom (les 57xx entre autre).

Il faut donc télécharger le nouveau driver (disponible en zip ici), extraire le « tg3-x.xxy.tar.gz », et le transférer par la méthode de votre choix (clé USB) sur votre machine préférée (ou pas car elle vous énerve à ne pas détecter cette #ù£*@% carte réseau !!!)

Sauf que voilà, hé bien vous avez installé votre distrib avec une « netinstall » et qu’il faut absolument des packages qui ne sont pas disponible sur les 170Mo du CD…

Ma méthode :
Téléchargez l’ISO du premier DVD pour votre plateforme (AMD64/EM64T, i386,…) et gravez la (sur un DVD RW histoire de pas flinguer un DVD bêtement)

Installez là avec la méthode habituelle (je suis adepte de l’install « expert » afin de ne pas installer trop de paquet inutiles) puis sélectionnez le noyau à utiliser (il y en a beaucoup plus par rapport à la version « net-install »)

C’est là que ça se complique un petit peu, vu qu’il faut beaucoup de paquets complémentaires (merci le DVD parceque sinon ça aurait été chiant, sans carte réseau, hihihi)

apt-get install linux-kernel-headers linux-source-2.6.18 build-essential kernel-package patchutils linux-headers-$(uname -r) flex bzip2 libc6-i386

Attention, pour le paquet linux-source-2.6.18 (dans mon cas précis) : il ne faut pas préciser la sous révision du kernel (2.6.18-6-amd64) mais bien la version principale : impossible donc de faire linux-source-$(uname -r)
Le paquet build-essential est un meta paquet qui comporte les outils principaux de compilation (entre autre gcc, make, …)
libc6-i386 permet d’exécuter des applications 32bits sur une plateforme 64bits (je ne sais pas si c’est utile pour ce cas présent, mais ça sert toujours dans le futur)

Voilà, on attends un petit peu qu’il mouline le tout dans son coin, ensuite, on continue (parceque ce n’est pas encore fini !!! aïe aïe aïe !!!

cd /usr/src/
ls -al ooooo

!!! il n’y a pas de « /usr/src/linux » nécessaire à la compilation, on va le faire alors :

tar jxvf linux-source-2.6.18.tar.bz2
ln -s linux-source-2.6.18 /usr/src/linux
cd /usr/src/linux
make oldconfig
make prepare

Si tout se passe bien, il ne devrait pas y avoir d’erreurs, et vous avez correctement préparé le nécessaire à la compilation des futurs modules.

Il ne reste plus grand chose à faire, juste à compiler !

Prenez votre clé USB équipée de « tg3-x.xxy.tar.gz » et pluggez sur votre machine

mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
cp /mnt/usb/tg3-3.81c.tar.gz /root/
cd
tar zxvf tg3-3.81c.tar.gz
cd tg3-3.81c

On va quand même virer le module qui est peut être chargé (on sait jamais)

rmmod tg3
make clean

Histoire de flusher tout ce qui aurai pu être make avant

make

Si tout c’est bien passé, vous ne devriez pas avoir d’erreurs, et le module devrait être chargé, et avoir détecté la (les) interface(s) réseau(x) en question (un coup de « lsmod | grep tg3″ pour s’en assurer, sinon :

insmod tg3.ko

Super !!! mais ce n’est pas fini encore ! Il faut encore aller le mettre au bon endroit pour qu’il soit chargé au démarrage de la machine.

cat /etc/modules | grep tg3

si il y est, on ne fait rien, sinon :

echo "tg3" >> /etc/modules

dans tout les cas :

mv /lib/modules/$(uname -r)/kernel/drivers/net/tg3.ko /lib/modules/$(uname -r)/kernel/drivers/net/tg3.ko.old

On déplace l’ancien module (on sait jamais) afin de pouvoir le retrouver en cas de panne

cp tg3.ko /lib/modules/$(uname -r)/kernel/drivers/net/

On copie le nouveau afin que le kernel puisse aller le charger au démarrage
Puis on édite le fichier de configuration des interfaces afin de pouvoir les déclarer : (DHCP dans mon cas, mais peut être fixe dans le vôtre)

pico /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
ifup eth0

Et voilà, l’interface est montée, et va aller chercher une IP sur le réseau !

C’est fini ! un petit reboot pour vérifier que tout fonctionne correctement et on en parle plus !

Source : blog.Sn4kY.net

You can leave a response, or trackback from your own site.

Leave a Reply