with vboxsf the such sbin protocol mounting failed error macos centos virtual-machine virtualbox

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:

  1. 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
  2. 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

      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 adicional: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

  3. Verifique que las extensiones del kernel estén en funcionamiento:

    • sudo modprobe vboxsf
  4. Iniciar / reiniciar el servicio:

    • manualmente: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup (agregue sudo 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

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




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.