SDB:Waiting for Mandatory Device

aus openSUSE, der freien Wissensdatenbank


Version: 9.1

Symptom

Sie erhalten während des Bootvorgangs die Meldung: ...waiting for mandatory device...

Ursache

Das Script /etc/init.d/network richtet durch das Kommando ifup nur vorhandene Netzwerkinterfaces ein; dadurch werden keine Treiber geladen (so wie früher mittels eines alias-Eintrags in der Datei modprobe.conf). Dies geschieht seit den SUSE LINUX Versionen 9.1/SLES9 somit genau andersherum als früher.

Vorhandene Hardware wird ermittelt bzw. vom Kernel gemeldet. Dies löst die Initialisierung der Hardware aus (meist Module laden), dadurch werden Netzwerk-Schnittstellen registriert. Diese werden dann entweder mittels der Skripte hotplug oder rcnetwork eingerichtet.

Weitere Hintergrundinformationen dazu finden Sie in den Artikeln

SDB:SUSE Linux Geräte- und Schnittstellenkonfiguration

sowie

SDB:Überblick über das SUSE Linux Hotplug System

Da dies asynchron abläuft, ist nicht sichergestellt, daß schon alle Schnittstellen vorhanden sind, wenn das Netzwerkscript gestartet wird. Deshalb wartet das Script bei Bedarf auf noch fehlende Schnittstellen, die als notwendig (mandatory) gelten. Außerdem wartet es auch noch darauf, daß vorhandene Schnittstellen vollständig eingerichtet werden (z.B. warten auf die DHCP Adresse).

Erst wenn alle notwendigen Schnittstellen erfolgreich eingerichtet wurden, meldet das Netzwerkscript Erfolg.
Damit dies nicht endlos läuft, gibt es einen Timeout-Wert in der Datei /etc/sysconfig/network/config

WAIT_FOR_INTERFACES="20"

Wenn der Timeout abgelaufen ist, gibt es zwei Fehlerfälle:

  • 1) " No interface found" D.h. es wurde kein Interface gefunden, das zu dieser HW-description gehört. Entweder ist das (Hotplug-)Gerät nicht vorhanden, das Gerät konnte nicht initialisiert werden, oder die automatische Ermittlung notwendiger Geräte ist unpassend.
  • 2) " interface could not be set up" Das Interface ist vorhanden, aber konnte nicht (vollständig) aufgesetzt werden. Entweder, weil keine Konfiguration gefunden wurde, oder weil z.B. ein mit dhcp aufgesetztes Interface noch keine Adresse bekommen hat. In letzterem Fall kann sich das noch erledigen.

Dies alles ist notwendig, da die LSB (Linux Standard Base) einen Zeitpunkt im Bootvorgang verlangt, zum dem die Netzwerkgrundfunktionen als eingerichtet gelten und darauf aufbauende Netzwerkdienste starten können.

Als notwendig gelten die Schnittstellen der Geräte, die in der Datei /etc/sysconfig/network/config beim Wert MANDATORY_DEVICES eingetragen sind.

Wenn diese Variable leer ist, dann ermittelt das Netzwerkscript diese anhand vorhandener Konfigurationen. Es werden alle Konfigurationen, die weder "bus-pcmcia" oder "bus-usb" sind, noch den Startmode hotplug, manual oder off haben als MANDATORY gewertet.

Lösung

Diese automatische Ermittlung ist nur eine Notlösung. Denn es ist erlaubt, daß mehr Konfigurationen als Geräte vorhanden sind. Dann kann natürlich nicht zu jeder Konfiguration ein Gerät gefunden werden.

In diesem Fall kann man den Wert MANDATORY_DEVICES setzen.

Es ist hierbei erlaubt, die entsprechenden Geräte-Konfigurationsdatei ohne das anführende ifcfg- anzugeben. Die Gerätedatei finden Sie im Verzeichnis /etc/sysconfig/network. Sie hat in folgendem Beispiel Beispiel den Namen: ifcfg-eth-id-00:03:04:3b:4b:51. Einzutragen ist in diesem Fall folgendes:

MANDATORY_DEVICES="eth-id-00:03:04:3b:4b:51"
 Wenn der Wert MANDATORY_DEVICES leer ist, werden die Geräte automatisch
 ermittelt.
Will man gar keine Geräte als notwendig erklären, sollte der Wert eine Leerstelle enthalten:

MANDATORY_DEVICES=" "