VirtualBox: mount.vboxsf: le assembly a échoué avec l’erreur: aucun périphérique de ce type

J’utilise VirtualBox avec OS X comme hôte et CentOS sur la machine virtuelle invitée.

Dans le dossier créé par OS XI, myfolder ajouté en tant que dossier partagé à la machine virtuelle, activé la machine virtuelle, dans le dossier /home/user/myfolder créé par CentOS et en tapant:

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

et avoir sortie:

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

Qu’est-ce que je fais mal?

ACTUALISÉ:

Guest Additions installés.

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

    sudo mount -t vboxsf Shared_Folder ~/SF/

    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 

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

    modprobe -a vboxguest vboxsf vboxvideo

    Vous utilisez des dossiers de partage, vous devez donc installer les compléments d’invité VirtualBox 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" 

    Vous manquez peut-être juste les fichiers d’en-tête du kernel.

    VM

    Dans VM, vous devez installer les additions invité, les en-têtes du kernel et démarrer le service et vérifier si l’extension du kernel 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 d’inclusion du kernel (requirejs 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 ajouts d’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 dpkg -l | grep virtualbox .

      • manuellement en téléchargeant le fichier iso à l’ intérieur de la 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

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

    3. Vérifiez que les extensions du kernel sont opérationnelles:

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

      • manuellement: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup (ajoutez sudo sh -x au debug)
      • Debian: sudo /etc/init.d/vboxadd-service start
      • Fedora: sudo /etc/init.d/vboxdrv setup
      • CentOS: sudo service VBoxService start

    Construire le module principal Additions invité

    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 assembly du dossier partagé ne fonctionne pas peut être liée à la création du module Additions invité qui a échoué. Si dans /var/log/vboxadd-install.log vous avez l’erreur suivante:

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

    Cela signifie que vous n’avez pas installé les sources du kernel ou qu’elles ne sont pas trouvées.

    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, en gros, le script vboxadd s’attend à ce que les sources de votre kernel soient disponibles dans le vboxadd suivant:

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

    Vérifiez si le répertoire du kernel 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 le répertoire source de votre kernel et exécuter make kernelrelease , obtenir la valeur et comparer avec la version actuelle du kernel.

    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 kernel ne correspond pas aux sources, vous devrez peut-être mettre à jour votre kernel Linux (si les sources sont plus récentes que votre kernel).

    CentOS

    Exemple d’étapes de fixation 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 

    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é s’est arrêté pour fonctionner pour une raison quelconque (probablement 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:

    Pas de 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 des ajouts d’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, consultez cette page .

    C’était la seule solution pour moi:

    Installez le plug – in Vagrant: vagrant-vbguest , qui peut garder vos ajouts d’invité VirtualBox à jour.

     vagrant plugin install vagrant-vbguest 

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

    Cela a été résolu par:

     yum install gcc kernel-devel make 

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

    Le dossier partagé fonctionnait plus tôt pour moi mais tout à coup, il ne fonctionnait plus (Virualbox – l’hôte était Windows 7, Invité était OpenSuSe)

    modprobe -a vboxguest vboxsf vboxvideo

    puis mount -t vboxsf testsf /opt/tsf ( testsf était le dossier dans le lecteur Windows C ajouté dans le dossier partagé de Virtualbox — et /opt/tsf est le dossier dans OpenSuse)

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

     vagrant plugin install vagrant-winnfsd 

    J’exécute 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 les vagrants pour les ajouts:

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

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

    J’avais aussi 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 ne soit plus. Au lieu de cela, modprobe vboxsf était l’incantation nécessaire pour redémarrer.

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

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

    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 Dans le cas de VBoxLinuxAdditions , si
    La construction des modules du kernel VirtualBox Guest Additions échoue,
    Vérifiez le fichier journal dans /var/log/vboxadd-install.log . Si l’ erreur est due à la version du kernel, mettez à jour votre kernel et redémarrez la vm. En cas de fedora ,
    1.1.b. Mise à jour du kernel *
    1.1.c redémarrer
    1.2. Si rien n’est échoué, alors tout va bien. Vous avez déjà la version du kernel 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 le assembly.

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

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

    2.2.a. Obtenir un nom d’utilisateur et un identifiant d’utilisateur:
    id -u <'utilisateur'>
    id -g <'utilisateur'>
    2.2.b. Définir uid et gid dans les options de la commande mount:
    mount -t vboxsf -o uid = x, gid = x nom_dossier-partagé guest_folder

    Sur Ubuntu cela a fonctionné:

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

    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 survenu.

    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 avez besoin d’append

     chmod + /root/mount-vboxsf.sh 

    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 kernel kernel-devel

    Si vous êtes sur Debian:

    1) Supprimez tous les packages installés via le fichier ISO des compléments Virtualbox Guest:

    sh /media/cdrom/VBoxLinuxAdditions.run uninstall

    2) installer les paquets Virtualbox:

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

    Notez que même si modprobe vboxsf ne retourne rien (le module est correctement chargé), vboxsf.so appelle 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 une aide /sbin/mount.vboxsf (aucun fichier ou répertoire de ce type sur /sbin/mount.vboxsf ).

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

    (cliquez sur Périphériques -> Insérer une image de CD des ajouts d’invité)

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

    Cette ancienne image comportait une ancienne version du plug-in vbguest, que le nouveau plug-in vbguest de ma machine ne pouvait pas utiliser.

    Donc, pour résoudre ce problème, je viens de supprimer l’image sur laquelle mon vagrant était basé, puis Vagrant a téléchargé la nouvelle version 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 trouver les boîtes que vous avez mises en cache sur votre machine en exécutant:

     $ vagrant box list 

    J’avais également mis à jour mon plug-in vbguest dans mes tentatives précédentes 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 

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

     $ vagrant box update $ vagrant plugin install vagrant-vbguest 

    Deux commandes ci-dessous fonctionnent pour moi.

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

    Ok, tout le monde manque un fait de base.

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

    sudo mkdir /test – Crée un répertoire dans Root.

    Donc, si le nom de votre répertoire partagé est shared et 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 recharger les options invité VBOX.

    Mais si vous faites ceci:

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

    Alors ça marche bien.

    Cela m’étonne vraiment combien de personnes suggèrent de recharger les ajouts d’invités Vbox pour résoudre cette erreur ou pour écrire un programme complexe afin de résoudre un répertoire créé au mauvais endroit.