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é.
Ceci a été résolu par:
yum install gcc kernel-devel make
la solution de contournement est ici: https://Gist.github.com/larsar/1687725
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
Vous utilisez des dossiers de partage, vous devez donc installer VirtualBox Guest Additions dans votre machine virtuelle pour prendre en charge cette fonctionnalité.
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.
À 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:
Installez les en-têtes du noyau (requis par VBoxLinuxAdditions).
Sudo apt-get update && Sudo apt-get install kernel-devel
Sudo yum update && Sudo yum -y install kernel-headers kernel-devel
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.
wget http://download.virtualbox.org/virtualbox/5.0.16/VBoxGuestAdditions_5.0.16.iso -P /tmp
Sudo mount -o loop /tmp/VBoxGuestAdditions_5.0.16.iso /mnt
Sudo sh -x /mnt/VBoxLinuxAdditions.run # --keep
Débogage supplémentaire: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run
Vérifiez à nouveau que les extensions de noyau sont opérationnelles:
Sudo modprobe vboxsf
Démarrer/redémarrer le service:
Sudo /opt/VBoxGuestAdditions*/init/vboxadd setup
(ajoute Sudo sh -x
au débogage)Sudo /etc/init.d/vboxadd-service start
Sudo /etc/init.d/vboxdrv setup
Sudo service VBoxService start
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).
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
Je suis capable de résoudre ce problème en exécutant la commande ci-dessous
modprobe -a vboxguest vboxsf vboxvideo
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 .
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
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
Mon hôte est Windows 10 mon VM invité est créé par vagabond. Cela a fonctionné pour moi:
vagrant plugin install vagrant-winnfsd
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
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.
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
Sur Ubuntu, cela a fonctionné:
Sudo apt-get install build-essential linux-headers-`uname -r` dkms
Le solution pour moi était de mettre à jour les ajouts d'invité
(cliquez sur Devices -> Insert image Guest CD Additions)
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
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
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.
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
).
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
Une mise à jour a fait l'affaire pour moi!
$ vagrant box update
$ vagrant plugin install vagrant-vbguest