Ein CIFS-Netzwerklaufwerk kann beim Start nicht bereitgestellt werden


22

Ich habe eine Freigabe in fstab hinzugefügt, um auf ein Netzwerklaufwerk mit all meinen Dateien zuzugreifen ... fstab sieht folgendermaßen aus:

proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
//192.168.1.73/disk1 /media/disk1 cifs username=pi,password=raspberry,_netdev,uid=1000,gid=1000,iocharset=utf8, 0 0
# a swapfile is not a swap partition, so no using swapon|off from here on, use dphys-swapfile swap[on|off] for that

Wenn ich sudo mount -adas Netzwerklaufwerk erfolgreich laufe , wird es gemountet und ich kann cd /media/disk1dann lseine Liste aller Ordner auf dem Netzwerklaufwerk richtig anzeigen.

Allerdings nach dem Neustart des pi, wenn ich cdan diesen Ort und lswieder laufen , ist nichts da. Ich muss sudo mount -anochmal manuell ausführen , was dann das Laufwerk einhängt.

Ich habe dies schon oft in anderen Foren gesehen, und der Konsens scheint zu sein, dass die Einhängevorgänge in fstab zu früh erfolgen - bevor das Netzwerk eingerichtet wurde. Ich habe versucht, die Dinge umzusetzen, die ich verstehe - aber um ehrlich zu sein, geht mir vieles über den Kopf. Ich habe _netdevder Zeile in fstab hinzugefügt, ich habe rootdelay=10in /boot/cmdline.txt hinzugefügt , ich habe den Netzwerkmanager installiert ... nichts davon hat geholfen.

Und so drehe ich mich zu dir, um den Pi aus dem Fenster zu werfen - gefolgt von mir. Jede Hilfe, sehr geschätzt.

Antworten:


9

Ich schlage vor, Sie fügen den Mount entweder dem Root-Verzeichnis oder Ihrem Benutzer crontab hinzu.

Angesichts der Tatsache, dass Sie derzeit sudo verwenden, scheint die Root-Crontab die am besten geeignete zu sein.

sudo crontab -e # zum Bearbeiten der Root-Crontab

Fügen Sie der Crontab einen @ Reboot-Eintrag hinzu. Du brauchst eine Leitung wie

@reboot (sleep 30; / bin / mount / media / disk1) &

Das wird 30 Sekunden warten, bevor die Festplatte gemountet wird.


1
Ich entschuldige mich für die dafür benötigte Zeit und hatte gerade erst die Gelegenheit, noch einmal damit herumzuspielen. Ich bin sehr erleichtert, dass Ihre Lösung perfekt funktioniert hat. Vielen Dank für Ihre Hilfe.
Luke Twomey

Dies ist sicher möglich, aber wie wird die Bereitstellung beim Herunterfahren prozedural aufgehoben?
Ciasto piekarz

14

Ich hatte auch das gleiche Problem hinsichtlich der automatischen Bereitstellung eines Netzwerklaufwerks beim Booten. Ich habe versucht, den mount -aBefehl /etc/rc.localnach der Bearbeitung hinzuzufügen, /etc/fstababer ohne Erfolg. Der Grund, warum es nicht funktioniert, ist, dass das Netzwerk nicht bereit ist, bevor das mount -aausgeführt wird.

Wie bereits erwähnt, besteht das Problem darin, dass fstab-Laufwerke bereitgestellt werden, noch bevor das Netzwerk aktiv ist. Um sicherzustellen, dass das Netzwerk während des Startvorgangs bereit ist, gibt es eine Option Wait for Network at Bootin raspi-config.

Lauf

sudo raspi-config

und setzen Sie die Wait for Network at BootOption auf Slow wait for network connection before completing bootund starten Sie neu. Natürlich kann die Startzeit beeinträchtigt sein, aber wenn dies nicht kritisch ist, kann diese Methode verwendet werden.

Nach dem Neustart können Sie überprüfen, ob das Netzwerklaufwerk automatisch gemountet wurde: schnelles Durchsuchen ls /media/DRIVE_NAMEoderdf


Dies ist sicherlich das Update , das für mich gearbeitet, mit rpi3 neuesten Updates ab November 2016
ChrisAdmin

Ich bevorzuge es, die /etc/rc.local mount -aLösung zu verwenden, aber vergiss nicht, zuerst zu schlafen. Siehe meine Antwort, die ich gerade hier gepostet habe: raspberrypi.stackexchange.com/a/63690/49091
Gabriel Staples

4

Aktualisieren Sie Notizen, da dies bei Google aufgetreten ist. Ich litt unter der gleichen Reihe von Frustrationen, als ich meine Airport Time Capsule bestieg. Ich verwende Raspberry Pi 3B + auf Rasbian Stretch, das am 14. März 2018 mit Standard-GUI veröffentlicht wurde.

Hier ist meine fstab Codezeile:

//100.10.10.1/Data /mnt/timecapsule cifs username=********, password=******, vers=1.0, rw, uid=1000, iocharset=utf8, sec=ntlm 0 0

Im Laufe der Zeit scheinen sich einige Änderungen ergeben zu haben:

  1. Sie müssen die Anweisung "vers = 1.0" hinzufügen
  2. _netdev macht nichts im CFIS-Dateisystem, funktioniert nur im NFS-Dateisystem (wie von Gabriel Staples unten angegeben)
  3. "user =" und "pass =" sollten jetzt "username =" bzw. "password =" sein
  4. Schließlich gibt es jetzt ein Kästchen "Warten auf Netzwerk", das im Raspberry Pi-Konfigurationsdienstprogramm angekreuzt werden kann und das mein Mount-Problem beim Booten behoben hat.

Nach 2 Tagen der Kämpfe ist meine nun endlich montiert und tut dies beim Booten!


1

Ein weiterer Trick, um dieses Problem zu lösen, besteht darin, /etc/rc.localden folgenden Befehl am Ende der Datei anzuhängen :

mount -a

Nach dem Neustart können Sie überprüfen, ob alles in Ordnung ist, indem Sie den folgenden Befehl eingeben:

df -h

und du wirst so etwas sehen:

pi@raspberrypi ~ $ df -h
File system      Dim. Usati Dispon. Uso% Montato su
/dev/root        7,2G  6,3G    584M  92% /
devtmpfs         119M     0    119M   0% /dev
tmpfs             25M  412K     25M   2% /run
tmpfs            5,0M     0    5,0M   0% /run/lock
tmpfs             49M     0     49M   0% /run/shm
/dev/mmcblk0p1    56M   20M     37M  36% /boot
//192.168.1.1/ws 466G  452G     14G  98% /mnt/winshare  <----------

0

Die _netdevOption in /etc/fstabscheint für cifs-Freigaben überhaupt nichts zu bewirken. Diese Ressource ( https://help.ubuntu.com/community/Fstab ) scheint zu bestätigen, dass, wenn "_netdev - dies ist ein Netzwerkgerät" angezeigt wird, es nach dem Aufrufen des Netzwerks bereitgestellt wird. Aufrufen bereitgestellt Nur gültig mit fstype nfs ".

Ich bevorzuge es, die /etc/rc.localDatei zu verwenden, um dies zu beheben, indem ich schlafe und dann darin aufrufe mount -a, anstatt crontaboder die Wait for network at bootOption in zu verwendenraspi-config . Um jedoch die bekommen /etc/rc.localfix an die Arbeit, vergessen Sie nicht zu schlafen, wie weiter unten erläutert.

Was ich getan habe, um dieses Problem zu beheben (auf meinem Pi3), ist zu ändern, /etc/rc.localum 20 Sekunden zu schlafen (durch Aufrufen sleep 20) und dann anzurufen mount -a. Auf diese Weise erzwinge ich, obwohl das Netzwerk noch NICHT verbunden ist, wenn das System die fstab-Datei zum ersten Mal liest, so dass der Ladevorgang fehlschlägt, hier 20 Sekunden zu warten (wobei dem Netzwerk Zeit zum Herstellen einer Verbindung gegeben wird) und dann mount -aerneut aufzurufen um alle Laufwerke in der fstabDatei zu mounten .

So /etc/rc.localsieht meine Datei jetzt aus:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
#GS notes: a *minimum* of sleep 10 is required for the mount below to work on the Pi 3; it failed with sleep 5, but worked with sleep 10, sleep 15, and sleep 30
sleep 20
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
  mount -a #GS: mount all drives in /etc/fstab
fi

exit 0

Getan! Es funktioniert jetzt perfekt für mich!

Verweise:


0

In meinem Fall, dass ich einen Raspberry Pi 3 gekauft und Raspbian Stretch installiert habe , habe ich meine fstab mit meiner bevorzugten Anordnung von Netzwerklaufwerken wie folgt bearbeitet :

//172.30.0.54/mnt/anim /mnt/share/Z cifs  username=frieza,password=meh,uid=1000,gid=1000,vers=2.0 0 0
//172.30.0.56/share/V /mnt/share/V cifs  username=goku,password=meh,uid=1000,gid=1000,vers=2.0 0 0
//172.30.0.56/share/M /mnt/share/M cifs  username=piccolo,password=meh,uid=1000,gid=1000,vers=2.0 0 0
//172.30.0.56/share/O /mnt/share/O cifs  username=drbrief,password=meh,uid=1000,gid=1000,vers=2.0 0 0
//172.30.0.56/share/R /mnt/share/R cifs  username=vegeta,password=meh,uid=1000,gid=1000,vers=2.0 0 0

Also wann immer ich benutzt habe:

sudo mount -a

Jeder Antrieb in fstab aufgelistet würde automatisch montieren, dann habe ich das zu rc.local und mehreren anderen Orten , so dass ich den Inhalt dieser Laufwerke beim Start genießen konnte, lange Geschichte kurz, nichts funktionierte , bis ich eine Linie zum hinzuzufügen entschieden Wurzel crontab wie von:

sudo crontab -e

Wählte meinen Editor (Nano in y Fall) Dann fügte diese Zeile am unteren Rand

@reboot (sleep 20;/bin/mount -a)&

In meinem Fall hat nach dem Neustart alles gut funktioniert. Hoffe das hilft euch raus.

HINWEIS:

Wenn Sie auf Probleme stoßen, können Sie immer Folgendes ausführen:

service cron status

Und es gibt Ihnen einen Hinweis darauf, was lief und was nicht


0

Sie können die Attribute _netdev und comment = systemd.automount in die fstab einfügen, und beim Neustart funktioniert alles einwandfrei . Ich hatte das gleiche Problem beim Neustart.

\\network_shared_location\directory /your_mount_location/mount_directory cifs _netdev,username=<your_username>,password=<your_password>,workgroup=<YOUR_WORKGROUP>,users,auto,user_xattr,comment=systemd.automount 0 0

-1

Ich weiß, dass dies eine etwas verspätete Antwort ist, aber ich hatte das gleiche Problem, und das lag daran, dass das Netzwerk nicht aktiv war, als das fstabangerufen wurde. Ich habe das crontaberste Mal versucht und es hat funktioniert, aber ich dachte, es wäre ein bisschen chaotisch ...

Hier gibt es einen tollen Beitrag , bei dem ein Skript verwendet wird init.d, um das Mount wie beim Booten auszuführen. Es funktioniert jetzt hervorragend für mich.


1
Können Sie Ihre Antwort geben die wesentlichen Details von Ihrem Link, im Falle künftiger bearbeiten Link Tod .
Greenonline,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.