VirtualBox: mount.vboxsf: montaggio non riuscito con errore: nessun dispositivo simile [chiuso]


160

Sto usando VirtualBox con OS X come host e CentOS sulla VM guest.

Nella cartella creata da OS XI myfolder, aggiunta come cartella condivisa alla VM, accesa la VM, nella cartella creata da CentOS /home/user/myfoldere digitando:

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

e hanno output:

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

Cosa sto facendo di sbagliato?

AGGIORNAMENTO:

Guest Additions installato.


Assicurarsi che Guest Additions sia installato correttamente, potrebbe essere necessario sudo apt-get upgrade; sudo apt-get install build-essential module-assistant; sudo ma prepari; Devi vedere il modulo Guest Aditions in costruzione ...
ntg

9
Al navigatore casuale che ha questo problema: fatevi un favore e guardate la seconda risposta.
jrharshath,

4
un suggerimento - sudo mount -t vboxsf sf_folder /home/user/folder, qui il sf_foldere folder DEVE essere nomi diversi
cnaize il

5
@jrharshath Qual è la "seconda risposta"? L'ordinamento può cambiare. Fai clic su sharenella risposta per ottenere il permalink.
Wisbucky

Risposte:


167

La mia cartella / appunti condivisi ha smesso di funzionare per qualche motivo (probabilmente a causa di un'installazione di patch sulla mia macchina virtuale).

sudo mount -t vboxsf Shared_Folder ~/SF/

Ha dato il seguente risultato:

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

La soluzione per me è stata quella di interrompere vboxadd e fare una configurazione successiva:

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

1
Dopo aver aggiornato Ubuntu 12.04 vm in Ubuntu 14.04, le mie cartelle condivise erano vuote in vm e quando ho provato a montare manualmente, ho ricevuto l'errore /sbin/mount.vboxsf: mounting failed with the error: No such device. Dopo aver eseguito quanto sopra e riavviato il sistema, le mie cartelle condivise sono apparse come prima dell'aggiornamento .. grazie!
Angelo

Il problema persiste su VirtualBox 5.0.18 con un guest Ubuntu 16.04 e questa soluzione ha funzionato per me.
Ivan Perez,

7
come si interrompe vboxadd?
Aristotele,

1
Grazie! Ho dovuto anche installare il vagabondo-vbguest plugin - stackoverflow.com/a/23752848/2043134
thomas_inckx

1
@aristofun @ brainmurphy1: nella stessa directory, prima sudo ./vboxadd setup, puoi farlo sudo ./vboxadd stop. Non sono sicuro che sia ancora necessario, ma suppongo che sia quello che significa quella frase.
hraban,

77

Stai usando cartelle condivise, quindi devi installare VirtualBox Guest Additions nella tua macchina virtuale per supportare quella funzionalità.

Vagabondo

Se stai usando Vagrant (OS X :)brew cask install vagrant , esegui:

vagrant plugin install vagrant-vbguest
vagrant vbguest

In caso di errore, controllare i registri, ad es

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

Forse ti mancano solo i file di intestazione del kernel.

VM

All'interno della VM, è necessario installare Guest Additions, header del kernel e avviare il servizio e ricontrollare se l'estensione del kernel è in esecuzione.

Questo dipende dal sistema operativo guest, quindi ecco alcuni brevi passaggi:

  1. Il kernel di installazione include le intestazioni (richiesto da 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. Installa aggiunte guest (dipende dal sistema operativo).

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

      Se non riesci a trovarlo, controlla aptitude search virtualbox.

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

      Se non riesci a trovarlo, controlla dpkg -l | grep virtualbox.

    • manualmente scaricando il file iso nella VM (ad es. wget) e installandolo, ad es

      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

        Debug extra: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

  3. Controlla che le estensioni del kernel siano attive e funzionanti:

    • sudo modprobe vboxsf
  4. Avvia / riavvia il servizio:

    • manualmente: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup(aggiungi sudo sh -xal debug)
    • Debian: sudo /etc/init.d/vboxadd-service start
    • Fedora: sudo /etc/init.d/vboxdrv setup
    • CentOS: sudo service VBoxService start

Costruire il modulo principale Guest Additions

Se sopra non ha funzionato, qui ci sono passaggi più sofisticati per risolverlo. Ciò presuppone che tu abbia già installato VBoxGuestAdditions (come mostrato sopra).

Il motivo più comune per cui il montaggio della cartella condivisa non funziona potrebbe essere correlato alla creazione del modulo Aggiunte guest che non è riuscito. Se /var/log/vboxadd-install.loghai il seguente errore:

Non sono state trovate le intestazioni per l'attuale kernel in esecuzione.

questo significa che o non hai installato i sorgenti del kernel, oppure non sono stati trovati.

Se li hai già installati come indicato sopra, esegui questo comando:

$ 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

Quindi sostanzialmente lo vboxaddscript si aspetta che i tuoi sorgenti del kernel siano disponibili alla seguente directory:

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

Controlla se la directory del kernel esiste (il link simbolico punta alla cartella esistente). In caso contrario, installarli nella cartella corretta (ad es /usr/src/kernels. In).

Quindi lo vboxaddscript può entrare nella directory sorgente del kernel ed eseguire make kernelrelease, ottenere il valore e confrontarlo con la versione corrente del kernel.

Ecco la logica:

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

Se la versione del kernel non corrisponde ai sorgenti, forse devi aggiornare il tuo kernel Linux (nel caso in cui i sorgenti siano più recenti del tuo kernel).

CentOS

Provare:

vagrant plugin install vagrant-vbguest vagrant vbgues

Se non funziona, prova i seguenti passaggi manuali per 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

1
RE la correzione di CentOS, ha risolto il mio problema ma assicurati di aver installato gcc.
ggdx,

1
Utilizzando Chef's Test Kitchen (Vagrant), l' installazione di plug-in vagrant vagrant-vbguest ha funzionato per me
pfernandom,

Nel mio caso è stato perché le GuestAdditions non erano le stesse dichiarate tra Vagrant e il Guest.
AnthonyB,

1
vagrant plugin install vagrant-vbguest vagrant vbguestfunziona anche su Centos 7 e risolto il problema. Grazie
Med Ali Difallah,

55

Sono in grado di risolverlo correndo sotto il comando

modprobe -a vboxguest vboxsf vboxvideo


Lo stesso problema si è verificato sulla mia vbox5.0.6 e sul guest Centos 7. Il problema è che dovrò eseguirlo ogni volta dopo il (riavvio).
webbertiger,

14
Questo funziona perché si tratta dei moduli del kernel necessari per l'esecuzione su un guest affinché VirtualBox esegua correttamente tutte le sue funzioni. In particolare, vboxsf(Cartelle condivise VirtualBox) è ciò che è necessario qui. Puoi elencare questi 3 file uno per riga in un file /etc/modules-load.d/(chiamalo forse virtualbox.conf) per rendere persistente questa modifica attraverso i riavvii.
Alchimista a due bit,

1
Su Debian 8 guest, l'esecuzione di questo comando ha rovinato l'output video.
CodingWithSpike

23

Oltre alla risposta di @Mats , sto aggiungendo altre informazioni (mi ha aiutato su Debian 8).

La mia cartella / appunti condivisi ha smesso di funzionare per qualche motivo (probabilmente a causa di un'installazione di patch sulla mia macchina virtuale).

sudo mount -t vboxsf Shared_Folder ~/SF/

Mi ha dato il seguente risultato:

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

La soluzione per me è stata quella di interrompere vboxadd e fare una configurazione successiva:

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

A questo punto, se si verifica ancora il seguente errore:

Nessun apparecchio di questo tipo. L'installazione di Guest Additions potrebbe non essere riuscita. L'errore è stato registrato/var/log/vboxadd-install.log

Devi installare le intestazioni di Linux:

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

allora puoi installare Guest Additions:

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

e riavvia il tuo Linux:

reboot

allora sarai in grado di montare la tua cartella condivisa!

mount -t vboxsf Shared_Folder ~/SF/

Maggiori informazioni (in francese), controlla questa pagina .


3
apt-get install linux-headers-virtualaiutato con Lubuntu 15.04 su VirtualBox
fider

/ media / cdrom è vuoto nel mio caso
CCC

Hai fatto clic su Installa aggiunte guest dal menu Dispositivi?
Froggiz,


9

Questo è stato risolto da:

yum install gcc kernel-devel make

soluzione alternativa è qui: https://gist.github.com/larsar/1687725


Non ho avuto fortuna con tutti gli aggiornamenti. Spiacenti, la risposta con 13 voti
positivi

Sto usando un host Windows 7 con RHEL 7 e questo lo ha risolto per me (comprese le informazioni dal link gist) - Grazie!
Chris Townsend,

Su Ubuntu ha funzionato: sudo apt-get install build-essential linux-headers- uname -rdkms
cstroe

4
@AndrewShatnyy "risposta con 13 voti positivi" è ambigua. share
Invia

1
@wisbucky hai proprio scusa. stackoverflow.com/a/29456128/849187 lavorato due volte già
Andrew Shatnyy

6

La cartella condivisa funzionava in precedenza per me ma all'improvviso ha smesso di funzionare (Virualbox - host era Windows 7, Guest era OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

quindi mount -t vboxsf testsf /opt/tsf ( testsfera la cartella nell'unità Windows C che è stata aggiunta nella cartella condivisa Virtualbox --- ed /opt/tsfè la cartella in OpenSuse


5

Il mio host è Windows10 il mio guest VM è Ubuntu compilato da Vagrant. Questo ha funzionato per me:

vagrant plugin install vagrant-winnfsd

3

Ho anche avuto un sistema funzionante che improvvisamente ha smesso di funzionare con l'errore descritto.

Dopo essermi aggirato nei miei moduli / lib /, sembrerebbe che il vboxvfsmodulo non ci sia più. Invece modprobe vboxsfera l'incantesimo richiesto per riavviare le cose.

Non sono sicuro di quando si sia verificato quel cambiamento, ma mi ha sorpreso.


1
Ha funzionato per me dopo aver eseguito `sudo modprobe vboxsf`
Viorel Mirea

3

Sto eseguendo VirtualBox 5.1.20 e ho avuto un problema simile. Ecco un URL in cui ho trovato la correzione e la correzione che ho implementato:

# 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

Il link aveva qualcosa di simile a /usr/lib/VBoxGuestAdditions/other/mount.vboxsf, piuttosto che quello che ho nell'estratto dello script.

Per uno script di build che uso in vagrant per le aggiunte:

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

Sembra essere una correzione su https://www.virtualbox.org/ticket/16670


3

La soluzione per me era aggiornare le aggiunte degli ospiti

(fare clic su Dispositivi -> Inserisci immagine CD Aggiunte guest)


2

    Possono esserci errori / approccio errato in due scenari. Controllali entrambi e       scoprilo

SCENARIO 1:

Una volta eseguito VBoxLinuxAdditions.run o VBoxSolarisAdditions.pkg o VBoxWindowsAdditions.exe, controlla che tutti i moduli vengano installati correttamente.

1.1.a. In caso di VBoxLinuxAdditions , se la compilazione dei
moduli del kernel VirtualBox Guest Additions fallisce,
controllare il file di registro in /var/log/vboxadd-install.log . Se l' errore è dovuto alla versione del kernel, aggiornare il kernel e riavviare VM. In caso di fedora ,
1.1.b. aggiornamento del kernel yum *
1.1.c.riavvio
1.2. Se nulla fallisce, allora va tutto bene. Stai già avendo la versione del kernel prevista

SCENARIO 2:

     Se è installato VBoxGuestAdditions (verificare la presenza di una cartella / opt / VBoxGuestAdditions- * è presente .... * rappresenta la versione) è necessario avviarlo prima del montaggio.

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

      Devi specificare l'id utente e l'id gruppo dell'utente vm come opzioni per il comando mount.

2.2.a. Ottenere uid e gid di un utente:
      id -u <'user'>
      id -g <'user'>
2.2.b. Impostare uid e gid nelle opzioni del comando mount:
      mount -t vboxsf -o uid = x, gid = x shared_folder_name guest_folder


2

Per me, su un Mac, ho scoperto che sul mio computer era memorizzata una vecchia immagine di VirtualBox che non aveva metadati, quindi non veniva aggiornata all'ultima versione.

In quella vecchia immagine era installata una versione precedente del plug-in vbguest, con cui il nuovo plug-in vbguest sulla mia macchina non poteva funzionare.

Quindi, per risolverlo, ho appena rimosso l'immagine su cui era basato il mio Vagrant, quindi Vagrant ha scaricato la versione più recente e ha funzionato bene.

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

Puoi scoprire quali scatole hai memorizzato nella cache sul tuo computer eseguendo:

$ vagrant box list

Avevo anche aggiornato il mio plug-in vbguest nei miei precedenti tentativi di farlo funzionare, usando la seguente procedura, ma non credo che ciò abbia aiutato. Cordiali saluti!

# Get rid of old plugins
vagrant plugin expunge 

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

Se trovi che il box non riesce sulle aggiunte degli ospiti, puoi provare a fare quanto segue per assicurarti che i plugin vengano installati correttamente. Questo scarica l'immagine di base più recente per il tuo sistema (per me CentOS) e può risolvere il problema (è stato per me!)

$ vagrant box update

1

Su Ubuntu ha funzionato:

sudo apt-get install build-essential linux-headers-`uname -r` dkms

1

Ha avuto lo stesso problema con VirtualBox 5.0.16 / rXXX

Installato l'ultimo VirtualBox 5.0.18 e l'ultimo Vagrant 1.9.3 installato, il problema è andato a finire.


1

Ho aggiunto come utente root

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

poi

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

e lo script di esempio /root/mount-vboxsf.sh(imposta le tue opzioni uid e gid)

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

devi aggiungere

chmod + /root/mount-vboxsf.sh

0

Ho un problema simile, controlla l'intestazione se non corrisponde, quindi esegui sotto il comando

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


0

Se sei su Debian:

1) rimuovere tutto il pacchetto installato tramite il file ISO di Virtualbox Guest Additions:

sh /media/cdrom/VBoxLinuxAdditions.run uninstall

2) installa i pacchetti Virtualbox:

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

Si noti che anche se modprobe vboxsfnon viene restituito nulla (quindi il modulo è caricato correttamente), vboxsf.soverrà chiamato un eseguibile denominato mount.vboxsf, fornito da virtualbox-guest-utils. Ignorare questo ti impedirà di comprendere la vera causa dell'errore.

strace mount /your-directoryè stato di grande aiuto (nessun file o directory è attivo /sbin/mount.vboxsf).



-1

Sotto due comandi funziona per me.

vagrant ssh
sudo mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

-8

Va bene a tutti manca un fatto di base.

mkdir /test - Crea una sottodirectory nella directory corrente.

sudo mkdir /test - Crea directory in Root.

Quindi, se il tuo nome di directory condiviso è sharede fai quanto segue:

mkdir /test
sudo mount -t vboxsf shared /test

Genera questo errore:

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

Perché la directory è nel posto sbagliato! Sì, è questo che dice questo errore. L'errore non sta dicendo ricaricare le opzioni guest VBOX.

Ma se lo fai:

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

Quindi funziona benissimo.

Mi stupisce davvero quante persone suggeriscono di ricaricare le aggiunte degli ospiti Vbox per risolvere questo errore o di scrivere un programma complesso per risolvere una directory creata nel posto sbagliato.


2
L'errore riscontrato è "Nessun dispositivo del genere", non "Nessun file o directory". :)
mjtko,

mynttest @ mynttest-VirtualBox: / media / sf_shared $ sudo mkdir ~ / test sudo mount -t vboxsf vbshared ~ / test mkdir: opzione non valida - 't' Prova `mkdir --help 'per maggiori informazioni.
Berit Larsen,

1
mkdir /testcreerà la directory / test in /. sudo mkdir /testcreerà la stessa directory, ma di proprietà di root anziché dell'utente corrente.
bschlueter

Ho avuto lo stesso problema. Quindi ho installato kernel-devel.x86_64 0:2.6.32-754.11.1.el6ed eseguito questi comandi-- cd /opt/VBoxGuestAdditions-*/inite sudo ./vboxadd setup. Questo ha funzionato per me.
Vishwanath Sharma
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.