Configuration matérielle réseau

La mise en oeuvre de la partie matérielle du réseau (détection des cartes réseaux, chargement des drivers et firmwares)s'effectue normalement de façon automatique.

A l'issue de cette étape, un identifiant de la forme eth0 ou wlan0 est attribué à chaque interface et sera utilisé dans les opérations de configuration (dhcp, ... ) qui suivent.>

En cas de problème, tel que matériel, driver ou firmware non reconnu ou non disponible, la mise en oeuvre automatique échoue et une intervention manuelle est nécessaire.

1 - Détection automatique

1.1 - Liste des interfaces réseau

Si le matériel est reconnu, les drivers et firmwares sont disponibles, la détection s'effectue automatiquement. La liste des interfaces est disponible dans le répertoire /sys/class/net

$ ls /sys/class/net/
    eth0 lo wlan0

1.2 - Caractéristiques du périphérique

eth0 et wlan0 sont en fait des liens à partir desquels il est possible d'obtenir des informations sur la nature de la carte : pci, usb, pcmcia, ...

$ ls -la /sys/class/net
total 0
lrwxrwxrwx 1 root root 0 oct.   2 20:04 eth0 -> ../../devices/pci0000:00/0000:00:1c.5/0000:05:00.0/net/eth0
lrwxrwxrwx 1 root root 0 oct.   2 20:04 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 oct.   2 20:04 wlan0 -> ../../devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlan0

Dans le cas présent, trois interfaces sont présentes : lo, eth0 et wlan0. lo (boucle locale) n'est pas une interface physique. Il reste donc deux interfaces matérielles eth0 et wlan0. Les cartes réseau eth0 et wlan0 sont des cartes pci situées respectivement aux adresses pci 05:00.0 et 03:00.0

lspci permet d'obtenir des informations détaillées sur la carte

$ lspci -s 00:05.0 -nnk
00:05.0 Ethernet controller [0200]:
Intel Corporation 82540EM Gigabit Ethernet Controller [8086:100e](rev 02)
 Subsystem: Intel Corporation PRO/1000 MT Desktop Adapter [8086:001e]
 Kernel driver in use: e1000

Pour la carte eth0, ci-dessus, d'adresse 00.05.0, on obtient les informations suivantes :

Dans le cas d'une carte aux formats usb ou pcmcia, on utilisera les commandes lsusb, lspcmcia ....

1.3 - Informations sur le module et les firmwares

modinfo fournit des informations détaillées sur le module et ses firmwares :

# modinfo e1000 
filename: /lib/modules/4.8.0-0.bpo.2-amd64/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
version: 7.3.21-k8-NAPI
license: GPL
description: Intel(R) PRO/1000 Network Driver
author: Intel Corporation, <linux.nics@intel.com>
......

# modinfo iwl3945
filename: /lib/modules/4.8.0-0.bpo.2-amd64/kernel/drivers/net/wireless/intel/iwlegacy/iwl3945.ko
firmware: iwlwifi-3945-2.ucode
license: GPL

2 - Détection manuelle

Si la tentative de détection ou de chargement automatique a échoué, l'interface n’apparaît pas dans /sys/class/net. La méthode générale pour y remédier consiste alors à

2.1 Identification de la carte

Plusieurs commandes permettent de détecter et identifier les cartes présentes :

2.1.1 Utilisation de discover

# discover --vendor-id --model-id -t network -v 
Loading XML data... ata pci pcmcia scsi usb Done
8086 100e Intel Corporation 82540EM Gigabit Ethernet Controller 

Dans le cas présent, les codes constructeurs et de modèle sont 8086 (intel) et 100E.

# discover --vendor-id --model-id -t network -d all -e pci
8086 100e Intel Corporation 82540EM Gigabit Ethernet Controller

Dans le cas présent, l'essai avec le format pci est concluant.

2.1.2 Utilisation de lspci

# lspci -k -nn |grep -i net
00:03.0 Ethernet controller [0200]: Intel Corporation 82540EM Gigabit Ethernet Controller [8086:100e] (rev 02)

2.2 Identification et installation du module (driver)

$ cat /lib/modules/$(uname -r)/modules.alias | grep -i 8086| grep -i 100E 
alias pci:v00008086d0000100Esv*sd*bc*sc*i* e1000

Le nom du driver est e1000.

$ find /lib/modules -name e1000.ko
/lib/modules/4.8.0-0.bpo.2-amd64/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
# aptitude install apt-file
# apt-file update
$ apt-file search e1000.ko |grep -E $(uname -r)
linux-image-4.8.0-0.bpo.2-amd64: /lib/modules/4.8.0-0.bpo.2-amd64/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
linux-image-4.8.0-0.bpo.2-amd64-dbg: /usr/lib/debug/lib/modules/4.8.0-0.bpo.2-amd64/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
linux-image-4.8.0-0.bpo.2-amd64-unsigned: /lib/modules/4.8.0-0.bpo.2-amd64/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
$ apt-cache rdepends module-assistant |sort
bbswitch-source
bbswitch-source
broadcom-sta-common
broadcom-sta-common
broadcom-sta-common
broadcom-sta-source
.......
# modprobe iwlwifi

2.3 - Identification et chargement du firmware

Certains périphériques nécessitent le chargement de firmware. S'ils sont installés, ils sont automatiquement chargés par le module. Sinon, un message d'erreur est affichée par le noyau.

$ dmesg |grep firmware
[ 96.992075] iwl3945 0000:0c:00.0: firmware: failed to load iwlwifi-3945-2.ucode (-2)
[ 96.992081] iwl3945 0000:0c:00.0: Direct firmware load failed with error -2

Dans le cas présent, le chargement du firmware iwlwifi-945-2ucode par le module iwl3945 a échoué.

$ apt-file search iwlwifi-3945-2.ucode
firmware-iwlwifi: /lib/firmware/iwlwifi-3945-2.ucode
$ apt-cache policy firmware-iwlwifi
firmware-iwlwifi:
Installé : (aucun)
Candidat : 0.43
Table de version :
20160110-1~bpo8+1 0
100 http://httpredir.debian.org/debian/ jessie-backports/non-free amd64 Packages
0.43 0
500 http://httpredir.debian.org/debian/ jessie/non-free amd64 Package
    # aptitude install -t jessie-backports firmware-iwlwifi
# updatedb
$ locate /lib/firmware |grep iwlwifi
/lib/firmware/iwlwifi-100-5.ucode,
/lib/firmware/iwlwifi-1000-5.ucode
.....
# modprobe -r iwlwifi && modprobe iwlwifi

2.3 Adresse mac

L'adresse mac est disponible dans le fichier /sys/class/net/nom_de_l'interface/address.

$ cat /sys/class/net/eth0/address 
c8:60:00:b9:28:aa