VirtualBox:mount.vboxsf:安装失败,错误:没有这样的设备

我使用OS X的VirtualBox作为宿主虚拟机上的主机和CentOS。

在OS XI创build的文件夹myfolder ,将其作为共享文件夹添加到VM,打开VM,在CentOS创build的文件夹/home/user/myfolderinput:

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

并有输出:

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

我做错了什么?

更新:

Guest Additions

我的共享文件夹/剪贴板因某种原因停止工作(可能是由于我的虚拟机上安装了修补程序)。

sudo mount -t vboxsf Shared_Folder ~/SF/

得出以下结果:

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

对我来说,解决scheme是停止vboxadd,然后做一个设置:

 cd /opt/VBoxGuestAdditions-*/init sudo ./vboxadd setup 

我可以通过运行下面的命令来解决这个问题

modprobe -a vboxguest vboxsf vboxvideo

您正在使用共享文件夹,因此您需要在您的虚拟机中安装VirtualBox Guest Additions以支持该function。

stream浪汉

如果你使用的是stream浪汉 (OS X: brew cask install vagrant ),运行:

 vagrant plugin install vagrant-vbguest vagrant vbguest 

如果失败,请检查日志,例如

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

也许你只是错过了内核头文件。

VM

在VM内部,您应该安装Guest Additions,内核头文件并启动服务,然后仔细检查内核扩展是否正在运行。

这取决于客户操作系统,所以这里是简单的步骤:

  1. 安装内核包含头文件(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. 安装Guest Additions(这取决于操作系统)。

    • Ubuntu: sudo apt-get -y install dkms build-essential linux-headers-$(uname -r) virtualbox-guest-additions-iso

      如果找不到,请通过aptitude search virtualbox检查。

    • Debian : sudo apt-get -y install build-essential module-assistant virtualbox-ose-guest-utils

      如果找不到,请通过dpkg -l | grep virtualbox检查 dpkg -l | grep virtualbox

    • 通过下载虚拟机​​内的ISO文件 (例如wget )并安装它,例如手动

      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

        额外的debugging: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

  3. 仔细检查内核扩展是否正常运行:

    • sudo modprobe vboxsf
  4. 启动/重启服务:

    • 手动: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup (添加sudo sh -x来debugging)
    • Debian: sudo /etc/init.d/vboxadd-service start
    • Fedora: sudo /etc/init.d/vboxdrv setup
    • CentOS: sudo service VBoxService start

构build主要的Guest Additions模块

如果上面没有工作,这里有更复杂的步骤来解决它。 这假定你已经安装了VBoxGuestAdditions(如上所示)。

挂载共享文件夹不起作用的最常见原因可能与build立失败的Guest Additions模块有关。 如果在/var/log/vboxadd-install.log出现以下错误:

没有find当前正在运行的内核的标头。

这意味着要么你没有安装内核源代码,要么无法find它们。

如果您已按照上面的指示安装它们,请运行以下命令:

 $ 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 

所以基本上vboxadd脚本期待您的内核源码在以下目录中可用:

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

检查内核目录是否存在(符号链接指向现有文件夹)。 如果不是,请将它们安装到正确的文件夹(例如在/usr/src/kernels )。

所以vboxadd脚本可以进入你的内核源码目录并运行make kernelrelease ,获取值并与你当前的内核版本进行比较。

这是逻辑:

 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 

如果内核版本与源代码不匹配,也许你需要升级你的Linux内核(如果源代码比内核更新的话)。

CentOS的

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 

除了@Mats的答案 ,我添加了一些更多的信息(它帮助我在Debian 8)。

我的共享文件夹/剪贴板因某种原因停止工作(可能是由于我的虚拟机上安装了修补程序)。

 sudo mount -t vboxsf Shared_Folder ~/SF/ 

给我以下结果:

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

对我来说,解决scheme是停止vboxadd,然后做一个设置:

 cd /opt/VBoxGuestAdditions-*/init sudo ./vboxadd setup 

此时,如果仍然出现以下错误:

无此设备。 Guest Additions安装可能失败。 该错误已logging在/var/log/vboxadd-install.log

你需要安装linux头文件:

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

那么你可以安装Guest Additions:

 sh /media/cdrom/VBoxLinuxAdditions.run --nox11 

并通过以下方式重启你的Linux

 reboot 

那么你将能够安装你的共享文件夹!

 mount -t vboxsf Shared_Folder ~/SF/ 

更多信息(法语),请查看此页面 。

这通过以下解决:

 yum install gcc kernel-devel make 

解决方法是在这里: https : //gist.github.com/larsar/1687725

这是唯一对我有用的解决scheme:

安装Vagrant插件: vagrant-vbguest ,它可以让你的VirtualBox Guest Additions保持最新状态。

 vagrant plugin install vagrant-vbguest 

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

共享文件夹早些时候为我工作,但突然间,它停止工作(Virualbox – 主机是Windows 7的,来宾是OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

然后mount -t vboxsf testsf /opt/tsftestsf是Windows C驱动器中添加到Virtualbox共享文件夹中的文件夹— /opt/tsf/opt/tsf中的文件夹

我的主机是Windows10我的虚拟机guest是由ubuntubuild立的。 这对我工作:

 vagrant plugin install vagrant-winnfsd 

我正在运行VirtualBox 5.1.20,并有类似的问题。 以下是我find修复程序的url,以及我实施的修复程序:

 # 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 

该链接与/usr/lib/VBoxGuestAdditions/other/mount.vboxsf类似,而不是脚本摘录中的内容。

对于我用于stream浪者的构build脚本来补充:

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

似乎是在https://www.virtualbox.org/ticket/16670修复;

我也有一个工作系统,突然停止工作与描述的错误。

在我的/ lib /模块之后,看起来vboxvfs模块已经vboxvfs 。 相反, modprobe vboxsf是让事情重新启动所需的咒语。

不知道什么时候发生这种变化,但却把我抓出来了。

在两种情况下可能有错误/不正确的方法。 检查它并找出它

情景1:

运行VBoxLinuxAdditions.run或VBoxSolarisAdditions.pkg或VBoxWindowsAdditions.exe后,检查是否所有模块都已正确安装。

1.1.a. 在VBoxLinuxAdditions的情况下,如果
构buildVirtualBox Guest添加内核模块失败,
检查/var/log/vboxadd-install.log中的日志文件。 如果错误是由于内核版本更新你的内核并重新启动虚拟机。 在fedora的情况下,
1.1.b. yum更新内核*
1.1.c. 重启
1.2。 如果没有任何失败,那么一切都很好。 您已经拥有预期的内核版本

情景2:

如果安装了VBoxGuestAdditions(检查文件夹/ opt / VBoxGuestAdditions- *是否存在…. *表示版本),则需要在安装之前启动它。

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

您需要将您的vm用户的用户标识和组标识指定为mount命令的选项。

二。二.2 获取用户的uid和gid:
id -u <'user'>
id -g <'user'>
2.2.b. 在安装命令的选项中设置uid和gid:
mount -t vboxsf -o uid = x,gid = x shared_folder_name guest_folder

在Ubuntu上这工作:

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

与VirtualBox 5.0.16 / rXXX有相同的问题

安装了最新的VirtualBox 5.0.18并安装了最新的Vagrant 1.9.3,问题发生了。

我作为root用户添加

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

然后

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

和示例脚本/root/mount-vboxsf.sh (设置你自己的uid和gid选项)

 modprobe -a vboxguest vboxsf vboxvideo mount -t vboxsf NAME_SHARED_DIRECTORY /media/sf_NAME_SHARED_DIRECTORY -o rw,uid=0,gid=0 

你需要添加

 chmod + /root/mount-vboxsf.sh 

我有类似的问题,检查标题,如果不匹配,然后运行下面的命令

CentOS:sudo yum update && sudo yum -y安装kernel-headers kernel-devel

好的,每个人都缺less一个基本的事实

mkdir / test – 使当前目录中的子目录

sudo mkdir / test – 在Root中创build目录

所以,如果您的共享目录名称是“共享”,并执行以下操作

mkdir / test sudo mount -t vboxsf shared / test

产生这个错误

sbin / mount.vboxsf:安装失败,出现错误:没有这样的文件或目录

因为目录是在错误的地方! 是的,这就是这个错误所说的。 错误不是说重新加载VBOX访客选项。

但如果你这样做

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

然后它工作正常。

它真的让我感到惊讶,有多less人build议重新加载Vbox guest虚拟机来解决这个错误,或者写一个复杂的程序来解决在错误的地方创build的目录。