SDB:Waiting for Mandatory Device
Version: 9.1
Symptôme
Au cours du processus d'amorçage, vous recevez le message « ...waiting for mandatory device... »
Cause
Le script /etc/init.d/network n'installe via la commande « ifup » que les interfaces réseau disponibles. Ainsi, aucun pilote n'est chargé (comme c'était le cas auparavant avec un alias dans le fichier modprobe.conf). Depuis la sortie des versions 9.1 et SLES de SUSE LINUX, on observe précisément l'inverse du comportement antérieur.
Le matériel existant est détecté et annoncé par le noyau. Cette action déclenche l'initialisation du matériel (la plupart du temps en chargeant des modules), ce qui permet d'enregistrer les interfaces réseau. Les scripts hotplug ou rcnetwork se chargent ensuite de configurer les interfaces en question.
Vous trouverez d'autres informations de base à ce sujet dans l'article
SDB:Configuration des périphériques et des interfaces sous SUSE LINUX
ainsi que
SDB:Aperçu du système Hotplug sous SUSE LINUX
Du fait que ce processus s'exécute de façon asynchrone, il n'est pas certain que toutes les interfaces soient déjà présentes au démarrage du script réseau. Par conséquent, le script attend au besoin les interfaces encore absentes qui sont considérées comme obligatoires (« mandatory »). Il attend en outre également pour être sûr que les interfaces existantes sont entièrement configurées (par exemple, il attend une adresse DHCP).
Le script réseau n'annonce la réussite de l'installation que quand toutes les interfaces obligatoires sont configurées de façon satisfaisante.
Pour éviter que ce processus tourne indéfiniment, le fichier /etc/sysconfig/network/config définit un délai maximal :
WAIT_FOR_INTERFACES="20"
Quand le délai imparti s'est écoulé, deux types d'erreurs sont possibles :
- 1) " No interface found". Cela signifie qu'aucune interface faisant partie de cette description du matériel n'a été trouvée. Soit le périphérique (« Hotplug ») est absent, soit il n'a pas été possible de l'initialiser, soit la détection automatique des périphériques obligatoires est inapplicable.
- 2) " interface could not be set up". L'interface existe, mais il n'a pas été possible de la configurer (complètement), soit parce qu'aucun fichier de configuration n'a été trouvé, soit parce que, par exemple, une interface a été configurée avec DHCP et n'a pas encore obtenu d'adresse. Dans ce dernier cas, le problème peut encore être résolu.
Tout cela est nécessaire, puisque la LSB (Linux Standard Base) exige qu'il existe un moment au cours du processus d'amorçage où les fonctions réseau de base sont considérées comme installées et capables de démarrer des services de réseau construits sur celles-ci.
Sont obligatoires les interfaces des périphériques enregistrés dans le fichier /etc/sysconfig/network/config avec la valeur MANDATORY_DEVICES.
Lorsque cette variable est vide, le script réseau la détermine au moyen des fichiers de configuration existants. Tous les fichiers de configuration, qu'il s'agisse de « bus-pcmcia » ou de « bus-usb », du mode de démarrage à chaud (« hotplug »), manuel ou déconnecté, sont réputés OBLIGATOIRES.
Solution
Ce processus de détection automatique n'est qu'une solution d'urgence. Toutefois, il est permis d'avoir plus de fichiers de configuration que de périphériques. Il n'est alors évidemment pas possible de trouver un périphérique pour chaque fichier de configuration.
Pour ce cas, on peut donner une valeur à MANDATORY_DEVICES.
Pour cela, on peut indiquer le fichier de configuration du périphérique correspondant sans le préfixe ifcfg-. Vous trouvez le fichier de périphérique dans le répertoire /etc/sysconfig/network. Dans l'exemple suivant, il porte le nom ifcfg-eth-id-00:03:04:3b:4b:51. La déclaration se fait ainsi :
MANDATORY_DEVICES="eth-id-00:03:04:3b:4b:51"
Lorsque la valeur MANDATORY_DEVICES est vide, les périphériques dont détectés automatiquement.
Si l'on souhaite ne déclarer aucun périphérique comme étant nécessaire, la valeur doit contenir un espace :
MANDATORY_DEVICES=" " <keyword>mandatory,interfacesréseau,waiting,dhcp,attendre,démarrage,hotplug</keyword>