【问题标题】:VirtualBox: mount.vboxsf: mounting failed with the error: No such device [closed]VirtualBox:mount.vboxsf:安装失败并出现错误:没有这样的设备[关闭]
【发布时间】:2015-04-04 09:52:40
【问题描述】:

我在来宾 VM 上使用带有 OS X 作为主机和 CentOS 的 VirtualBox。

在 OS X 中,我创建了文件夹 myfolder,将其作为共享文件夹添加到 VM,打开 VM,在 CentOS 中创建文件夹 /home/user/myfolder 并输入:

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

并有输出:

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

我做错了什么?

更新:

Guest Additions 已安装。

【问题讨论】:

  • 确保 Guest Additions 安装正确,你可能需要 sudo apt-get upgrade ;sudo apt-get install build-essential module-assistant; sudo m-a 准备;您需要查看正在构建的 Guest Aditions 模块...
  • 致遇到此问题的随机上网者:帮自己一个忙,看看第二个答案。
  • 提示 - sudo mount -t vboxsf sf_folder /home/user/folder,这里 sf_folderfolder 必须使用不同的名称
  • @jrharshath 哪个是“第二个答案”?排序可以改变。点击答案中的share获取永久链接。
  • @cnaize 好的,这是真正的答案。我确实花了几个小时试图弄清楚为什么这不起作用。是的,需要使文件夹 namd 和共享名称不同,否则 mount 命令不起作用。伙计们,这是真正的解决方案!

标签: macos centos virtual-machine virtualbox


【解决方案1】:

这是通过以下方式解决的:

yum install gcc kernel-devel make

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

【讨论】:

  • 运行所有更新都没有运气。抱歉,13 票赞成的答案确实效果更好
  • 我正在使用带有 RHEL 7 的 Windows 7 主机,这为我解决了问题(包括来自 gist 链接的信息)-谢谢!
  • 在 Ubuntu 上,这行得通:sudo apt-get install build-essential linux-headers-uname -rdkms
  • @AndrewShatnyy “回答 13 票赞成”是模棱两可的。请将永久链接发布到您所指的答案(点击答案下方的share
  • @wisbucky 你对,对不起。 stackoverflow.com/a/29456128/849187已经工作了两次
【解决方案2】:

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

sudo mount -t vboxsf Shared_Folder ~/SF/

给出以下结果:

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

我的解决方案是停止 vboxadd 并在此之后进行设置:

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

【讨论】:

  • 将我的 Ubuntu 12.04 vm 升级到 Ubuntu 14.04 后,我的共享文件夹在 vm 中为空,当尝试手动挂载时,我收到错误 /sbin/mount.vboxsf: mounting failed with the error: No such device。运行上述并重新启动系统后,我的共享文件夹就像升级前一样出现了......谢谢!
  • 在带有 Ubuntu 16.04 来宾的 VirtualBox 5.0.18 上问题仍然存在,这个解决方案对我有用。
  • 如何停止 vboxadd?
  • 谢谢!我还必须安装 vagrant-vbguest 插件 - stackoverflow.com/a/23752848/2043134
  • @aristofun @brainmurphy1 : 在同一个目录中,在sudo ./vboxadd setup 之前,你可以做sudo ./vboxadd stop。不确定是否还有必要,但我猜这就是那句话的意思。
【解决方案3】:

好吧,每个人都错过了一个基本事实。

mkdir /test - 在当前目录中创建子目录。

sudo mkdir /test - 在 Root 中创建目录。

因此,如果您的共享目录名称是 shared 并且您执行以下操作:

mkdir /test
sudo mount -t vboxsf shared /test

它会产生这个错误:

sbin/mount.vboxsf: mounting failed with the error: No such file or directory

因为目录放错地方了!是的,这就是这个错误所说的。错误不是说重新加载 VBOX 来宾选项。

但如果你这样做:

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

然后它就可以正常工作了。

令我惊讶的是有多少人建议重新加载 Vbox 来宾添加来解决这个错误或编写一个复杂的程序来解决在错误位置创建的目录。

【讨论】:

  • 遇到的错误是“没有这样的设备”,而不是“没有这样的文件或目录”。 :)
  • mynttest@mynttest-VirtualBox:/media/sf_shared$ sudo mkdir ~/test sudo mount -t vboxsf vbshared ~/test mkdir: invalid option -- 't' Try `mkdir --help' for更多信息。
  • mkdir /test 将在 / 中创建目录 /test。 sudo mkdir /test 将创建相同的目录,但归 root 而非当前用户所有。
  • 我遇到了同样的问题。所以我安装了kernel-devel.x86_64 0:2.6.32-754.11.1.el6,然后运行这些命令——cd /opt/VBoxGuestAdditions-*/initsudo ./vboxadd setup。这对我有用。
【解决方案4】:

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

modprobe -a vboxguest vboxsf vboxvideo

【讨论】:

  • 我的 vbox5.0.6 和 Centos 7 客户机上也发生了同样的问题。问题是我每次(重新)启动后都需要运行它。
  • 这是可行的,因为这些是您需要在客户机上运行的内核模块,以便 VirtualBox 能够正确执行其所有功能。具体来说,这里需要vboxsf(VirtualBox 共享文件夹)。您可以在 /etc/modules-load.d/ 的文件中每行列出这 3 个文件(可能称为 virtualbox.conf),以使此更改在重新启动后持续存在。
  • 在 Debian 8 客户机上,运行此命令会破坏视频输出。
【解决方案5】:

我还有一个工作系统突然停止工作并出现所描述的错误。

在我的 /lib/modules 中闲逛之后,vboxvfs 模块似乎已不复存在。相反,modprobe vboxsf 是让事情重新开始所必需的咒语。

不确定这种变化是什么时候发生的,但它让我印象深刻。

【讨论】:

  • 运行`sudo modprobe vboxsf`后对我有用
【解决方案6】:

除了@Mats answer,我还添加了更多信息(它在 Debian 8 上帮助了我)。

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

sudo mount -t vboxsf Shared_Folder ~/SF/

给了我以下结果:

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

我的解决方案是停止 vboxadd 并在此之后进行设置:

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

此时,如果还是出现如​​下错误:

没有这样的设备。 Guest Additions 安装可能失败。错误已登录/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/

更多信息(法语),请查看page

【讨论】:

  • apt-get install linux-headers-virtual 在 VirtualBox 上帮助 Lubuntu 15.04
  • /media/cdrom 在我的情况下是空的
  • 您是否单击了“设备”菜单中的“安装访客添加”?
【解决方案7】:

共享文件夹之前为我工作,但突然停止工作(Virualbox - 主机是 Windows 7,来宾是 OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

那么 mount -t vboxsf testsf /opt/tsftestsf是添加到Virtualbox共享文件夹中的Windows C盘文件夹---/opt/tsf是OpenSuse中的文件夹

【讨论】:

    【解决方案8】:

    在 Ubuntu 上这行得通:

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

    【讨论】:

      【解决方案9】:

          在两种情况下可能会出现错误/不正确的方法。检查两者并找出答案

      场景 1:

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

      1.1.a.在 VBoxLinuxAdditions 的情况下,如果
      构建 VirtualBox Guest Additions 内核模块 失败,
      检查 /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 用户的用户 ID 和组 ID 作为 mount 命令的选项。

      2.2.a.获取用户的uid和gid:
      id -u
      id -g
      2.2.b。在 mount 命令的选项中设置 uid 和 gid:
      mount -t vboxsf -o uid=x,gid=x    shared_folder_name    guest_folder

      【讨论】:

        【解决方案10】:

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

        流浪者

        如果您使用的是Vagrant(OS X:brew cask install vagrant),请运行:

        vagrant plugin install vagrant-vbguest
        vagrant vbguest
        

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

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

        也许您只是缺少内核头文件。

        虚拟机

        在 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查看。

          • 手动下载VM内部的iso file(例如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

              额外调试:cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

        3. 仔细检查内核扩展是否已启动并正在运行:

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

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

        构建主要的 Guest Additions 模块

        如果上述方法不起作用,这里有更复杂的步骤来解决它。这假设您已经安装了 VBoxGuestAdditions(如上所示)。

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

        没有找到当前运行内核的头文件。

        这意味着要么您没有安装内核源代码,要么找不到它们。

        如果您已经按照上面的说明安装了它们,请运行以下命令:

        $ 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

        试试:

        vagrant plugin install vagrant-vbguest vagrant vbgues
        

        如果不起作用,请为 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
        

        【讨论】:

        • RE CentOS 修复,它解决了我的问题,但请确保您已安装 gcc。
        • 使用 Chef 的测试厨房 (Vagrant),vagrant plugin install vagrant-vbguest 为我工作
        • 在我的情况下,这是因为在 Vagrant 和 Guest 之间声明的 GuestAdditions 不同。
        • vagrant plugin install vagrant-vbguest vagrant vbguest 也适用于 centos 7 并解决了该问题。谢谢
        【解决方案11】:

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

        安装 Vagrant 插件:vagrant-vbguest,它可以使您的 VirtualBox Guest Additions 保持最新。

        vagrant plugin install vagrant-vbguest
        

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

        【讨论】:

        • 谢谢,它帮了我很多(Y)
        【解决方案12】:

        我的主机是 Windows10,我的 VM 来宾是 vagrant 构建的 ubuntu。这对我有用:

        vagrant plugin install vagrant-winnfsd
        

        【讨论】:

          【解决方案13】:

          VirtualBox 5.0.16/rXXX 也有同样的问题

          安装了最新的 VirtualBox 5.0.18 并安装了最新的 Vagrant 1.9.3,问题解决了。

          【讨论】:

            【解决方案14】:

            我添加为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
            

            【讨论】:

              【解决方案15】:

              我正在运行 VirtualBox 5.1.20,并且遇到了类似的问题。这是我找到修复程序的 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,而不是我在脚本摘录中的内容。

              对于我在 vagrant 中用于添加的构建脚本:

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

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

              【讨论】:

                【解决方案16】:

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

                CentOS: sudo yum update && sudo yum -y install kernel-headers kernel-devel

                【讨论】:

                  【解决方案17】:

                  如果您使用的是 Debian:

                  1) 通过 Virtualbox Guest Additions ISO 文件删除所有已安装的软件包:

                  sh /media/cdrom/VBoxLinuxAdditions.run uninstall

                  2) 安装 Virtualbox 包:

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

                  请注意,即使 modprobe vboxsf 不返回任何内容(因此模块已正确加载),vboxsf.so 将调用名为 mount.vboxsf 的可执行文件,该可执行文件由 virtualbox-guest-utils 提供。忽略这一点会妨碍您了解错误的真正原因。

                  strace mount /your-directory 帮了大忙(/sbin/mount.vboxsf 上没有这样的文件或目录)。

                  【讨论】:

                    【解决方案18】:

                    对我来说解决方案更新客人添加

                    (单击设备 -> 插入访客添加 CD 映像)

                    【讨论】:

                      【解决方案19】:

                      对我来说,在 Mac 上,我发现我的机器上存储了一个旧的 VirtualBox 映像,没有元数据,所以它没有更新到最新版本。

                      该旧图像中安装了旧版本的 vbguest 插件,我机器上的新 vbguest 插件无法使用。

                      所以为了修复它,我只是删除了我的 Vagrant 所基于的图像,然后 Vagrant 下载了较新的版本,它运行良好。

                      # Remove an old version of the virtual box image that my vagrant was using    
                      $ vagrant box remove centos/7 
                      

                      你可以通过运行来找出你的机器上缓存了哪些盒子:

                      $ vagrant box list
                      

                      在我之前的尝试中,我还升级了我的 vbguest 插件以使其工作,使用以下过程,但我认为这没有帮助。仅供参考!

                      # Get rid of old plugins
                      vagrant plugin expunge 
                      
                      # Globally install the latest version of the vbguest plugin`
                      vagrant plugin install vagrant-vbguest 
                      

                      如果您在访客添加中发现自带框失败,您可以尝试执行以下操作以确保插件正确安装。这会为您的系统(对我 CentOS)和may resolve the issue(它为我做了!)下载基于最新的映像。

                      $ vagrant box update
                      

                      【讨论】:

                        【解决方案20】:

                        更新对我有用!

                        $ vagrant box update
                        $ vagrant plugin install vagrant-vbguest 
                        

                        【讨论】:

                          【解决方案21】:

                          以下两个命令对我有用。

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

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 2021-07-17
                            • 2017-08-28
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2021-07-31
                            • 2016-11-08
                            • 1970-01-01
                            相关资源
                            最近更新 更多