windows - 如何在 Windows 主机和 Ubuntu18.04 客户机之间创建 Virtualbox 共享文件夹
问题描述
我已经阅读了有关从主机共享文件夹到 Virtualbox 来宾机器的文档和所有问题,但仍然无法正常工作。在我的情况下,主机是 Windows 机器,来宾是 Ubuntu18.04 服务器机器。
建议的内容和我已经尝试过的内容:
1) 在 VM 的菜单中,我找到了“设备”子菜单并单击“插入访客添加 CD 映像”选项,然后状态栏中的 CD 图标亮起,显示 CD 已插入,iso 的路径为 C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso (我检查了该文件确实存在于那里)。
2) 在同一个“设备”VM 的设置子菜单中,我打开了“共享文件夹设置”并添加了名为“test”和路径“D:\test”的共享文件夹,该文件夹指向我的 D: 磁盘上包含测试文件的文件夹。
3)我重新启动我的 Ubuntu VM 并查看 /media 目录,期望找到 /media/cdrom 目录或类似的目录,其中包含文件 VBoxLinuxAdditions.run,应该根据文档运行。但是 /media 目录是空的,所以我与它无关。我在其他目录中查找此文件但没有成功。
之后,我尝试按照 ubuntu 论坛的建议从存储库安装 Virtualbox-guest-additions:
sudo apt-get update
sudo apt-get install virtualbox-guest-dkms
并检查该软件包是否已使用以下命令安装:
lsmod | grep -io vboxguest
但是当我重新启动并尝试使用以下方式安装共享文件夹时:
mkdir -p /home/myusername/test
sudo mount -t vboxsf test /home/myusername/test
我有错误:
mount: /home/myusername/test: wrong fs type, bad option, bad superblock on /home/myusername/test, missing codepage or helper program or other error.
我看到没有 /sbin/mount.vboxsf 链接,我不确定这是否是一个问题,我也尝试将我的用户添加到“vboxsf”组:
sudo usermod -a -G vboxsf myusername
但该组也没有创建。
我错过了什么,让它发挥作用的方法是什么?
解决方案
经过一整天尝试不同的解决方案后,我终于找到了缺失的成分。但是我将部分重复我的主题内容,并为像我这样在这项任务中苦苦挣扎的人提供分步说明。
我们假设我们已经安装了 Ubuntu 18.04 VM,并且在这台机器上具有 sudo 权限的 linux 用户“myusername”。
因此,要将 Windows 主机上的文件夹 D:\test(仅作为示例)共享到 Ubuntu 18.04 Virtualbox 的客户机(它的内容应该在 /home/myusername/test 目录中可用),我们执行以下步骤:
1) 从 VirtualBox 界面启动 Ubuntu VM
2)在启动的Ubuntu VM窗口上方菜单的“设备”子菜单中打开“共享文件夹设置”,将共享文件夹名称设置为“test”,路径设置为“/home/myusername/test”,并勾选“Make永恒的”
3) 使用包管理器将 virtualbox-guest-dkms 和 virtualbox-guest-utils 包安装到 Ubuntu VM。
sudo apt-get update
sudo apt-get install virtualbox-guest-dkms
sudo apt-get install virtualbox-guest-utils
4) 在你的 Ubuntu VM 上创建一个目录 /home/myusername/test
mkdir /home/myusername/test
5) 重启 Ubuntu 虚拟机
reboot
6) 使用命令在 Ubuntu VM 中重新启动挂载共享文件夹后
mount -t vboxsf test /home/myusername/test
7) 检查 /home/myusername/test 目录中的文件,它们应该与位于 Windows D:\test 文件夹中的文件相同
ls /home/myusername/test
8)此外,您可以在重新启动后自动安装此共享文件夹,为此您需要将下一行添加到您的 ubuntu 用户的 /home/myusername/.profile 文件中:
echo "sudo mount -t vboxsf test /home/myusername/test" >> /home/myusername/.profile
并通过打开“sudo visudo”命令(用于更改 /etc/sudoers 文件)授予您的用户无需输入密码即可挂载的权限,并添加下一行:
myusername ALL = (ALL) NOPASSWD: /bin/mount
就是这样,在这些步骤之后,我设法将文件从 Windows 主机共享到 Ubuntu 客户机。我想提一下,共享目录本身和其中的所有文件都属于 root,但具有 777 权限,因此使用它们没有问题,因为任何用户都可以对它们做任何他想做的事情。
推荐阅读
- node.js - 如何将 mp4 视频转换为 (.m3u8) 播放列表 nodejs
- nginx - Ngnix 反向代理 - url 重写以避免弹性企业搜索应用程序中的“localhost”
- php - 获取函数的结果并将其带到另一个函数
- api - GET API 请求到 github repo
- spring - Spring Cloud Config Server:当无效的 Yaml 配置文件抛出 ParserException 时侦听 ApplicationFailedEvent
- python - 我怎样才能在阅读 csv 文件的字典中获得更多解决方案?
- python - 由于数据库上的元数据锁定,SQL Alchemy 不会在测试结束时删除表
- java - 通过 Mainactivity 管理按钮可见性当前片段
- active-directory - DistinguishedName EndsWith 的 LDAP 过滤器?
- php - 更新购物篮/购物车页面 WooCommerce 产品附加组件上的购物篮自定义属性