Podłączenie folderu współdzielonego Virtualbox z fstab kończy się niepowodzeniem; działa po zakończeniu rozruchu

41

Mam Ubuntu 13.10 zainstalowany w Virtualbox 4.3. Komputer hosta to system Windows.

Mam kilka folderów współdzielonych Virtualbox montowanych przez / etc / fstab. Do niedawna ta konfiguracja działała dobrze, ale po aktualizacji z Ubuntu 13.04 i Virtualbox 4.2 (w zasadzie w tym samym czasie) montowanie fstab przestało działać. Podczas uruchamiania pojawia się następujący błąd:

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

Naciśnięcie M w celu ręcznego przywrócenia, a następnie próba ręcznego zamontowania również kończy się niepowodzeniem:

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

Ale jeśli zamiast tego pomiń montowanie podczas uruchamiania, poczekaj na uruchomienie Unity, a następnie podłącz ręcznie w powłoce, wszystko działa dobrze:

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

Zauważ, że kiedy montuję ręcznie, pozwalam montować wziąć wszystkie opcje z / etc / fstab i to działa. To sugeruje mi, że jest to jakiś problem z timingiem, w którym Virtualbox nie jest „gotowy” do zapewnienia udostępnionych montowań plików w punkcie / etc / fstab uruchamianym podczas uruchamiania.

Oto linia fstab, tylko dla kompletności:

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

Czy mogę coś z tym zrobić od strony Ubuntu? A może ktoś wie o tym więcej z perspektywy Virtualbox?

Znalazłem stary raport na temat śledzenia błędów Virtualbox z identycznymi objawami, ale w tym przypadku użytkownik zaktualizował Virtualbox bez aktualizacji swoich dodatków gości i rozwiązania tego problemu; to się nie dzieje tutaj, zdecydowanie mam zainstalowane dodatki dla gości 4.3.

Ben
źródło

Odpowiedzi:

46

Wystąpił też problem tego problemu. Zamontować /var/wwwza pomocą VBox wspólne działanie folderów, więc było to dość uciążliwe.

Rozwiązaniem, które znalazłem, było wymuszenie vboxsfwczesnego ładowania modułu, przed zamontowaniem systemów plików. Po prostu dodaj vboxsfwłasną linię /etc/modules.

Innym rozwiązaniem jest ustawienie noauto /etc/fstabi ręczne zamontowanie dysków /etc/rc.local, ale nie było to dla mnie tak dobre rozwiązanie, ponieważ do tego czasu Apache już się uruchomił i nie mógł nic znaleźć /var/www.

Richard Turner
źródło
1
niesamowite! dodawanie do / etc / modułów działało idealnie. dzięki Richard!
ThePosey
@ThePosey Cieszę się, że pomogłem!
Richard Turner
To był problem dla mnie na gościu Ubuntu Server 14.04. I ta odpowiedź (rozwiązanie / etc / modules) rozwiązała dla mnie. Dzięki! PS Btw, jeśli przypadkiem, próbując dowiedzieć się / naprawić rzeczy, włączyłem Auto-mount w ustawieniach Virtualbox, wyłącz go ponownie;)
Reinis
2
@qodeninja Jak powiedziałem w drugim akapicie: „Po prostu dodaj vboxsfwłasną linię /etc/modules.
Richard Turner
1
Musiałem dodać vboxguest i vboxsf do / etc / modułów systemu gościa Ubuntu 14.04, aby to działało.
mattanja
21

Oprócz sugestii Richarda Turnera, aby dodać vboxsfwłasną linię /etc/modules, sugeruję dodanie _netdevopcji mount do /etc/fstab. Testowałem na Ubuntu 12.04 LTS i wydaje się, że dodaje to odpowiednią ilość opóźnienia, aby mount mógł się powieść.

Mój /etc/fstabwpis:

dev /media/dev vboxsf defaults,_netdev 0 0

deoren
źródło
4
To działa dla mnie, nawet bez korzystania z rozwiązania Turnera. Miej też duży sens, ponieważ strona pomocy Ubuntu dla opcji fstab mówi: „ _netdev- to urządzenie sieciowe, zamontuj je po uruchomieniu sieci”. I nie , nie trzeba ładować vboxsfw /etc/modules, wystarczy dodać _netdevpracował!
Mark Mikofski
1
To działa również dla mnie na Ubuntu 16.04, nawet bez rozwiązania Turnera.
Żenia
5

Poprawka Richarda przestała działać dla mnie po ostatniej aktualizacji (VirtualBox 4.3.18, Ubuntu 14.04). Na szczęście udało mi się to naprawić, ładując się vboxsfbezpośrednio z jądrem:

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

Pierwsze polecenie dodaje parametr, aby załadować moduł do jądra, a drugie aktualizuje system plików init. Po ponownym uruchomieniu mogłem ponownie użyć moich mocowań fstab :)

Ostrzeżenie: Proces rozruchu może się zawiesić, jeśli nie można zamontować folderu współdzielonego. Więc przetestuj swoją konfigurację, zanim dodasz moduł do initramfs. Jeśli mimo to system się zawiesi, możesz uruchomić system w trybie odzyskiwania, aby rozwiązać problem.

Torben
źródło
Próbowałem tego rozwiązania, aby załadować vboxsfmoduł wcześniej ... Po prostu zamroził moją sekwencję rozruchową, więc musiałem go usunąć.
Rerito
Tak, w tym moduł, który wcześnie może zawiesić proces rozruchu, jeśli konfiguracja folderu udostępnionego jest zepsuta. Jednak nigdy nie doświadczyłem żadnego zawieszenia przy prawidłowej konfiguracji ...
Torben,
Do odpowiedzi dodałem ostrzeżenie, aby wszystko było bardziej zrozumiałe.
Torben
4

Chciałem tylko powiedzieć, że wymuszenie vboxsfwczesnego ładowania modułu pomogło mi (tak jak w odpowiedzi Richarda Turnera), ale linia fstab nadal nie działała dla mnie.

Skończyło się na tym, że umieściłem polecenie mount (które zadziałało) /etc/rc.local. Trochę hack, ale zadziałało.

ezuk
źródło
1
Nie rozumiem, w jaki sposób sugestia Richarda Turnera „pomogła ci”, ale jednocześnie linia fstab „nadal nie działała dla ciebie” ...?
j_random_hacker
4

Z folderu współdzielonego wymienionego w fstab widzę, że boot się zawiesi, gdy spróbuje go zamontować za pomocą VirtualBox 5 i Ubuntu 14.04. Wydaje się, że rozwiązaniem jest opóźnienie montażu, dopóki usługa GuestAddition nie będzie dostępna ( /etc/modulesrozwiązanie Richarda Turnera nie wydawało mi się wystarczające).

Aby to zrobić, upewnij się, że masz noautojako opcje udostępnionego folderu w /etc/fstab. Na przykład dla udostępnionego folderu o nazwie vmshare:

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

Następnie dodaj wiersz, /etc/rc.localaby zamontować udział po uruchomieniu:

mount vmshare
Kevin Sadler
źródło
To było jedyne rozwiązanie, które działało dla mnie, wykorzystując VBox 5.0.16 i Ubuntu 14.04
TJ Compton
3

Wygląda na to, że vboxsfbrakuje fs-vboxsfaliasu (tak właśnie moduły jądra są ładowane automatycznie podczas montowania tego typu systemu plików po raz pierwszy), więc dodanie aliasu /etc/modprobe.dpowinno załatwić sprawę:

$ echo "alias fs-vboxsf vboxsf" | sudo tee /etc/modprobe.d/vboxsf.conf
hiperaira
źródło
Sam tego nie próbowałem, ale wygląda obiecująco.
j_random_hacker
2

Miałem ten sam problem i pracowałem nad sugerowanymi rozwiązaniami, ale bez powodzenia. Rozwiązanie Torbena zamroziło bagażnik, więc musiał je cofnąć. Wtedy pomyślałem, że powinienem rozwiązać problem z /etc/fstabużywaniem sudo mount -a. Składnia mojego wpisu wyglądała idealnie, ale i tak się nie udało. Byłem także w stanie ręcznie zamontować plik fileysten za pomocą polecenia mount w oknie terminala.

Odkryłem, że mam spacje między dwoma pierwszymi parametrami (urządzeniem i punktem montowania). Zastąpiłem je kartą i działa. Naprawdę?!!!!

svenyonson
źródło
Czy na pewno były to dwa znaki spacji (kod ASCII 32)? Ponieważ co najmniej jeden z nich powinien być tak samo dobry jak znak tabulacji. Czasami przypadkowo wpisuję niełamliwe znaki spacji, kiedy naciskam klawisz Shift, aby wcześnie lub zwalniam go zbyt późno, naciskając spację. Wyglądają tak samo, ale mylą wiele aplikacji.
David Foerster,
Wiem tylko, że przesunąłem się wstecz na całą białą przestrzeń i wstawiłem pojedynczą kartę, a potem zadziałało.
svenyonson
Dla mnie zadziałało przełączanie spacji na karty. Mój istniejący plik / etc / fstab zawierał spacje (o ile mogłem powiedzieć) i dokładnie je odtworzyłem. Istniejące linie miały jedną spację. Ale ponowne napisanie mojego z zakładkami sprawiło, że wszystko działało.
jcaruso
To nie dla mnie, ale po rekomendacji Kevin Sadler korzystania noautoopóźnić montażu następnie dodając mount <sharename>do rc.localzałatwiło sprawę. Nie wypróbowałem rozwiązania Turnera.
Mark Mikofski
1

Myślę, że znalazłem właściwy sposób, aby sobie z tym poradzić w Arch Wiki . Użyj comment=systemd.automountopcji.

Powyższa opcja wchodzi do /etc/fstabpliku z innymi opcjami. Na przykład:

Fedora /var/ftp/pub/Fedora vboxsf uid=1001,gid=1001,comment=systemd.automount 0 0
ultrakrepidarian
źródło
Nie działało to dla mnie, ale odpowiedź Kevena Sadliera .
Mark Mikofski