Intéressé par des cours d'informatique en ligne ?
Visitez mon nouveau site https://www.yesik.it !

Au premier redémarrage après la mise à jour de mon ordinateur portable de Debian Lenny vers Debian Squeeze, j'ai constaté la disparition de l'interface réseau eth2 correspondant à ma carte Wi-Fi. En fait de disparition, après un examen plus poussé du résultat de ifconfig, je me suis rendu compte que, tout simplement, l'interface ne portait plus le même nom. De eth2 la voici renommée eth1.

La chose est d'autant plus surprenante que, sur mon ordinateur, une règle pour udev spécifie explicitement le nom à utiliser pour les différentes interfaces réseau:

sh$ cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# MAC addresses must be written in lowercase.

# Firewire device 00c09f00006ceeda (ohci1394)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:c0:9f:00:00:6c:ff:aa", NAME="eth0"

# PCI device 0x14e4:0x169c (tg3)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:c0:9f:bb:cc:aa", NAME="eth1"

# PCI device 0x8086:0x4220 (ipw2200)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:13:ce:aa:bb:cc", NAME="eth2"
The udev version in squeeze requires a kernel of version 2.6.26 or newer with the CONFIG_SYSFS_DEPRECATED option disabled and the CONFIG_INOTIFY_USER and CONFIG_SIGNALFD options enabled.

in Squeeze release notes

Après divers tests pour m'assurer que les cartes étaient bien reconnues et que leur adresse MAC n'avait pas changé pour quelque mystérieuse raison, la conclusion s'imposait: udev n'appliquait plus ces règles ou ne fonctionnait pas correctement.

Une recherche sur le site de Debian [1] donne l'explication: La nouvelle version de udev fournie avec Squeeze nécessite un noyau 2.6.26 ou ultérieur, compilé avec l'option CONFIG_SYSFS_DEPRECATED désactivée et les options CONFIG_INOTIFY_USER et CONFIG_SIGNALFD activées. À noter que pour les noyaux récents dotés de l'option CONFIG_SYSFS_DEPRECATED_V2, celle-ci doit aussi être désactivée

Or les noyaux par défaut fournis avec Lenny ne respectent pas cette configuration. Normalement, lors de la mise à jour, un nouveau noyau compilé avec les options nécessaires pour les programmes de Squeeze aurait dû être installé en même temps que le reste du système. Sauf que sur mon portable, j'utilise un kernel spécifiquement compilé pour ma machine – et basé sur la configuration standard des noyaux pour Debian Lenny.

Si c'est aussi votre cas, ou si pour une raison ou une autre vous avez bloqué la mise à jour du kernel vers un de ceux de Squeeze, votre udev aura également des problèmes. Bref, deux solutions possibles:

Dans ce second cas, je vous laisse chercher les options citées plus haut dans les différents menus de l'outil de configuration du noyau (make menuconfig). Accessoirement, si vous disposez déjà d'un fichier de configuration pour votre noyau, vous pouvez directement modifier les lignes correspondantes du fichier .config, comme ci-dessous:

sh$  cat .config | grep -E 'CONFIG_SYSFS_DEPRECATED|CONFIG_INOTIFY_USER|CONFIG_SIGNALFD'
# CONFIG_SYSFS_DEPRECATED_V2 is not set
CONFIG_SIGNALFD=y
CONFIG_INOTIFY_USER=y

Une fois le noyau recompilé avec ces options et installé sur ma machine, udev s'est remis à marcher comme avant! Ouf...

Ressources