The wikis are now using the new authentication system.
If you did not migrate your account yet, visit https://idp-portal-info.suse.com/

SDB:Waiting for Mandatory Device

Aller à : navigation, rechercher


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>