VirtualBox: mount.vboxsf: montaż nie powiódł się z powodu błędu: nie ma takiego urządzenia [zamknięte]

160

Używam VirtualBox z OS X jako hostem i CentOS na maszynie wirtualnej gościa.

W utworzonym folderze OS XI myfolder, dodałem go jako folder współdzielony do maszyny wirtualnej, włączyłem maszynę wirtualną, w folderze utworzonym przez CentOS /home/user/myfolderi wpisując:

sudo mount -t vboxsf myfolder /home/user/myfolder

i mają wyjście:

/sbin/mount.vboxsf: mounting failed with the error: No such device

Co robię źle?

AKTUALIZACJA:

Guest Additions zainstalowany.

cnaize
źródło
Upewnij się, że dodatki dla gości są poprawnie zainstalowane, może być konieczne wykonanie sudo apt-get upgrade; sudo apt-get install build-essential moduł-pomocnik; sudo ma przygotować; Musisz zobaczyć, jak budowany jest moduł Guest Aditions ...
ntg
9
Do przypadkowego internauty, który ma ten problem: zrób sobie przysługę i spójrz na drugą odpowiedź.
jrharshath
4
wskazówka - sudo mount -t vboxsf sf_folder /home/user/foldertutaj nazwy sf_folderi folder MUSZĄ być różnymi
zapisz
5
@jrharshath Która odpowiedź jest „drugą odpowiedzią”? Sortowanie może się zmienić. Kliknij shareodpowiedź, aby uzyskać bezpośredni link.
wisbucky

Odpowiedzi:

167

Mój folder współdzielony / schowek przestał działać z jakiegoś powodu (prawdopodobnie z powodu instalacji poprawki na mojej maszynie wirtualnej).

sudo mount -t vboxsf Shared_Folder ~/SF/

Dał następujący wynik:

VirtualBox: mount.vboxsf: mounting failed with the error: No such device

Rozwiązaniem dla mnie było zatrzymanie vboxadd i wykonanie konfiguracji po tym:

cd /opt/VBoxGuestAdditions-*/init  
sudo ./vboxadd setup
Maty
źródło
1
Po uaktualnieniu mojej maszyny wirtualnej z Ubuntu 12.04 do Ubuntu 14.04 moje foldery współdzielone były puste w maszynie wirtualnej i podczas próby ręcznego zamontowania wystąpił błąd /sbin/mount.vboxsf: mounting failed with the error: No such device. Po uruchomieniu powyższego i ponownym uruchomieniu systemu, moje udostępnione foldery pojawiły się tak, jak przed aktualizacją… dzięki!
Angelo
Problem występuje nadal na VirtualBox 5.0.18 z gościem Ubuntu 16.04 i to rozwiązanie działało dla mnie.
Ivan Perez
7
jak zatrzymać vboxadd?
aristofun
1
Dzięki! Musiałem też zainstalować wtyczkę vagrant-vbguest - stackoverflow.com/a/23752848/2043134
thomas_inckx
1
@aristofun @ brainmurphy1: w tym samym katalogu, wcześniej sudo ./vboxadd setupmożesz to zrobić sudo ./vboxadd stop. Nie jestem pewien, czy nadal jest to konieczne, ale domyślam się, że to właśnie oznacza to zdanie.
hraban
77

Używasz folderów współdzielonych, więc musisz zainstalować dodatki VirtualBox Guest Additions na maszynie wirtualnej, aby obsługiwać tę funkcję.

Włóczęga

Jeśli używasz Vagrant (OS X :)brew cask install vagrant , uruchom:

vagrant plugin install vagrant-vbguest
vagrant vbguest

W przypadku niepowodzenia sprawdź logi, np

vagrant ssh -c "cat /var/log/vboxadd-install.log"

Może po prostu brakuje Ci plików nagłówkowych jądra.

VM

Wewnątrz maszyny wirtualnej należy zainstalować dodatki gościa, nagłówki jądra i uruchomić usługę oraz dokładnie sprawdzić, czy rozszerzenie jądra jest uruchomione.

Zależy to od systemu operacyjnego gościa, więc oto krótkie kroki:

  1. Zainstaluj nagłówki jądra (wymagane przez VBoxLinuxAdditions).

    • RHEL: sudo apt-get update && sudo apt-get install kernel-devel
    • CentOS: sudo yum update && sudo yum -y install kernel-headers kernel-devel
  2. Zainstaluj dodatki dla gości (zależy to od systemu operacyjnego).

    • Ubuntu: sudo apt-get -y install dkms build-essential linux-headers-$(uname -r) virtualbox-guest-additions-iso

      Jeśli nie możesz go znaleźć, sprawdź aptitude search virtualbox.

    • Debian :sudo apt-get -y install build-essential module-assistant virtualbox-ose-guest-utils

      Jeśli nie możesz go znaleźć, sprawdź dpkg -l | grep virtualbox.

    • ręcznie, pobierając plik iso wewnątrz maszyny wirtualnej (np. wget) i instalując go, np

      1. wget http://download.virtualbox.org/virtualbox/5.0.16/VBoxGuestAdditions_5.0.16.iso -P /tmp
      2. sudo mount -o loop /tmp/VBoxGuestAdditions_5.0.16.iso /mnt
      3. sudo sh -x /mnt/VBoxLinuxAdditions.run # --keep

        Dodatkowy debug: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

  3. Dokładnie sprawdź, czy rozszerzenia jądra są uruchomione i działają:

    • sudo modprobe vboxsf
  4. Uruchom / uruchom ponownie usługę:

    • ręcznie: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup (dodajsudo sh -x do debugowania)
    • Debian: sudo /etc/init.d/vboxadd-service start
    • Fedora: sudo /etc/init.d/vboxdrv setup
    • CentOS: sudo service VBoxService start

Tworzenie głównego modułu dodatków dla gości

Jeśli powyższe nie zadziałało, oto bardziej wyrafinowane kroki, aby to naprawić. Zakłada się, że masz już zainstalowany VBoxGuestAdditions (jak pokazano powyżej).

Najczęstszy powód, dla którego montowanie folderu współdzielonego nie działa, może być związany z niepowodzeniem budowania modułu Guest Additions. Jeśli /var/log/vboxadd-install.logmasz następujący błąd:

Nie znaleziono nagłówków dla aktualnie działającego jądra.

oznacza to, że albo nie zainstalowałeś źródeł jądra, albo nie można ich znaleźć.

Jeśli zainstalowałeś je już zgodnie z instrukcją powyżej, uruchom to polecenie:

$ sudo sh -x /opt/VBoxGuestAdditions-5.0.16/init/vboxadd setup 2>&1 | grep KERN
+ KERN_VER=2.6.32-573.18.1.el6.x86_64
+ KERN_DIR=/lib/modules/2.6.32-573.18.1.el6.x86_64/build

Zasadniczo vboxaddskrypt oczekuje, że źródła jądra będą dostępne w następującym katalogu:

ls -la /lib/modules/$(uname -r)/build

Sprawdź, czy katalog jądra istnieje (dowiązanie symboliczne wskazuje na istniejący folder). Jeśli tak nie jest, zainstaluj je w odpowiednim folderze (np. W/usr/src/kernels ).

Więc vboxaddskrypt może wejść do katalogu ze źródłami jądra i uruchomić make kernelrelease, pobrać wartość i porównać z bieżącą wersją jądra.

Oto logika:

KERN_VER=`uname -r`
KERN_DIR="/lib/modules/$KERN_VER/build"
if [ -d "$KERN_DIR" ]; then
    KERN_REL=`make -sC $KERN_DIR --no-print-directory kernelrelease 2>/dev/null || true`
    if [ -z "$KERN_REL" -o "x$KERN_REL" = "x$KERN_VER" ]; then
        return 0
    fi
fi

Jeśli wersja jądra nie pasuje do źródeł, być może musisz zaktualizować jądro Linuksa (w przypadku, gdy źródła są nowsze niż jądro).

CentOS

Próbować:

vagrant plugin install vagrant-vbguest vagrant vbgues

Jeśli nie zadziała, wypróbuj następujące ręczne kroki dla CentOS:

$ sudo yum update
$ sudo yum install kernel-$(uname -r) kernel-devel kernel-headers # or: reinstall
$ rpm -qf /lib/modules/$(uname -r)/build
kernel-2.6.32-573.18.1.el6.x86_64
$ ls -la /lib/modules/$(uname -r)/build
$ sudo reboot # and re-login
$ sudo ln -sv /usr/src/kernels/$(uname -r) /lib/modules/$(uname -r)/build
$ sudo /opt/VBoxGuestAdditions-*/init/vboxadd setup
kenorb
źródło
1
RE poprawka CentOS, rozwiązała mój problem, ale upewnij się, że masz zainstalowane gcc.
ggdx
1
Używając Chef's Test Kitchen (Vagrant), instalacja wtyczki vagrant vagrant-vbguest zadziałała dla mnie
pfernandom
W moim przypadku to dlatego, że GuestAdditions nie były takie same zadeklarowane między Vagrantem a Guestem.
AnthonyB
1
vagrant plugin install vagrant-vbguest vagrant vbguestdziała również na centos 7 i rozwiązał problem. Dzięki
Med Ali Difallah
55

Jestem w stanie rozwiązać ten problem, uruchamiając poniższe polecenie

modprobe -a vboxguest vboxsf vboxvideo

Atul N
źródło
Ten sam problem wystąpił na moim gościu vbox5.0.6 i Centos 7. Problem polega na tym, że muszę to uruchamiać za każdym razem po (ponownym) uruchomieniu.
webbertiger
14
To działa, ponieważ są to moduły jądra, które potrzebujesz uruchomić na gościu, aby VirtualBox mógł poprawnie wykonywać wszystkie swoje funkcje. W szczególności vboxsfpotrzebne są tutaj foldery współdzielone VirtualBox. Możesz wymienić te 3 pliki po jednym w wierszu w pliku /etc/modules-load.d/(nazwij to może virtualbox.conf), aby ta zmiana była zachowana po ponownym uruchomieniu.
Two-Bit Alchemist
1
Uruchomienie tego polecenia gościa Debiana 8 spowodowało zniszczenie wyjścia wideo.
CodingWithSpike
23

Oprócz odpowiedzi @Mats , więcej informacji (pomogło mi to w Debianie 8).

Mój folder współdzielony / schowek przestał działać z jakiegoś powodu (prawdopodobnie z powodu instalacji poprawki na mojej maszynie wirtualnej).

sudo mount -t vboxsf Shared_Folder ~/SF/

Dał mi następujący wynik:

VirtualBox: mount.vboxsf: mounting failed with the error: No such device

Rozwiązaniem dla mnie było zatrzymanie vboxadd i wykonanie konfiguracji po tym:

cd /opt/VBoxGuestAdditions-*/init 
sudo ./vboxadd setup

W tym momencie, jeśli nadal pojawia się następujący błąd:

Nie ma takiego urządzenia. Instalacja dodatków dla gości mogła się nie powieść. Błąd został zalogowany/var/log/vboxadd-install.log

Musisz zainstalować nagłówki linux:

apt-get install linux-headers-$(uname -r)

następnie możesz zainstalować dodatki dla gości:

sh /media/cdrom/VBoxLinuxAdditions.run --nox11

i zrestartuj Linuksa przez:

reboot

wtedy będziesz mógł zamontować swój udostępniony folder!

mount -t vboxsf Shared_Folder ~/SF/

Więcej informacji (po francusku), sprawdź tę stronę .

Froggiz
źródło
3
apt-get install linux-headers-virtualpomógł z Lubuntu 15.04 na VirtualBox
fider
/ media / cdrom w moim przypadku jest puste
CCC
Czy kliknąłeś opcję Zainstaluj dodatki dla gości w menu Urządzenia?
Froggiz
9

Zostało to rozwiązane przez:

yum install gcc kernel-devel make

obejście jest tutaj: https://gist.github.com/larsar/1687725

cnaize
źródło
Uruchomiłem wszystkie aktualizacje bez powodzenia. Przepraszamy, odpowiedź z 13 pozytywnymi głosami zadziałała lepiej
Andrew Shatnyy
Używam hosta Windows 7 z RHEL 7 i to rozwiązało problem (w tym informacje z linku do istoty) - Dziękuję!
Chris Townsend,
W Ubuntu to zadziałało: sudo apt-get install build-essential linux-headers- uname -rdkms
cstroe
4
@AndrewShatnyy „odpowiedź z 13 głosami pozytywnymi” jest niejednoznaczna. Proszę zamieścić link bezpośredni do odpowiedzi, do której się odnosisz (kliknijshare
Opublikuj link bezpośredni
1
@wisbucky, racja, przepraszam. stackoverflow.com/a/29456128/849187 pracował już dwa razy
Andrew Shatnyy
6

Folder współdzielony wcześniej działał dla mnie, ale nagle przestał działać (Virualbox - hostem był Windows 7, Guest to OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

wtedy mount -t vboxsf testsf /opt/tsf ( testsfbył to folder na dysku Windows C, który został dodany do folderu współdzielonego Virtualbox --- i /opt/tsfjest folderem w OpenSuse

MAlam
źródło
5

Mój host to Windows10, mój gość VM to ubuntu build by vagrant. To zadziałało dla mnie:

vagrant plugin install vagrant-winnfsd
Kaiacode
źródło
3

Miałem też działający system, który nagle przestał działać z opisanym błędem.

Po przeczesaniu się po moim / lib / modules wydaje się, że vboxvfsmodułu już nie ma. Zamiast tego modprobe vboxsfbyło wymagane zaklęcie, aby wszystko zaczęło się od nowa.

Nie jestem pewien, kiedy nastąpiła ta zmiana, ale mnie zaskoczyła.

Tim N
źródło
1
U mnie zadziałało po uruchomieniu `sudo modprobe vboxsf`
Viorel Mirea
3

Używam VirtualBox 5.1.20 i miałem podobny problem. Oto adres URL do miejsca, w którym znalazłem poprawkę i poprawkę, którą zaimplementowałem:

# https://dsin.wordpress.com/2016/08/17/ubuntu-wrong-fs-type-bad-option-bad-superblock/
if [ "5.1.20" == "${VBOXVER}" ]; then
  rm /sbin/mount.vboxsf
  ln -s /usr/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
fi

Link miał coś podobnego do /usr/lib/VBoxGuestAdditions/other/mount.vboxsf, a nie to, co mam w fragmencie skryptu.

W przypadku skryptu kompilacji, którego używam w włóczęgach do dodatków:

https://github.com/rburkholder/vagrant/blob/master/scripts/additions.sh

Wydaje się, że jest to poprawka na https://www.virtualbox.org/ticket/16670

Raymond Burkholder
źródło
3

Rozwiązaniem dla mnie było, aby aktualizować dodatki gości

(kliknij Urządzenia -> Wstaw obraz CD z dodatkami dla gości)

Arch Linux Tux
źródło
2

    W dwóch scenariuszach mogą wystąpić błędy / nieprawidłowe podejście. Sprawdź oba i dowiedz się.

SCENARIUSZ 1:

      Po uruchomieniu VBoxLinuxAdditions.run lub VBoxSolarisAdditions.pkg lub VBoxWindowsAdditions.exe sprawdź, czy wszystkie moduły są poprawnie instalowane.

1.1.a. W przypadku VBoxLinuxAdditions , jeśli
budowa modułów jądra VirtualBox Guest Additions nie powiedzie się,
sprawdź plik dziennika w /var/log/vboxadd-install.log . Jeśli błąd jest spowodowany wersją jądra, zaktualizuj jądro i uruchom ponownie maszynę wirtualną. W przypadku Fedory ,
1.1.b. yum update jądro *
1.1.c.reboot
1.2. Jeśli nic nie zawodzi, wszystko jest w porządku. Masz już oczekiwaną wersję jądra

SCENARIUSZ 2:

     Jeśli VBoxGuestAdditions jest zainstalowany (sprawdź, czy folder / opt / VBoxGuestAdditions- * jest obecny .... * reprezentuje wersję), musisz go uruchomić przed zamontowaniem.

2.1. cd / opt / VBoxGuestAdditions - * / init && ./vboxadd start

      Musisz określić identyfikator użytkownika i identyfikator grupy użytkownika maszyny wirtualnej jako opcje polecenia mount.

2.2.a. Pobieranie UID i GID użytkownika:
      id -u <'user'>
      id -g <'user'>
2.2.b. Ustawianie UID i GID w opcjach polecenia mount:
      mount -t vboxsf -o uid = x, gid = x nazwa_folderu_wspólnionego guest_folder

yottabytt
źródło
2

U mnie na komputerze Mac okazało się, że mam na komputerze stary obraz VirtualBox, który nie miał metadanych, więc nie był aktualizowany do najnowszej wersji.

Ten stary obraz miał zainstalowaną starszą wersję wtyczki vbguest, z którą nowsza wtyczka vbguest na moim komputerze nie mogła działać.

Aby to naprawić, po prostu usunąłem obraz, na którym był oparty mój Vagrant, a następnie Vagrant pobrał nowszą wersję i działało dobrze.

# Remove an old version of the virtual box image that my vagrant was using    
$ vagrant box remove centos/7 

Możesz dowiedzieć się, które skrzynki buforujesz na swoim komputerze, uruchamiając:

$ vagrant box list

Zaktualizowałem również moją wtyczkę vbguest we wcześniejszych próbach uruchomienia tego, używając następującego procesu, ale nie sądzę, aby to pomogło. FYI!

# Get rid of old plugins
vagrant plugin expunge 

# Globally install the latest version of the vbguest plugin`
vagrant plugin install vagrant-vbguest 

Jeśli okaże się, że przy dodawaniu gościa nie powiedzie się, możesz spróbować wykonać następujące czynności, aby upewnić się, że wtyczki zostaną poprawnie zainstalowane. Spowoduje to pobranie najnowszego obrazu bazowego dla twojego systemu (dla mnie CentOS) i może rozwiązać problem (zrobił to dla mnie!)

$ vagrant box update
Brad Parks
źródło
1

W Ubuntu to zadziałało:

sudo apt-get install build-essential linux-headers-`uname -r` dkms
cstroe
źródło
1

Miał ten sam problem z VirtualBox 5.0.16 / rXXX

Zainstalowałem najnowszą wersję VirtualBox 5.0.18 i zainstalowałem najnowszą wersję Vagrant 1.9.3, problem powędrował.

AKS
źródło
1

Dodałem jako użytkownik root

/etc/rc.d/rc.local 
/root/mount-vboxsf.sh

następnie

chmod +x /etc/rc.d/rc.local

i przykładowy skrypt /root/mount-vboxsf.sh(ustaw własne opcje uid i gid)

modprobe -a vboxguest vboxsf vboxvideo
mount -t vboxsf NAME_SHARED_DIRECTORY /media/sf_NAME_SHARED_DIRECTORY -o rw,uid=0,gid=0

musisz dodać

chmod + /root/mount-vboxsf.sh
Diego Piccinini
źródło
0

Mam podobny problem, sprawdź nagłówek, jeśli nie pasuje, a następnie uruchom poniższe polecenie

CentOS: sudo yum update && sudo yum -y install kernel-headers kernel-devel

Jayen Chondigara
źródło
0

Jeśli korzystasz z Debiana:

1) Usuń wszystkie zainstalowane pakiety za pomocą pliku ISO Virtualbox Guest Additions:

sh /media/cdrom/VBoxLinuxAdditions.run uninstall

2) zainstaluj pakiety Virtualbox:

apt-get install build-essential module-assistant virtualbox-guest-dkms virtualbox-guest-utils

Zauważ, że nawet jeśli modprobe vboxsfnic nie zwróci (więc moduł zostanie poprawnie załadowany), vboxsf.sowywoła plik wykonywalny o nazwie mount.vboxsf, który jest dostarczany przez virtualbox-guest-utils. Zignorowanie tego uniemożliwi zrozumienie prawdziwej przyczyny błędu.

strace mount /your-directorybył bardzo pomocny (nie ma takiego pliku lub katalogu /sbin/mount.vboxsf).

Yvan
źródło
0

Aktualizacja załatwiła mi sprawę!

$ vagrant box update
$ vagrant plugin install vagrant-vbguest 
Shankar ARUL - jupyterdata.com
źródło
-1

Poniżej dwie komendy działają u mnie.

vagrant ssh
sudo mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
SayOwl
źródło
-8

Okej, wszystkim brakuje podstawowego faktu.

mkdir /test - Tworzy podkatalog w bieżącym katalogu.

sudo mkdir /test - Utwórz katalog w Root.

Więc jeśli nazwa twojego katalogu współdzielonego to sharedi wykonasz następujące czynności:

mkdir /test
sudo mount -t vboxsf shared /test

Generuje ten błąd:

sbin/mount.vboxsf: mounting failed with the error: No such file or directory

Ponieważ katalog jest w złym miejscu! Tak, to właśnie mówi ten błąd. Błąd nie mówi, że przeładuj opcje gościa VBOX.

Ale jeśli to zrobisz:

sudo mkdir ~/test
sudo mount -t vboxsf shared ~/test

Wtedy działa dobrze.

Naprawdę zdumiewa mnie, jak wiele osób sugeruje ponowne załadowanie dodatków gościa Vbox w celu rozwiązania tego błędu lub napisanie złożonego programu do rozwiązania katalogu utworzonego w niewłaściwym miejscu.

CRANKYOLDGUY
źródło
2
Napotkany błąd to „Brak takiego urządzenia”, a nie „Brak takiego pliku lub katalogu”. :)
mjtko
mynttest @ mynttest-VirtualBox: / media / sf_shared $ sudo mkdir ~ / test sudo mount -t vboxsf vbshared ~ / test mkdir: invalid option - 't' Spróbuj `mkdir --help ', aby uzyskać więcej informacji.
Berit Larsen
1
mkdir /testutworzy katalog / test w /. sudo mkdir /testutworzy ten sam katalog, ale należący do roota, a nie do bieżącego użytkownika.
bschlueter
Miałem ten sam problem. Więc zainstalowałem, kernel-devel.x86_64 0:2.6.32-754.11.1.el6a następnie uruchomiłem te polecenie - cd /opt/VBoxGuestAdditions-*/initi sudo ./vboxadd setup. To zadziałało dla mnie.
Vishwanath Sharma