![Linux NFS-Mount nach erfolgreicher Verbindung zum Netzwerk](https://rvso.com/image/1607066/Linux%20NFS-Mount%20nach%20erfolgreicher%20Verbindung%20zum%20Netzwerk.png)
Ich habe ein kleines eingebettetes (Mips-)Gerät, auf dem ein sehr leichtes Linux läuft.
Es ist in der Lage, NFS-Freigaben zu mounten (manuell durchmontierenBefehl).
Ich möchte es jedoch automatisch mounten, daher habe ich es imfstabDatei.
Das Problem besteht darin, dass für das Gerät zum Zeitpunkt der Verarbeitung von fstab keine Verbindung verfügbar ist:
mount: mounting 10.1.1.1:/srv/fs on /nfs failed: Input/output error
Anschließend fährt das System mit dem Booten fort (initialisiert das WLAN-Modul, verbindet sich mit dem AP und fragt die IP-Adresse ab mitAbonnieren.
Nachdem udhcpc erfolgreich die IP-Adresse erhalten hat, kann ich Folgendes ausführen:
mount -a
und /nfs wird erfolgreich gemountet.
Wie kann ich fstab anweisen, zu warten und es ständig erneut zu versuchen?
Bitte beachten Sie, dass dies ein abgespecktes Linux ist. Es sind keine systemd- oder ifup-Skripte verfügbar.
Natürlich kann ich beim Booten ein Skript ausführen, das „mount -a“ ständig ausführt, bis es erfolgreich ist, aber das ist die Methode der rohen Gewalt und ich suche nach einer ausgefeilteren Lösung, falls es eine solche gibt.
Antwort1
Die übliche Lösung besteht darin,der DHCP-Clientinformiert Sie, nachdem die Konfiguration des Netzwerks abgeschlossen ist. Die meisten DHCP-Clients können zu diesem Zweck „Hook“-Shellskripte starten, ebenso wie udhcpc. LautDokumentation,
Wenn ein Ereignis eintritt, ruft udhcpc das Aktionsskript auf. Das Skript ist standardmäßig/usr/share/udhcpc/default.scriptDies kann jedoch über die Befehlszeilenargumente geändert werden. Die drei möglichen Argumente für das Skript sind: [...]
gebunden: Dieses Argument wird verwendet, wenn udhcpc von einem ungebundenen in einen gebundenen Zustand wechselt. Alle Parameter werden in Umgebungsvariablen festgelegt. Das Skript sollte die Schnittstelle konfigurieren und alle anderen relevanten Parameter festlegen (Standard-Gateway, DNS-Server usw.).
Dies bedeutet, dass Sie einfach ein Shellskript an der richtigen Stelle platzieren können (verwenden Sie die --script
Option bei Bedarf) und es Ihre Mounts starten lassen können, wenn es mit dem $1
auf gesetzten Parameter aufgerufen wird bound
.
#!/bin/sh
if [ "$1" = bound ]; then
mount -a
fi