VirtualBox: mount.vboxsf: le montage a échoué avec l'erreur: aucun périphérique de ce type [fermé]

160

J'utilise VirtualBox avec OS X comme hôte et CentOS sur la VM invitée.

Dans le dossier créé OS XI myfolder, ajouté en tant que dossier partagé à la VM, allumé la VM, dans le dossier créé CentOS /home/user/myfolderet en tapant:

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

et avoir la sortie:

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

Qu'est-ce que je fais mal?

ACTUALISÉ:

Guest Additions installée.

cnaize
la source
Assurez-vous que les suppléments invité sont correctement installés, vous devrez peut-être sudo apt-get upgrade; sudo apt-get install build-essential module-assistant; sudo ma prepare; Vous devez voir le module Guest Aditions en cours de construction ...
ntg
9
À l'internaute aléatoire qui a ce problème: Faites-vous une faveur et regardez la deuxième réponse.
jrharshath
4
un conseil - sudo mount -t vboxsf sf_folder /home/user/folder, ici le sf_folderet folder DOIT être des noms différents
cnaize
5
@jrharshath Laquelle est la "deuxième réponse"? Le tri peut changer. Cliquez sur sharedans la réponse pour obtenir le permalien.
wisbucky

Réponses:

167

Mon dossier / presse-papiers partagé a cessé de fonctionner pour une raison quelconque (probablement en raison d'une installation de correctif sur ma machine virtuelle).

sudo mount -t vboxsf Shared_Folder ~/SF/

A donné le résultat suivant:

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

La solution pour moi était d'arrêter vboxadd et de faire une configuration après cela:

cd /opt/VBoxGuestAdditions-*/init  
sudo ./vboxadd setup
Tapis
la source
1
Après avoir mis à niveau mon Ubuntu 12.04 vm vers Ubuntu 14.04, mes dossiers partagés étaient vides dans la vm et en essayant de monter manuellement, j'ai eu l'erreur /sbin/mount.vboxsf: mounting failed with the error: No such device. Après avoir exécuté ce qui précède et redémarré le système, mes dossiers partagés sont apparus comme avant la mise à niveau .. merci!
Angelo le
Le problème persiste sur VirtualBox 5.0.18 avec un invité Ubuntu 16.04, et cette solution a fonctionné pour moi.
Ivan Perez
7
comment arrêtez-vous vboxadd?
aristofun
1
Merci! J'ai également dû installer le plugin vagrant-vbguest - stackoverflow.com/a/23752848/2043134
thomas_inckx
1
@aristofun @ brainmurphy1: dans ce même répertoire, avant sudo ./vboxadd setup, vous pouvez le faire sudo ./vboxadd stop. Je ne sais pas si c'est encore nécessaire, mais je suppose que c'est ce que signifie cette phrase.
hraban
77

Vous utilisez des dossiers de partage, vous devez donc installer VirtualBox Guest Additions dans votre machine virtuelle pour prendre en charge cette fonctionnalité.

Vagabond

Si vous utilisez Vagrant (OS X :) brew cask install vagrant, exécutez:

vagrant plugin install vagrant-vbguest
vagrant vbguest

En cas d'échec, vérifiez les journaux, par exemple

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

Il vous manque peut-être simplement les fichiers d'en-tête du noyau.

VM

À l'intérieur de VM, vous devez installer les suppléments invité, les en-têtes du noyau et démarrer le service et vérifier si l'extension du noyau est en cours d'exécution.

Cela dépend du système d'exploitation invité, voici donc de brèves étapes:

  1. Le noyau d'installation inclut les en-têtes (requis par 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. Installez les suppléments invité (cela dépend du système d'exploitation).

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

      Si vous ne le trouvez pas, vérifiez par aptitude search virtualbox.

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

      Si vous ne le trouvez pas, vérifiez par dpkg -l | grep virtualbox.

    • manuellement en téléchargeant le fichier iso dans VM (par exemple wget) et en l'installant, par exemple

      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

        Débogage supplémentaire: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

  3. Vérifiez à nouveau que les extensions du noyau sont opérationnelles:

    • sudo modprobe vboxsf
  4. Démarrez / redémarrez le service:

    • manuellement: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup(ajouter sudo sh -xau débogage)
    • Debian: sudo /etc/init.d/vboxadd-service start
    • Feutre: sudo /etc/init.d/vboxdrv setup
    • CentOS: sudo service VBoxService start

Création du module principal des ajouts invités

Si ci-dessus ne fonctionne pas, voici des étapes plus sophistiquées pour y remédier. Cela suppose que vous avez déjà installé VBoxGuestAdditions (comme indiqué ci-dessus).

La raison la plus courante pour laquelle le montage du dossier partagé ne fonctionne pas peut être liée à la création du module Guest Additions qui a échoué. Si /var/log/vboxadd-install.logvous avez l'erreur suivante:

Les en-têtes du noyau en cours d'exécution sont introuvables.

cela signifie soit que vous n'avez pas installé les sources du noyau, soit qu'elles sont introuvables.

Si vous les avez déjà installés comme indiqué ci-dessus, exécutez cette commande:

$ 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

Donc, fondamentalement, le vboxaddscript s'attend à ce que vos sources du noyau soient disponibles dans le répertoire suivant:

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

Vérifiez si le répertoire noyau existe (le lien symbolique pointe vers le dossier existant). Si ce n'est pas le cas, veuillez les installer dans le bon dossier (par exemple dans /usr/src/kernels).

Ainsi, le vboxaddscript peut entrer dans le répertoire source de votre noyau et s'exécuter make kernelrelease, obtenir la valeur et comparer avec votre version actuelle du noyau.

Voici la logique:

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

Si la version du noyau ne correspond pas aux sources, vous devez peut-être mettre à jour votre noyau Linux (au cas où les sources seraient plus récentes que votre noyau).

CentOS

Essayer:

vagrant plugin install vagrant-vbguest vagrant vbgues

Si cela ne fonctionne pas, essayez les étapes manuelles suivantes pour 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
la source
1
RE le correctif CentOS, il a résolu mon problème, mais assurez-vous que gcc est installé.
ggdx
1
En utilisant Chef's Test Kitchen (Vagrant), l' installation du plugin vagrant vagrant-vbguest a fonctionné pour moi
pfernandom
Dans mon cas, c'était parce que les GuestAdditions n'étaient pas les mêmes déclarées entre Vagrant et l'invité.
AnthonyB
1
vagrant plugin install vagrant-vbguest vagrant vbguestfonctionne également sur centos 7 et a résolu le problème. Merci
Med Ali Difallah
55

Je suis capable de résoudre ce problème en exécutant ci-dessous commmand

modprobe -a vboxguest vboxsf vboxvideo

Atul N
la source
Le même problème s'est produit sur mon invité vbox5.0.6 et Centos 7. Le problème est que je devrai l'exécuter à chaque fois après le (re) démarrage.
webbertiger
14
Cela fonctionne parce que ce sont les modules du noyau dont vous avez besoin pour s'exécuter sur un invité pour que VirtualBox exécute correctement toutes ses fonctions. Plus précisément, vboxsf(VirtualBox Shared Folders) est ce qui est nécessaire ici. Vous pouvez lister ces 3 fichiers un par ligne dans un fichier /etc/modules-load.d/(appelez-le peut-être virtualbox.conf) pour que ce changement persiste lors des redémarrages.
Two-Bit Alchemist
1
Sur l'invité Debian 8, l'exécution de cette commande a ruiné la sortie vidéo.
CodingWithSpike
23

En plus de la réponse @Mats , j'ajoute quelques informations supplémentaires (cela m'a aidé sur Debian 8).

Mon dossier / presse-papiers partagé a cessé de fonctionner pour une raison quelconque (probablement en raison d'une installation de correctif sur ma machine virtuelle).

sudo mount -t vboxsf Shared_Folder ~/SF/

M'a donné le résultat suivant:

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

La solution pour moi était d'arrêter vboxadd et de faire une configuration après cela:

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

À ce stade, si vous obtenez toujours l'erreur suivante:

Aucun appareil de ce type. L'installation des suppléments invité a peut-être échoué. L'erreur a été enregistrée/var/log/vboxadd-install.log

Vous devez installer les en-têtes Linux:

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

alors vous pouvez installer les additions invité:

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

et redémarrez votre Linux en:

reboot

alors vous pourrez monter votre dossier partagé!

mount -t vboxsf Shared_Folder ~/SF/

Plus d'informations (en français), consultez cette page .

Froggiz
la source
3
apt-get install linux-headers-virtualaidé avec Lubuntu 15.04 sur VirtualBox
fider
/ media / cdrom ois vide dans mon cas
CCC
Avez-vous cliqué sur Installer les suppléments invité dans le menu Périphériques?
Froggiz
9

Cela a été résolu par:

yum install gcc kernel-devel make

la solution de contournement est ici: https://gist.github.com/larsar/1687725

cnaize
la source
Ran toutes les mises à jour aucune chance du tout. Désolé, la réponse avec 13 votes
positifs a
J'utilise un hôte Windows 7 avec RHEL 7 et cela l'a résolu pour moi (y compris les informations du lien principal) - Merci!
Chris Townsend
Sur Ubuntu, cela a fonctionné: sudo apt-get install build-essential linux-headers- uname -rdkms
cstroe
4
@AndrewShatnyy "réponse avec 13 votes positifs" est ambiguë. Veuillez publier le lien permanent vers la réponse à laquelle vous faites référence (cliquez sharesous la réponse)
wisbucky
1
@wisbucky vous êtes désolé. stackoverflow.com/a/29456128/849187 a déjà travaillé deux fois
Andrew Shatnyy
6

Le dossier partagé fonctionnait auparavant pour moi mais tout d'un coup il a cessé de fonctionner (Virualbox - l'hôte était Windows 7, l'invité était OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

puis mount -t vboxsf testsf /opt/tsf ( testsfétait le dossier dans le lecteur Windows C qui a été ajouté dans le dossier partagé Virtualbox --- et /opt/tsfest le dossier dans OpenSuse

MAlam
la source
5

Mon hôte est Windows10, mon invité VM est ubuntu construit par vagrant. Cela a fonctionné pour moi:

vagrant plugin install vagrant-winnfsd
Kaiacode
la source
3

J'avais également un système en état de marche qui a soudainement cessé de fonctionner avec l'erreur décrite.

Après avoir fouillé dans mon / lib / modules, il semblerait que le vboxvfsmodule n'existe plus. Au lieu de cela, modprobe vboxsfc'était l'incantation nécessaire pour redémarrer les choses.

Je ne sais pas quand ce changement s'est produit, mais cela m'a surpris.

Tim N
la source
1
Cela a fonctionné pour moi après avoir exécuté `sudo modprobe vboxsf`
Viorel Mirea
3

J'utilise VirtualBox 5.1.20 et j'ai eu un problème similaire. Voici une URL vers laquelle j'ai trouvé le correctif et le correctif que j'ai implémenté:

# 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

Le lien avait quelque chose de similaire à /usr/lib/VBoxGuestAdditions/other/mount.vboxsf, plutôt que ce que j'ai dans l'extrait de script.

Pour un script de construction que j'utilise dans vagrant pour les ajouts:

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

Semble être un correctif sur https://www.virtualbox.org/ticket/16670

Raymond Burkholder
la source
3

La solution pour moi était de mettre à jour les ajouts d'invités

(cliquez sur Périphériques -> Insérer l'image du CD des ajouts invités)

Arch Linux Tux
la source
2

    Il peut y avoir des erreurs / une approche incorrecte dans deux scénarios. Vérifiez les deux et découvrez-le

SCÉNARIO 1:

      Une fois que vous exécutez VBoxLinuxAdditions.run ou VBoxSolarisAdditions.pkg ou VBoxWindowsAdditions.exe, vérifiez si tous les modules sont installés correctement.

1.1.a. Dans le cas de VBoxLinuxAdditions , si la
construction des modules du noyau VirtualBox Guest Additions échoue,
vérifiez le fichier journal dans /var/log/vboxadd-install.log . Si l' erreur est due à la version du noyau, mettez à jour votre noyau et redémarrez le vm. Dans le cas de fedora ,
1.1.b. yum mettre à jour le noyau * redémarrer
1.1.c.
1.2. Si rien n'échoue, tout va bien. Vous disposez déjà de la version attendue du noyau

SCÉNARIO 2:

     Si VBoxGuestAdditions est installé (vérifiez qu'un dossier / opt / VBoxGuestAdditions- * est présent .... * représente la version), vous devez le démarrer avant le montage.

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

      Vous devez spécifier l'ID utilisateur et l'ID de groupe de votre utilisateur vm comme options de la commande mount.

2.2.a. Obtention de l'uid et du gid d'un utilisateur:
      id -u <'user'>
      id -g <'user'>
2.2.b. Définition de l'uid et du gid dans les options de la commande de montage:
      mount -t vboxsf -o uid = x, gid = x nom_dossier_partagé dossier_invité

yottabytt
la source
2

Pour moi, sur un mac, il s'est avéré que j'avais une ancienne image VirtualBox stockée sur ma machine qui n'avait pas de métadonnées, donc elle n'était pas mise à jour vers la dernière version.

Cette ancienne image contenait une ancienne version du plugin vbguest, avec laquelle le nouveau plugin vbguest sur ma machine ne pouvait pas fonctionner.

Donc, pour résoudre ce problème, j'ai simplement supprimé l'image sur laquelle mon Vagrant était basé, puis Vagrant a téléchargé la version la plus récente et cela a bien fonctionné.

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

Vous pouvez savoir quelles boîtes vous avez mises en cache sur votre machine en exécutant:

$ vagrant box list

J'avais également mis à jour mon plugin vbguest lors de mes précédentes tentatives pour que cela fonctionne, en utilisant le processus suivant, mais je ne pense pas que cela a aidé. FYI!

# Get rid of old plugins
vagrant plugin expunge 

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

Si vous trouvez que la boîte de dialogue échoue sur les ajouts invités, vous pouvez essayer de faire ce qui suit pour vous assurer que les plugins sont correctement installés. Cela télécharge la dernière image basée sur votre système (pour moi CentOS) et peut résoudre le problème (c'est le cas pour moi!)

$ vagrant box update
Brad Parks
la source
1

Sur Ubuntu, cela a fonctionné:

sudo apt-get install build-essential linux-headers-`uname -r` dkms
cstroe
la source
1

Eu le même problème avec VirtualBox 5.0.16 / rXXX

Installé le dernier VirtualBox 5.0.18 et installé le dernier Vagrant 1.9.3, le problème est allé toodles.

AKS
la source
1

J'ai ajouté en tant qu'utilisateur root

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

puis

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

et l'exemple de script /root/mount-vboxsf.sh(définissez vos propres options uid et gid)

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

vous devez ajouter

chmod + /root/mount-vboxsf.sh
Diego Piccinini
la source
0

J'ai un problème similaire, vérifiez l'en-tête s'il ne correspond pas, puis exécutez la commande ci-dessous

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

Jayen Chondigara
la source
0

Si vous êtes sur Debian:

1) supprimez tous les packages installés via le fichier ISO des ajouts d'invité de Virtualbox:

sh /media/cdrom/VBoxLinuxAdditions.run uninstall

2) installez les packages Virtualbox:

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

Notez que même en modprobe vboxsfne renvoyant rien (donc le module est correctement chargé), le vboxsf.soappellera un exécutable nommé mount.vboxsf, qui est fourni par virtualbox-guest-utils. Ignorer celui-ci vous empêchera de comprendre la véritable cause de l'erreur.

strace mount /your-directoryétait d'une grande aide (aucun fichier ou répertoire sur /sbin/mount.vboxsf).

Yvan
la source
0

Une mise à jour a fait l'affaire pour moi!

$ vagrant box update
$ vagrant plugin install vagrant-vbguest 
Shankar ARUL - jupyterdata.com
la source
-1

Ci-dessous deux commandes fonctionnent pour moi.

vagrant ssh
sudo mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
SayOwl
la source
-8

D'accord, tout le monde manque un fait fondamental.

mkdir /test - Rend le sous-répertoire dans le répertoire courant.

sudo mkdir /test - Créez un répertoire dans Root.

Donc, si votre nom de répertoire partagé est sharedet que vous procédez comme suit:

mkdir /test
sudo mount -t vboxsf shared /test

Il génère cette erreur:

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

Parce que le répertoire est au mauvais endroit! Oui, c'est ce que dit cette erreur. L'erreur ne dit pas de recharger les options d'invité VBOX.

Mais si vous faites ceci:

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

Ensuite, cela fonctionne très bien.

Je suis vraiment étonné de voir combien de personnes suggèrent de recharger les ajouts d'invités Vbox pour résoudre cette erreur ou d'écrire un programme complexe pour résoudre un répertoire créé au mauvais endroit.

CRANKYOLDGUY
la source
2
L'erreur rencontrée est "Aucun périphérique de ce type" et non "Aucun fichier ou répertoire de ce type". :)
mjtko
mynttest @ mynttest-VirtualBox: / media / sf_shared $ sudo mkdir ~ / test sudo mount -t vboxsf vbshared ~ / test mkdir: option invalide - 't' Essayez `mkdir --help 'pour plus d'informations.
Berit Larsen
1
mkdir /testcréera le répertoire / test dans /. sudo mkdir /testcréera le même répertoire, mais appartenant à root plutôt qu'à l'utilisateur actuel.
bschlueter
J'ai eu le même problème. J'ai donc installé kernel-devel.x86_64 0:2.6.32-754.11.1.el6et exécuté ces commandes - cd /opt/VBoxGuestAdditions-*/initet sudo ./vboxadd setup. Cela a fonctionné pour moi.
Vishwanath Sharma