我在 VirtualBox 中运行 Ubuntu VM。
我设置了一个共享文件夹,因为我在主目录 ( )myshare
中创建了一个文件夹。使用终端中主目录中的行可以正确安装驱动器,但如果我重新启动,它就不会再次安装。 ~/jamesw
host
sudo mount -t vboxsf myshare host
这是我用来运行简单 Web 服务器的虚拟机,我希望每次启动时都安装此共享。有什么办法吗?特别是考虑到它需要 sudo?
答案1
使用 Virtual Box Manager 自动挂载共享文件夹
从 Virtual Box > 4.0 开始,我们可以自动挂载共享文件夹在虚拟机中。对于 Ubuntu,我们
- 需要安装新增嘉宾在客户操作系统中
- 确保用户在组中
vboxsf
- 从 Virtual Box Manager 定义共享文件夹
右键单击您的虚拟机并选择设置->共享文件夹+。这将列出现有共享或让您通过单击右上角带有绿色“-”符号的蓝色文件夹图标来定义新的共享文件夹:
从下拉菜单中选择您的文件夹文件夹路径或选择定义其他列出主机文件系统的文件选择器。选择共享的名称(例如我的分享)通过勾选自动挂载该文件夹将始终挂载在 Ubuntu 客户机目录中/media/sf_myshares
(前缀sf_
将自动添加)。
或者,要在正在运行的客户操作系统中定义共享文件夹,我们可以选择设备 -> 共享文件夹从 Virtual Box Manager 的窗口菜单中:
通过勾选使永久生效这些共享文件夹也将在下次启动时可用,并将在以下情况下挂载:自动挂载已另外勾选。
答案2
我认为使用 /etc/fstab 不会起作用(对我来说不起作用),因为该文件在加载 SF 模块之前进行处理,并且无法挂载共享,请参阅操作方法:使用共享文件夹1。
答案3
这还不是一个完整的答案,但更像是针对您所拥有的两种方法的指南:
1 - 您可以/etc/fstab
在那里编辑并添加此挂载。您需要将挂载参数转换为 fstab 语法。大胆猜测应该是这样的/home/jamesw/host vboxsf myshare,umask=002,uid=<youruser>,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 不需要机器实际运行来共享文件夹,或者它在您登录之前已经启动并运行
答案4
Ubuntu 16.04 客户机和共享文件夹自动挂载,普通用户可以访问
为了以普通用户身份自动挂载并访问这些文件夹,需要执行特定步骤。
不要使用官方的访客添加功能。而是安装
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
添加一些共享文件夹
Auto-mount
并Permanent
进行检查。- 重新启动虚拟机。
检查是否安装了任何 vb 文件夹:
mount | grep vboxsf
如果是,则将所有权更改为
~/vbshare
您自己。sudo chown $(whoami):$(whoami) ~/vbshare
无需重启虚拟机即可添加新的共享文件夹
- 添加共享文件夹。
检查是否可以用以下命令找到它:
sudo VBoxControl sharedfolder list
如果是,则创建目录并挂载
mkdir ~/vbshare/newfolder sudo mount -t vboxsf newfolder ~/vbshare/newfolder