Das Mounten des freigegebenen Ordners von Virtualbox über fstab schlägt fehl. funktioniert, sobald der Startvorgang abgeschlossen ist

41

Ich habe Ubuntu 13.10 in Virtualbox 4.3 installiert. Der Hostcomputer ist Windows.

Ich habe ein paar freigegebene Virtualbox-Ordner, die von / etc / fstab bereitgestellt werden. Bis vor kurzem funktionierte dieses Setup einwandfrei, aber nach dem Upgrade von Ubuntu 13.04 und Virtualbox 4.2 (im Wesentlichen zur gleichen Zeit) funktionierte das Mounten der fstab nicht mehr. Beim Booten wird folgende Fehlermeldung angezeigt:

An error occurred while mounting /home/benme/Documents.
keys:Press S to skip mounting or M for manual recovery

Das Drücken von M für die manuelle Wiederherstellung und das anschließende manuelle Bereitstellen schlägt ebenfalls fehl:

root@benme-vb:~# cd /home/benme
root@benme-vb:/home/benme# mount Documents
/sbin/mount.vboxsf: mounting failed with the error: No such device

Aber wenn ich stattdessen das Mounten während des Bootens überspringe, auf den Start von Unity warte und dann manuell in einer Shell mounte, funktioniert alles einwandfrei:

benme-vb ~ % ls Documents
benme-vb ~ % sudo mount Documents
[sudo] password for benme: 
benme-vb ~ % ls Documents
    # actual file list omitted

Beachten Sie, dass ich beim manuellen Mounten alle Optionen von / etc / fstab übernehmen lasse und es funktioniert. Dies deutet darauf hin, dass es sich um eine Art Zeitproblem handelt, bei dem Virtualbox nicht "bereit" ist, die Mounts für gemeinsam genutzte Dateien an dem Punkt bereitzustellen, an dem / etc / fstab-Mounts während des Startvorgangs ausgeführt werden.

Hier ist der Vollständigkeit halber die fstab-Zeile:

Documents       /home/benme/Documents   vboxsf  uid=benme,gid=benme,dmode=774,fmode=664     0   0

Kann ich auf Ubuntu-Seite etwas dagegen tun? Oder weiß zufällig jemand mehr darüber aus der Sicht der Virtualbox?

Ich habe einen alten Bericht über den Virtualbox-Bug-Tracker mit identischen Symptomen gefunden, aber in diesem Fall hatte der Benutzer Virtualbox aktualisiert, ohne seine Gastzugaben zu aktualisieren und das Problem zu beheben. Das passiert hier nicht, ich habe definitiv die 4.3-Gastzusätze installiert.

Ben
quelle

Antworten:

46

Ich habe dieses Problem auch befallen. Ich /var/wwwmounte mit der VBox-Funktion für freigegebene Ordner, was ziemlich ärgerlich war.

Die Lösung, die ich gefunden habe, bestand darin, das vboxsfModul vor dem Mounten von Dateisystemen frühzeitig zu laden. Fügen Sie einfach vboxsfeine eigene Zeile hinzu /etc/modules.

Eine andere Lösung besteht darin, noauto einzuschalten /etc/fstabund die Laufwerke manuell einzubinden. /etc/rc.localDies war jedoch keine so gute Lösung für mich, da Apache zu diesem Zeitpunkt bereits gestartet wurde und nichts in finden konnte /var/www.

Richard Turner
quelle
1
genial! Das Hinzufügen zu / etc / modules hat perfekt funktioniert. danke Richard!
ThePosey
@ThePosey Freut mich geholfen zu haben!
Richard Turner
Dies war ein Problem für mich auf Ubuntu Server 14.04 Gast. Und diese Antwort (die / etc / modules-Lösung) hat es für mich gelöst. Vielen Dank! PS Übrigens, wenn Sie zufällig versuchen, Dinge herauszufinden / zu beheben, aktiviert Auto-Mount in Virtualbox-Einstellungen, deaktivieren Sie es wieder;)
Reinis
2
@ Qodeninja Wie ich in meinem zweiten Absatz sagte: "Fügen Sie einfach vboxsfeine eigene Zeile in /etc/modules.
Richard Turner
1
Ich musste vboxguest und vboxsf zu / etc / modules auf einem Ubuntu 14.04-Gastsystem hinzufügen, damit dies funktioniert.
Mattanja
21

Zusätzlich zu Richard Turners Vorschlag, vboxsfeine eigene Zeile zu ergänzen /etc/modules, schlage ich vor, die _netdevmount-Option hinzuzufügen /etc/fstab. Ich habe es auf Ubuntu 12.04 LTS getestet und dies scheint genau die richtige Verzögerung hinzuzufügen, damit das Mount erfolgreich ist.

Mein /etc/fstabEintrag:

dev /media/dev vboxsf defaults,_netdev 0 0

deoren
quelle
4
Das funktioniert bei mir auch ohne Turner-Lösung. Sinnvoll ist auch, dass auf der Hilfeseite der Ubuntu-Community für fstab-Optionen steht: " _netdev- Dies ist ein Netzwerkgerät. Hängen Sie es nach dem Aufrufen des Netzwerks ein." Ich habe nicht haben zu laden vboxsfin /etc/modulesnur Zugabe _netdevgearbeitet!
Mark Mikofski
1
Dies funktioniert auch für Ubuntu 16.04, auch ohne Turner-Lösung.
Zhenya,
5

Richards Fix funktionierte nach dem letzten Update (VirtualBox 4.3.18, Ubuntu 14.04) nicht mehr für mich. Zum Glück konnte ich das Problem beheben, indem ich vboxsfden Kernel richtig geladen habe:

# echo "vboxsf" >> /etc/initramfs-tools/modules
# update-initramfs -u

Der erste Befehl fügt einen Parameter hinzu, um das Modul in den Kernel zu laden, und der zweite Befehl aktualisiert das init-Dateisystem. Nach einem Neustart konnte ich meine fstab-mounts wieder benutzen :)

Warnung: Der Startvorgang kann einfrieren, wenn ein freigegebener Ordner nicht bereitgestellt werden kann. Testen Sie daher Ihre Konfiguration, bevor Sie das Modul zu initramfs hinzufügen. Wenn Ihr System trotzdem hängt, können Sie im Wiederherstellungsmodus booten, um das Problem zu beheben.

Torben
quelle
Ich habe diese Lösung versucht, um das vboxsfModul früher zu laden ... Es hat meine Startsequenz eingefroren, sodass ich es entfernen musste.
Rerito
Ja, einschließlich des Moduls, das den Startvorgang möglicherweise vorzeitig einfriert, wenn die Konfiguration Ihres freigegebenen Ordners fehlerhaft ist. Allerdings habe ich noch nie ein Einfrieren des Bootens mit einer korrekten Konfiguration erlebt ...
Torben
Ich habe der Antwort eine Warnung hinzugefügt, um die Dinge klarer zu machen.
Torben
4

Ich wollte nur sagen, dass es vboxsfmir geholfen hat , das Modul vorzeitig zu laden (wie in Richard Turners Antwort), aber die fstab-Zeile funktionierte immer noch nicht für mich.

Am Ende habe ich den Befehl mount (der funktioniert hat) eingegeben /etc/rc.local. Ein bisschen hacken, aber es hat funktioniert.

ezuk
quelle
1
Ich verstehe nicht, wie Richard Turners Vorschlag "Ihnen geholfen hat", aber gleichzeitig hat die fstab-Zeile "bei Ihnen immer noch nicht funktioniert" ...?
j_random_hacker
4

Mit dem freigegebenen Ordner in fstab stelle ich fest, dass der Start hängen bleibt, wenn versucht wird, ihn mit VirtualBox 5 und Ubuntu 14.04 zu mounten. Die Lösung scheint darin zu bestehen, das Mounten zu verzögern, bis der GuestAddition-Service verfügbar ist (Richard Turners /etc/modulesLösung schien mir nicht genug zu sein).

Stellen Sie dazu sicher, dass Sie noautoals Optionen für den freigegebenen Ordner in haben /etc/fstab. Zum Beispiel für einen freigegebenen Ordner mit dem Namen vmshare:

vmshare    /home/user/share    vboxsf    defaults,noauto    0    0

Fügen Sie dann eine Zeile hinzu, /etc/rc.localum die Freigabe nach dem Booten bereitzustellen:

mount vmshare
Kevin Sadler
quelle
Dies war die einzige Lösung, die mit VBox 5.0.16 und Ubuntu 14.04
TJ Compton,
3

Es sieht so aus, als ob der Alias vboxsffehlt fs-vboxsf(so werden Kernel-Module automatisch geladen, wenn dieser Dateisystemtyp zum ersten Mal gemountet wird). Das Hinzufügen des Alias ​​in /etc/modprobe.dsollte also den Trick machen:

$ echo "alias fs-vboxsf vboxsf" | sudo tee /etc/modprobe.d/vboxsf.conf
hyperair
quelle
Ich habe es nicht selbst versucht, aber es sieht vielversprechend aus.
j_random_hacker
2

Ich hatte das gleiche Problem und arbeitete die vorgeschlagenen Lösungen durch, aber ohne Erfolg. Torbens Lösung hat den Kofferraum eingefroren und musste ihn daher rückgängig machen. Dann dachte ich , ich sollte beheben /etc/fstabverwenden sudo mount -a. Die Syntax meines Eintrags sah perfekt aus, schlug aber dennoch fehl. Ich war auch in der Lage, das filesysten mit dem Einfassungsbefehl im Terminalfenster manuell einzuhängen.

Was ich fand, ist, dass ich Leerzeichen zwischen den ersten beiden Parametern hatte (Gerät und Mount-Punkt). Ich habe sie durch einen Tab ersetzt und es funktioniert. Ja wirklich?!!!!

svenyonson
quelle
Sind Sie sicher, dass es sich um zwei Leerzeichen handelt (ASCII-Code 32)? Denn eines oder mehrere davon sollten genau so gut sein wie ein Tabulatorzeichen. Manchmal gebe ich versehentlich nicht unterbrechende Leerzeichen ein, wenn ich meine Umschalttaste zu früh drücke, oder lasse sie zu spät los, während ich die Leertaste drücke. Sie sehen gleich aus, verwirren aber viele Anwendungen.
David Foerster
Alles, was ich weiß, ist, dass ich den gesamten Leerraum zurückgesetzt und einen einzelnen Tab eingefügt habe und es dann funktioniert hat.
svenyonson
Das Wechseln der Tabulatorplätze hat bei mir funktioniert. Meine vorhandene / etc / fstab enthielt Leerzeichen (soweit ich das beurteilen konnte) und ich habe sie genau repliziert. Die vorhandenen Zeilen hatten ein einzelnes Leerzeichen. Aber das Umschreiben von mir mit Tabs hat alles zum Laufen gebracht.
Jcaruso
Das hat für mich keine Arbeit, aber im Anschluss an Kevin Sadler Empfehlung der Verwendung noautodann zu verzögern Montage Zugabe mount <sharename>zu rc.localdem Trick. Ich habe Turners Lösung nicht ausprobiert.
Mark Mikofski
1

Ich glaube, ich habe im Arch Wiki den richtigen Weg gefunden, um damit umzugehen . Verwenden Sie comment=systemd.automountOption.

Die obige Option geht in die /etc/fstabDatei mit den anderen Optionen ein. Zum Beispiel:

Fedora /var/ftp/pub/Fedora vboxsf uid=1001,gid=1001,comment=systemd.automount 0 0
ultracrepidarian
quelle
Das hat bei mir nicht funktioniert, aber die Antwort von Keven Sadlier .
Mark Mikofski