Dans le même genre de soucis que le précédent billet, possédant deux interfaces réseau, j’ai été confronté à un changement aléatoire de leur attribution au démarrage de la machine. Ce phénomène étant du au fait qu’udev charge les modules de façon asynchrone, ce qui occasionne un changement dans leur ordre d’initialisation et donc leurs noms peuvent passer de l’un à l’autre de façon aléatoire : eth0 devient eth1 et vice-versa.
La solution est de spécifier explicitement l’ordre de chargement des modules en question pour lui dire – dans mon cas – de charger le module de ma carte gigabit Realtek avant la fast ethernet SiS. Ceci se fait simplement dans le fichier rc.conf
, dans la partie, je vous le donne en mille MODULES. Les modules précisés se chargeront ainsi avant qu’udev ne charge automatiquement le reste de ce qu’il trouve.
Trouver les modules à charger
Pour faire ceci il faut d’abord connaître le nom des modules à charger. Un lspci
donne le nom des interfaces réseau :
# lspci
00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 PCI Fast Ethernet (rev 90)
00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
Mais ceci ne renseigne pas sur le nom précis des modules qui peuvent être trouvés avec hwdetect
en précisant l’option --show-net
pour ne voir que les modules relatifs au réseau :
# hwdetect --show-net
NET : mii ppp_generic r8169 sis900 slhc
Je vois bien que les modules me concernant se nomment r8169
et sis900
.
Modifier le rc.conf
Voilà, je sais maintenant que le module r8169
doit être chargé avant sis900
. Je modifie mon rc.conf
comme ceci :
MODULES=(r8169 sis900)
Ainsi le module de ma carte gigabit va se charger avant celui de la carte fast ethernet.