web-dev-qa-db-fra.com

VirtualBox: mount.vboxsf: le montage a échoué avec l'erreur suivante: Aucun de ces périphériques

J'utilise VirtualBox avec OS X en tant qu'hôte et CentOS sur la machine virtuelle invitée.

Sous OS X, j'ai créé le dossier myfolder, je l'ai ajouté en tant que dossier partagé à la machine virtuelle, allumé la machine virtuelle, dans le dossier CentOS créé /home/user/myfolder et en tapant:

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

et ont la sortie:

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

Qu'est-ce que je fais mal?

MISE À JOUR:

Guest Additions installé.

148
cnaize

Ceci a été résolu par:

yum install gcc kernel-devel make

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

8
cnaize

Mon dossier/presse-papiers partagé s'est arrêté de fonctionner pour une raison quelconque (probablement en raison de l'installation d'un correctif sur ma machine virtuelle).

Sudo mount -t vboxsf Shared_Folder ~/SF/

Résultat obtenu:

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 ça:

cd /opt/VBoxGuestAdditions-*/init  
Sudo ./vboxadd setup
154
Mats

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, consultez les journaux, par exemple.

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

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

VM

À l'intérieur de la machine virtuelle, vous devez installer Guest Additions, les en-têtes du noyau, 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 quelques étapes:

  1. Installez les en-têtes du noyau (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 Guest Additions (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 à l'intérieur de 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 de noyau sont opérationnelles:

    • Sudo modprobe vboxsf
  4. Démarrer/redémarrer le service:

    • manuellement: Sudo /opt/VBoxGuestAdditions*/init/vboxadd setup (ajoute Sudo sh -x au débogage)
    • Debian: Sudo /etc/init.d/vboxadd-service start
    • Fedora: Sudo /etc/init.d/vboxdrv setup
    • CentOS: Sudo service VBoxService start

Construction du module principal des ajouts d'invités

Si ci-dessus n'a pas fonctionné, 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 construction du module Additions invité qui a échoué. Si dans /var/log/vboxadd-install.log vous avez l'erreur suivante:

Les en-têtes du noyau en cours d'exécution n'ont pas été trouvés.

cela signifie soit que vous n'avez pas installé les sources du noyau, soit qu'elles ne peuvent pas être trouvées.

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

$ 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 script vboxadd s'attend à ce que les sources de votre noyau soient disponibles au répertoire suivant:

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

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

Ainsi, le script vboxadd peut entrer dans votre répertoire source du noyau et exécuter make kernelrelease, obtenir la valeur et comparer avec la version actuelle de votre 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 devrez peut-être mettre à niveau 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
62
kenorb

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

modprobe -a vboxguest vboxsf vboxvideo

51
Atul N

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

Mon dossier/presse-papiers partagé s'est arrêté de fonctionner pour une raison quelconque (probablement en raison de l'installation d'un 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 tel appareil. L'installation des compléments invités a peut-être échoué. L'erreur a été enregistrée dans /var/log/vboxadd-install.log

Vous devez installer les en-têtes Linux:

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

alors vous pouvez installer Guest Additions:

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, vérifiez ceci page .

20
Froggiz

C'était la seule solution qui a fonctionné pour moi:

Installez le plug-in Vagrant: vagrant-vbguest , ce qui permet de garder vos additions invitées VirtualBox à jour.

vagrant plugin install vagrant-vbguest

Source: https://github.com/aidanns/vagrant-reload/issues/4#issuecomment-23013408

12
xxxbence

Le dossier partagé fonctionnait auparavant pour moi, mais tout à coup, il ne fonctionnait plus (Virualbox - Host était Windows 7, Guest était OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

then mount -t vboxsf testsf /opt/tsf (testsf était le dossier du lecteur Windows C ajouté dans le dossier partagé Virtualbox --- et /opt/tsf était le dossier dans OpenSuse

5
MAlam

Mon hôte est Windows 10 mon VM invité est créé par vagabond. Cela a fonctionné pour moi:

vagrant plugin install vagrant-winnfsd
4
Kaiacode

J'utilise VirtualBox 5.1.20 et j'ai eu un problème similaire. Voici une URL à l'endroit où j'ai trouvé le correctif et le correctif que j'ai mis en œuvre:

# 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 à https://www.virtualbox.org/ticket/1667

3
Raymond Burkholder

J'ai également eu un système de travail qui a soudainement cessé de fonctionner avec l'erreur décrite.

Après avoir parcouru mes modules/lib /, il semblerait que le module vboxvfs n’existe plus. À la place, modprobe vboxsf était l'incantation requise pour que les choses redémarrent.

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

3
Tim N

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

SCÉNARIO 1:

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

1.1.a. En cas de VBoxLinuxAdditions, si
Construction des modules du noyau VirtualBox Guest Additions échoue,
Consultez le fichier journal dans / var/log/vboxadd-install.log. Si erreur est dû à version du noya mettez à jour votre noyau et redémarrez la machine virtuelle. En cas de Fedora,
1.1.b. yum update kernel *
1.1.c. redémarrage
1.2. Si rien n'échoue, alors tout va bien. Vous avez déjà la version de noyau attendue

SCÉNARIO 2:

Si VBoxGuestAdditions est installé (recherchez un dossier/opt/VBoxGuestAdditions- * est présent .... * représente la version), vous devez le démarrer avant de monter.

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

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

2.2.a. Obtenir l'id et le gid d'un utilisateur:
id -u <'utilisateur'>
id -g <'utilisateur'>
2.2.b. Paramétrer uid et gid dans les options de la commande mount:
mount -t vboxsf -o uid = x, gid = x nom_folder_partagé_dossier_hôte

2
yottabytt

Sur Ubuntu, cela a fonctionné:

Sudo apt-get install build-essential linux-headers-`uname -r` dkms
1
cstroe

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

(cliquez sur Devices -> Insert image Guest CD Additions)

1
Arch Linux Tux

J'ai ajouté en tant qu'utilisateur root

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

ensuite

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

et l'exemple de script /root/mount-vboxsf.sh (définissez vous-même les 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 avez besoin d'ajouter

chmod + /root/mount-vboxsf.sh
1
Diego piccinini

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

Cette ancienne image contenait une ancienne version du plug-in vbguest, que le plug-in plus récent vbguest sur ma machine ne pouvait pas utiliser.

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 fonctionné correctement.

# 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 à niveau mon plug-in vbguest lors de mes précédentes tentatives pour que cela fonctionne, en utilisant le processus suivant, mais je ne pense pas que cela ait 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 échoue avec les ajouts d'invité, essayez de procéder comme suit pour vous assurer que les plugins sont installés correctement. Ceci télécharge la dernière image basée sur votre système (pour moi CentOS), et peut résoudre le problème (cela s’est fait pour moi!)

$ vagrant box update
1
Brad Parks

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

Dernière version installée de VirtualBox 5.0.18 et dernière version de Vagrant 1.9.3, le problème est allé de l’avant.

1
Arun Sangal

Si vous êtes sur Debian:

1) supprimez tous les packages installés via le fichier ISO des additions invité Virtualbox:

sh /media/cdrom/VBoxLinuxAdditions.run uninstall

2) installer les packages Virtualbox:

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

Notez que même si modprobe vboxsf ne renvoie rien (le module est donc chargé correctement), le vboxsf.so appellera un exécutable nommé mount.vboxsf, fourni par virtualbox-guest-utils. Ignorer celui-ci vous empêchera de comprendre la cause réelle de l'erreur.

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

0
Yvan

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 installe les en-têtes du noyau kernel-devel

0
Jayen Chondigara

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

$ vagrant box update
$ vagrant plugin install vagrant-vbguest 
0
jetpackdata.com