macos - the - VirtualBox: mount.vboxsf: el montaje falló con el error: No existe tal dispositivo
sbin mount vboxsf mounting failed with the error protocol error (21)
Estoy usando VirtualBox con OS X como host y CentOS en la VM invitada.
En OS XI creó la carpeta
myfolder
, la agregó como carpeta compartida a la VM, encendió la VM, en CentOS creó la carpeta
/home/user/myfolder
y
/home/user/myfolder
:
sudo mount -t vboxsf myfolder /home/user/myfolder
y tener salida:
/sbin/mount.vboxsf: mounting failed with the error: No such device
¿Qué estoy haciendo mal?
ACTUALIZADO:
Guest Additions
instaladas.
¡Una actualización me sirvió!
$ vagrant box update
$ vagrant plugin install vagrant-vbguest
Además de la respuesta @Mats , estoy agregando más información (me ayudó en Debian 8).
Mi carpeta / portapapeles compartido dejó de funcionar por alguna razón (probablemente debido a una instalación de parche en mi máquina virtual).
sudo mount -t vboxsf Shared_Folder ~/SF/
Me dio el siguiente resultado:
VirtualBox: mount.vboxsf: mounting failed with the error: No such device
La solución para mí fue detener vboxadd y hacer una configuración después de eso:
cd /opt/VBoxGuestAdditions-*/init
sudo ./vboxadd setup
En este punto, si aún recibe el siguiente error:
Hay tal dispositivo. La instalación de Guest Additions puede haber fallado. El error se ha registrado en
/var/log/vboxadd-install.log
Necesita instalar encabezados de Linux:
apt-get install linux-headers-$(uname -r)
entonces puedes instalar Guest Additions:
sh /media/cdrom/VBoxLinuxAdditions.run --nox11
y reinicia tu Linux:
reboot
¡entonces podrás montar tu carpeta compartida!
mount -t vboxsf Shared_Folder ~/SF/
Más información (en francés), consulte esta page .
Agregué como usuario root
/etc/rc.d/rc.local
/root/mount-vboxsf.sh
entonces
chmod +x /etc/rc.d/rc.local
y el script de ejemplo
/root/mount-vboxsf.sh
(configure sus propias opciones de uid y gid)
modprobe -a vboxguest vboxsf vboxvideo
mount -t vboxsf NAME_SHARED_DIRECTORY /media/sf_NAME_SHARED_DIRECTORY -o rw,uid=0,gid=0
necesitas agregar
chmod + /root/mount-vboxsf.sh
Debajo de dos comandos funciona para mí.
vagrant ssh
sudo mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
En Ubuntu esto funcionó:
sudo apt-get install build-essential linux-headers-`uname -r` dkms
Está bien, a todos les falta un hecho básico.
mkdir /test
- Crea un subdirectorio en el directorio actual.
sudo mkdir /test
- Crea un directorio en Root.
Entonces, si su nombre de directorio compartido es
shared
y usted hace lo siguiente:
mkdir /test
sudo mount -t vboxsf shared /test
Genera este error:
sbin/mount.vboxsf: mounting failed with the error: No such file or directory
¡Porque el directorio está en el lugar equivocado! Sí, eso es lo que dice este error. El error no dice recargar las opciones de invitado VBOX.
Pero si haces esto:
sudo mkdir ~/test
sudo mount -t vboxsf shared ~/test
Entonces funciona bien.
Realmente me sorprende cuántas personas sugieren recargar las adiciones de invitados de Vbox para resolver este error o escribir un programa complejo para resolver un directorio creado en el lugar equivocado.
Está utilizando carpetas compartidas, por lo que debe instalar VirtualBox Guest Additions dentro de su máquina virtual para admitir esa función.
Vagabundo
Si está utilizando
Vagrant
(OS X:
brew cask install vagrant
), ejecute:
vagrant plugin install vagrant-vbguest
vagrant vbguest
En caso de que falle, verifique los registros, por ej.
vagrant ssh -c "cat /var/log/vboxadd-install.log"
Tal vez solo te faltan los archivos de encabezado del núcleo.
VM
Dentro de VM, debe instalar Guest Additions, encabezados de kernel e iniciar el servicio y verificar si la extensión del kernel se está ejecutando.
Esto depende del sistema operativo invitado, así que aquí hay unos breves pasos:
-
Instale los encabezados de inclusión del núcleo (requerido por VBoxLinuxAdditions).
-
RHEL:
sudo apt-get update && sudo apt-get install kernel-devel
-
CentOS:
sudo yum update && sudo yum -y install kernel-headers kernel-devel
-
RHEL:
-
Instalar adiciones de invitados (esto depende del sistema operativo).
-
Ubuntu:
sudo apt-get -y install dkms build-essential linux-headers-$(uname -r) virtualbox-guest-additions-iso
Si no puede encontrarlo, verifique por
aptitude search virtualbox
. -
Debian :
sudo apt-get -y install build-essential module-assistant virtualbox-ose-guest-utils
Si no puede encontrarlo, consulte
dpkg -l | grep virtualbox
dpkg -l | grep virtualbox
. -
manualmente descargando el archivo iso dentro de VM (por ejemplo,
wget
) e instalándolo, por ejemplo-
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
cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run
adicional:cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run
-
-
-
Verifique que las extensiones del kernel estén en funcionamiento:
-
sudo modprobe vboxsf
-
-
Iniciar / reiniciar el servicio:
-
manualmente:
sudo /opt/VBoxGuestAdditions*/init/vboxadd setup
(agreguesudo sh -x
a la depuración) -
Debian:
sudo /etc/init.d/vboxadd-service start
-
Fedora:
sudo /etc/init.d/vboxdrv setup
-
CentOS:
sudo service VBoxService start
-
manualmente:
Construir el módulo principal de Adiciones para invitados
Si lo anterior no funcionó, aquí hay pasos más sofisticados para solucionarlo. Esto supone que ya ha instalado VBoxGuestAdditions (como se muestra arriba).
La razón más común por la que el montaje de la carpeta compartida no funciona puede estar relacionado con la construcción del módulo Guest Additions que falló.
Si en
/var/log/vboxadd-install.log
el siguiente error:
No se encontraron los encabezados para el núcleo actual en ejecución.
Esto significa que no instaló las fuentes del núcleo o que no se pueden encontrar.
Si ya los instaló como se indicó anteriormente, ejecute este 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
Entonces, básicamente, el script
vboxadd
espera que las fuentes de su núcleo estén disponibles en el siguiente directorio:
ls -la /lib/modules/$(uname -r)/build
Verifique si el directorio del núcleo existe (el enlace simbólico apunta a la carpeta existente).
Si no es así, instálelos en la carpeta correcta (por ejemplo, en
/usr/src/kernels
).
Entonces, el script
vboxadd
puede ingresar al directorio de origen del núcleo y ejecutar
make kernelrelease
, obtener el valor y compararlo con la versión actual del núcleo.
Aquí está la lógica:
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 versión del kernel no coincide con las fuentes, quizás deba actualizar su kernel de Linux (en caso de que las fuentes sean más nuevas que su kernel).
CentOS
Tratar:
vagrant plugin install vagrant-vbguest vagrant vbgues
Si no funciona, intente los siguientes pasos manuales para 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
Esta fue la única solución que funcionó para mí:
Instale el complemento Vagrant: vagrant-vbguest , que puede mantener sus Adiciones de invitados VirtualBox actualizadas.
vagrant plugin install vagrant-vbguest
Fuente: https://github.com/aidanns/vagrant-reload/issues/4#issuecomment-230134083
Esto fue resuelto por:
yum install gcc kernel-devel make
la solución está aquí: https://gist.github.com/larsar/1687725
Estoy ejecutando VirtualBox 5.1.20 y tuve un problema similar. Aquí hay una url donde encontré la solución y la solución que implementé:
# 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
El enlace tenía algo similar a /usr/lib/VBoxGuestAdditions/other/mount.vboxsf, en lugar de lo que tengo en el extracto del script.
Para un script de compilación que uso en vagabundo para las adiciones:
https://github.com/rburkholder/vagrant/blob/master/scripts/additions.sh
Parece ser una solución en https://www.virtualbox.org/ticket/16670
La solución para mí fue actualizar las adiciones de invitados
(haga clic en Dispositivos -> Insertar imagen de CD de Guest Additions)
La carpeta compartida funcionaba antes para mí, pero de repente dejó de funcionar (Virualbox: el host era Windows 7, el invitado era OpenSuSe)
modprobe -a vboxguest vboxsf vboxvideo
luego
mount -t vboxsf testsf /opt/tsf
testsf
(
testsf
era la carpeta en la unidad de Windows C que se agregó en la carpeta compartida de Virtualbox --- y
/opt/tsf
es la carpeta en OpenSuse
Mi carpeta / portapapeles compartido dejó de funcionar por alguna razón (probablemente debido a una instalación de parche en mi máquina virtual).
sudo mount -t vboxsf Shared_Folder ~/SF/
Dio el siguiente resultado:
VirtualBox: mount.vboxsf: mounting failed with the error: No such device
La solución para mí fue detener vboxadd y hacer una configuración después de eso:
cd /opt/VBoxGuestAdditions-*/init
sudo ./vboxadd setup
Mi host es Windows10 mi invitado VM es ubuntu construido por vagabundo. Esto funcionó para mí:
vagrant plugin install vagrant-winnfsd
Para mí, en una Mac, resultó que tenía una vieja imagen de VirtualBox almacenada en mi máquina que no tenía metadatos, por lo que no estaba siendo actualizada a la última versión.
Esa imagen anterior tenía instalada una versión anterior del complemento vbguest, con la que el nuevo complemento vbguest de mi máquina no podía funcionar.
Entonces, para solucionarlo, eliminé la imagen en la que se basaba mi Vagrant, y luego Vagrant descargó la versión más nueva y funcionó bien.
# Remove an old version of the virtual box image that my vagrant was using
$ vagrant box remove centos/7
Puede averiguar qué cajas ha almacenado en caché en su máquina ejecutando:
$ vagrant box list
También había actualizado mi complemento vbguest en mis intentos anteriores de hacer que esto funcionara, usando el siguiente proceso, pero no creo que esto haya ayudado. FYI!
# Get rid of old plugins
vagrant plugin expunge
# Globally install the latest version of the vbguest plugin`
vagrant plugin install vagrant-vbguest
Si encuentra que el cuadro trae errores en las adiciones de invitados, puede intentar hacer lo siguiente para asegurarse de que los complementos se instalen correctamente. Esto descarga la última imagen basada en su sistema (para mí CentOS) y puede resolver el problema (¡lo hizo para mí!)
$ vagrant box update
Puede haber errores / enfoque incorrecto en dos escenarios.
Comprueba ambos y descúbrelo
ESCENARIO 1 :
Una vez que esté ejecutando VBoxLinuxAdditions.run o VBoxSolarisAdditions.pkg o VBoxWindowsAdditions.exe, verifique si todos los módulos se están instalando correctamente.
1.1.a.
En el caso de
VBoxLinuxAdditions
, si
La creación de los módulos del núcleo de VirtualBox Guest Additions
falla,
verifique el archivo de registro en
/var/log/vboxadd-install.log
.
Si el
error
se debe a la
versión del kernel,
actualice su kernel y reinicie el vm.
En caso de
fedora
,
1.1.b.
núcleo de actualización de yum *
1.1.c.
reiniciar
1.2.
Si nada falla, entonces todo está bien.
Ya tienes la versión esperada del kernel
ESCENARIO 2:
Si el VBoxGuestAdditions está instalado (verifique si hay una carpeta / opt / VBoxGuestAdditions- * está presente ... * representa la versión) debe iniciarlo antes de montarlo.
2.1.
cd / opt / VBoxGuestAdditions - * / init && ./vboxadd start
Debe especificar la identificación de usuario y la identificación de grupo de su usuario vm como opciones para el comando de montaje.
2.2.a.
Obtener uid y gid de un usuario:
id -u <''usuario''>
id -g <''usuario''>
2.2.b.
Configuración de uid y gid en las opciones del comando mount:
mount -t vboxsf -o uid = x, gid = x shared_folder_name guest_folder
Puedo resolver esto ejecutando debajo del comando
modprobe -a vboxguest vboxsf vboxvideo
Si estás en Debian:
1) elimine todos los paquetes instalados a través del archivo ISO de Virtualbox Guest Additions:
sh /media/cdrom/VBoxLinuxAdditions.run uninstall
2) instalar paquetes de Virtualbox:
apt-get install build-essential module-assistant virtualbox-guest-dkms virtualbox-guest-utils
Tenga en cuenta que incluso con
modprobe vboxsf
no devuelve nada (por lo que el módulo se carga correctamente),
vboxsf.so
llamará a un ejecutable llamado
mount.vboxsf
, que es proporcionado por
virtualbox-guest-utils
.
Ignorar esto evitará que comprenda la causa real del error.
strace mount /your-directory
fue de gran ayuda (No
/sbin/mount.vboxsf
tal archivo o directorio en
/sbin/mount.vboxsf
).
También tenía un sistema de trabajo que de repente dejó de funcionar con el error descrito.
Después de buscar en mi / lib / modules parecería que el módulo
vboxvfs
ya no existe.
En cambio,
modprobe vboxsf
fue el encantamiento requerido para reiniciar las cosas.
No estoy seguro de cuándo ocurrió ese cambio, pero me sorprendió.
Tengo un problema similar, verifique el encabezado si no coincide y ejecute debajo del comando
CentOS: sudo yum update && sudo yum -y install kernel-headers kernel-devel
Tuve el mismo problema con VirtualBox 5.0.16 / rXXX
Instalé la última versión de VirtualBox 5.0.18 e instalé la última versión de Vagrant 1.9.3.