在启动时在Ubuntu VM中安装VirtualBox SharedFolder

我有一个在VirtualBox中运行的Ubuntu VM。
我有一个共享文件夹设置为myshare我在我的主目录( ~/jamesw )中创建了一个文件夹作为host 。 使用sudo mount -t vboxsf myshare host来自终端中我的主目录的sudo mount -t vboxsf myshare host正确安装驱动器,但如果我重新启动它不会再次安装。

这是一个用于运行简单Web服务器的VM,我希望每次启动时都会安装此Share。 有没有办法做到这一点? 特别是考虑到它需要sudo?

使用Virtual Box Manager自动安装共享文件夹

从Virtual Box> 4.0,我们可以在虚拟机中自动挂载共享文件夹 。 要为Ubuntu这样做我们

  • 需要在来宾操作系统中安装Guest Additions
  • 确保用户在组vboxsf
  • 从Virtual Box Manager定义共享文件夹

右键单击虚拟机,然后选择“设置” – >“共享文件夹” 。 这将列出现有共享,或者通过单击右上角带有绿色+标志的蓝色文件夹图标来定义新的共享文件夹:

在此处输入图像描述

从下拉菜单“ 文件夹路径”中选择文件夹,或者为列出主机文件系统的文件选择器选择“ 定义其他 ”。 选择共享的名称(例如, myshares )。 通过勾选自动挂载,此文件夹将始终挂载在Ubuntu来宾目录/media/sf_myshares (将自动添加前缀sf_ )。


或者,要在正在运行的客户操作系统中定义共享文件夹,我们可以从Virtual Box Manager的窗口菜单中选择设备 – >共享文件夹

在此处输入图像描述

通过勾选Make Permanent,这些共享文件夹也将在下次启动时可用,并在添加自动挂载时安装

我不认为使用/ etc / fstab会起作用(它对我不起作用),因为该文件在加载SF模块之前处理并且无法挂载共享,请参阅HOWTO:使用共享文件夹1 。

这还不是一个完整的答案,但更像是有两种方法的指南:

1 – 你可以编辑/etc/fstab并在那里添加这个mount。 您需要将mount参数转换为fstab语法。 一个疯狂的猜测就像/home/jamesw/host vboxsf myshare,umask=002,uid=,gid=plugdev 0 0 。 你需要sudo来编辑你的fstab,但是,一旦完成,它将在启动时自动挂载。 由于这是在您登录之前完成的,因此您需要一个到挂载点的绝对路径(因此/ home / jamesw / host),您不能使用$HOME~ 。 提示:“host”文件夹不需要存在。 如果它在fstab中,mount将为您创建它。

2 – 您可以使用fusermount而不是mount。 语法类似(但不完全相同,因此您仍需要翻译mount参数)。 Fusermount要求您的挂载点位于$ HOME内的某个位置,但最大的优点是您不需要sudo 。 在Nautilus中可以使用挂载(就好像它是CD或USB密钥)。 获得正确的参数并对其进行测试后,可以将其添加到~/.profile ,每次登录时都会运行。

编辑:我假设Virtualbox不需要机器实际运行它来共享文件夹,或者它已启动并运行在您登录之前

Ubuntu 16.04来宾和共享文件夹自动挂载可由普通用户访问

为了以普通用户身份自动挂载和访问这些文件夹,需要执行特定步骤。

  1. 不要使用官方客人添加。 而是安装virtualbox-guest-dkms

     sudo apt-get install -y virtualbox-guest-dkms sudo usermod -aG vboxsf $(whoami) sudo VBoxControl guestproperty set /VirtualBox/GuestAdd/SharedFolders/MountDir ~/vbshare 
  2. 使用Auto-mountPermanent选中添加一些共享文件夹。

  3. 重启vm。
  4. 检查是否安装了任何vb文件夹:

    mount | grep vboxsf

  5. 如果是这样, ~/vbshare所有权更改为您自己。

     sudo chown $(whoami):$(whoami) ~/vbshare 

添加新的共享文件夹而不重新启动VM

  1. 添加共享文件夹。
  2. 检查是否可以通过此命令找到它:

    sudo VBoxControl sharedfolder list

  3. 如果是这样,请创建目录并安装

     mkdir ~/vbshare/newfolder sudo mount -t vboxsf newfolder ~/vbshare/newfolder