如何挂载VirtualBox共享文件夹?[关闭]


58

在Linux中安装VirtualBox共享文件夹的过程是什么?

我尝试了以下安装命令的变体,但仍然protocol error出现错误或其他安装错误。

sudo mount -t vboxsf share /home/toto

这是个问题吗?请重新表述,以使其成为一个问题,并发表您自己的答案,我将非常高兴删除该反对票。
icedwater

1
编辑以符合问答标准。

请更新问题,您尝试了什么以及遇到了什么错误

编辑以显示非工作命令。常见错误protocol error如所述。

对于此“装载:未知文件系统类型'vboxsf'”的任何解决方案,我都会收到此错误消息
sandip divekar 2014年

Answers:


111

好的,这让我有些困惑,但我终于意识到发生了什么。因此,我决定给我2美分,以期对其他人和以后忘记的时候会更加清楚:)。

我没有使用我在VM中创建的共享的名称,而是当共享的名称为wd时使用了sharevb_share,因此一分钟让我感到困惑。

首先将您的共享目录添加到VM Box中: 在此处输入图片说明

无论您在此处命名什么共享,都将是在vm guest虚拟机OS中挂载时需要使用的名称。例如,我将西方数字护照驱动器命名为“ wd”

接下来,在guset OS上,最好在主目录中创建一个要用于安装的目录。

mkdir share

接下来打开终端,复制并粘贴以下内容或输入内容。您可以在“ 设备”->“共享剪贴板”->“双向”下启用共享剪贴板

sudo mount -t vboxsf wd ~/share/

现在,您应该可以使用主目录中的“共享”文件夹在操作系统之间复制文件。

希望这可以帮助!


1
我花了几个小时来了解如何从Guest中获取文件。原来,“ mount”命令中的“ sharename”(来自VBox官方文档)是在第一列“共享文件夹”虚拟框中指定的一个名称。干得好,你是我的英雄。
zen11625 2014年

2
很好的答案,为屏幕截图+1 ...但是我相信这会以root身份挂载共享。有关如何将其安装为当前用户,请参见[docs](forums.virtualbox.org/viewtopic.php?t=15868),例如:sudo mount -t vboxsf -o rw,uid=1000,gid=1000 share ~/host
timbrown

@user如何在启动时自动安装此挂载?

如果您不知道用户ID,则可以使用变量。在这种情况下,土墩命令变为sudo mount -t vboxsf -o uid=$UID,gid=$(id -g) wd ~/share

28

对于具有Linux guest虚拟机的VirtualBox,这些是安装共享文件夹的步骤:

  1. 使用VirtualBox主机的应用程序VirtualBox Manager来指定要共享的主机文件夹。

  2. 确保在VirtualBox guest虚拟机中安装了VirtualBox Guest Additions。

  3. 在Linux guest虚拟机中,mount命令应显示已挂载共享的行。用表示type vboxsf。问题是挂载点可能不在所需的位置,并且权限仅是root用户。默认的安装位置在中/media/sf_

  4. 您可以通过使用户或group的group ID成为group 1000的成员来访问共享vboxsf。这是通过更改文件中的vboxsf行来完成的/etc/group。可能需要重启。

  5. 您可以使用VBoxControl命令更改文件夹的安装位置。当安装来宾添加时,将安装该命令。可能需要重启。例如,要将安装点从更改/media/sf_.../home/toto/sf_...使用以下命令来设置VirtualBox共享文件夹guestproperty:

sudo VBoxControl guestproperty set / VirtualBox / GuestAdd / SharedFolders / MountDir / home / toto /

要确认更改,请使用get:

sudo VBoxControl guestproperty get /VirtualBox/GuestAdd/SharedFolders/MountDir

参考文献:

VirtualBox的共享文件夹信息

VirtualBox的来宾属性信息


4
新问题,使用Vbox 4.3.10的链接已断开,请检查以确认(ls -l)/sbin/mount.vboxsf如果该目标不存在,则必须重新映射目录: sudo ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
ppostma1 2014年

4
要将用户myuser添加到vboxsf组,可以使用:sudo adduser myuser vboxsf

:VirtualBox的4.3.14修复客户添置安装问题的RHEL 7和CentOS 7.使用安装客户添置if-not-true-then-false.com/2010/...

我在Windows 8.1上使用VirtualBox 4.3.20。我在VM中安装了Ubuntu。即使安装了来宾设备type vboxsf,运行mount命令时也看不到!请大家帮忙
J86

20

遇到时:

mount: Protocol error

尝试在VirtualBox中共享文件夹后,例如:

$ sudo mount -o uid=1000,gid=1000 -t vboxsf D_DRIVE ~/host

这终于为我工作:

$ sudo apt-get install virtualbox-guest-dkms

(我的设置:Windows 7主机,来宾:Ubuntu 12.04,13.10,14.04;当前正在运行VBox 4.3.10 r93012)


5

在来宾操作系统上安装虚拟盒附加组件。然后关闭来宾操作系统。在虚拟框中打开guestos设置。然后添加一个共享文件夹并保存设置。然后启动来宾操作系统,对于ubuntu,请发出以下命令。它将当前用户添加到vboxsf组。

须藤adduser $ USER vboxsf

重新启动来宾操作系统,并导航到/ media /以访问共享文件夹。


sudo adduser对我不起作用我添加为使用“ sudo usermod -a -G vboxsf myUser”,它可以工作。谢谢
Alex

1
是的,这就是所缺少的:sudo adduser $ USER vboxsf现在可以使用了:-)

3

在Linux或Mac OS X VirtualBox guest虚拟机中,一旦安装了VirtualBox Guest Additions,就可以使用以下命令发现可用的VirtualBox共享文件夹:

sudo  VBoxControl  sharedfolder  list

如果来宾中的主文件夹包含与VirtualBox共享文件夹同名的文件夹,则可以使用以下Shell脚本自动挂载它们:

#!/bin/sh
#-----------------------------------------------------------------------------
# Discover VirtualBox shared folders and mount them if it makes sense
#-----------------------------------------------------------------------------

if  !  type  VBoxControl  > /dev/null;  then
  echo  'VirtualBox Guest Additions NOT found'  > /dev/stderr
  exit 1
fi

MY_UID="$(id -u)"
MY_GID="$(id -g)"

( set -x;  sudo  VBoxControl  sharedfolder  list; )  |  \
grep      '^ *[0-9][0-9]* *- *'                      |  \
sed  -e 's/^ *[0-9][0-9]* *- *//'                    |  \
while  read  SHARED_FOLDER
do
  MOUNT_POINT="$HOME/$SHARED_FOLDER"
  if  [ -d "$MOUNT_POINT" ];  then
    MOUNTED="$(mount  |  grep  "$MOUNT_POINT")"
    if  [ "$MOUNTED" ];  then
      echo  "Already mounted :  $MOUNTED"
    else
      (
        set -x
        sudo  mount  -t vboxsf  -o "nosuid,uid=$MY_UID,gid=$MY_GID"  "$SHARED_FOLDER"  "$MOUNT_POINT"
      )
    fi
  fi
done

1

当您收到以下错误时:/sbin/mount.vboxsf:安装失败,并显示以下错误:协议错误

不幸的是,这意味着您使用的默认共享名或主机的共享目录名与装入的来宾共享名相同。在这种情况下,它是“共享”。只需创建另一个共享文件夹,即“ vb_share”,然后执行:

mount -t vboxsf vb_share / home / <用户> /主机


1
  • 安装Vbox附加文件(ISO文件或下载)
  • 在两个系统中创建一个具有任何名称的目录(mkdir share例如)
  • 与“ VBox共享文件夹”连接原始系统中的共享文件夹
  • 使用命令连接您的文件夹:
    sudo mount -t vboxsf name_of_folder_linked ~/name_of_folder_guest/

0

设置:VirtualBox 4.3.26,Win 7 SP1主机,Debian jessie 8.0(稳定)来宾。

在VirtualBox Manager中,在“ 设备”下拉菜单中选择“ 共享文件夹设置... ” 。

在出现的弹出窗口中,在“ 文件夹列表 ”中选择“ 计算机文件夹”,然后单击“添加新的共享文件夹定义”按钮(文件夹列表右侧的带有绿色“ +”号图标的蓝色文件)。

在出现的“ 添加共享”弹出式窗体中,单击“ 文件夹路径”字段中的向下箭头按钮,然后选择“ 其他”。一个浏览文件夹会出现弹出窗口。

(就我而言,我刚刚在工作站上添加了另一个硬盘驱动器以用于专用共享,该共享已针对NTFS进行了格式化,其卷名为“ share”,并挂载为“ G:”。因此,我单击了箭头在“ 计算机”旁边,选择驱动器G :,然后单击“ 确定”按钮。)

(在您的情况下,应选择要共享的任何文件夹或驱动器,然后单击“ 确定”按钮。)

做出选择并单击“ 确定”按钮后,VirtualBox Manager将填写“ 添加共享”表单的“ 文件夹路径”和“ 文件夹名称”字段。保留“ 文件夹路径”字段,但是如果您愿意,可以更改文件夹名称 -只需记住它以备后用。

选中“ 设为永久”复选框,以完成“ 添加共享”表单,但请确保清除“ 自动安装”复选框-我们将在以后进行安装。(当然,如果要将文件夹或驱动器设为只读,请继续并选中“ 只读”框。)然后单击“ 确定”按钮。

现在,新配置的共享应显示为“ 文件夹列表”中“ 计算机文件夹”下的条目。单击确定按钮。

为了在启动(启动)期间安装此共享,我们需要在Debian jessie guest虚拟机安装中的/ etc / fstab中添加一个安装定义行。此编辑需要以root用户或通过sudo完成,例如:

sudo nano /etc/fstab

(我个人使用了vi,但是因为nano是Debian jessie的默认编辑器,所以在上面的示例中指定了它。)

为了将此共享装载到我的主目录中,并将其所有权和组设置为我的个人UID和GID,我在/ etc / fstab中添加了以下定义:

share /home/conib/share vboxsf comment=systemd.automount,uid=conib,gid=conib,noauto 0 0

(请注意,“ =”,“。”或“,”字符之间没有空格。)

/ etc / fstab定义的格式为

<Device> <Mount Point> <Type> <Options> <Dump> <Pass>

(请注意,定义的字段之间应该有空格-和/或制表符,但字段内没有空格。)

“设备”字段应设置为我们通过VirtualBox Manager 添加共享指定的文件夹名称。我已将默认的“ G_DRIVE”更改为“ share”。

“挂载点”是目录路径规范,必须已存在但应为空。(也就是说,该目录中已经存在的所有内容都将被其顶部的内容所隐藏。)我在主目录中创建了一个名为“ share”的新的空子目录。

“类型”是“ vboxsf”。

“选项”(comment = systemd.automount,uid = conib,gid = conib,noauto)比较棘手,为该设置工作有点麻烦。

除非您知道要将其设置为其他值,否则将“ Dump”设置为0。

并且由于我们不希望fsck检查此共享,因此也将“ Pass”设置为0。

将定义行添加到/ etc / fstab后,重新启动Debian guest虚拟机,并确认您可以看到Share的文件和子文件夹。

HTH。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.