将物理机(宿主机)上的文件共享给VirtualBox虚拟机,最常用、最稳定且最高效的方法是使用VirtualBox的“共享文件夹”功能,这需要在虚拟机内安装额外的驱动(Guest Additions),但设置好后,共享体验接近本地磁盘访问。
核心方法:使用VirtualBox共享文件夹
原理: 此功能允许你将宿主机上的一个目录(文件夹)映射为虚拟机内部的一个网络位置或特殊设备,实现双向文件传输。
前提条件:
- VirtualBox已安装: 在物理机上正确安装最新版VirtualBox。
- 虚拟机已创建: 目标虚拟机(客户机)已创建并可以正常运行。
- VirtualBox Guest Additions已安装: 这是最关键的一步! 必须在虚拟机操作系统内部安装VirtualBox提供的增强功能包(Guest Additions),它包含了实现共享文件夹所需的驱动和工具。
- 如何安装Guest Additions:
- 启动目标虚拟机。
- 在VirtualBox窗口顶部的菜单栏,点击
设备(Devices)
->安装Guest Additions CD映像...(Insert Guest Additions CD image...)
。 - 虚拟机系统内通常会弹出一个自动运行的安装程序(Windows)或自动挂载CD(Linux/macOS),如果没有自动运行:
- Windows: 打开“此电脑/我的电脑”,找到新出现的CD驱动器(通常名为
VBox_GAs_版本号
),双击运行里面的VBoxWindowsAdditions.exe
,按照提示安装(可能需要管理员权限),安装完成后重启虚拟机。 - Linux (图形界面): 文件管理器通常会显示挂载的CD,打开并运行对应的安装脚本(通常是
VBoxLinuxAdditions.run
),打开终端(Terminal),导航到挂载点(通常是/media/用户名/VBOXADDITIONS_版本号/
或/run/media/用户名/VBOXADDITIONS_版本号/
),然后执行:sudo sh ./VBoxLinuxAdditions.run
输入密码,等待安装完成,通常需要重启虚拟机。
- Linux (命令行): 确保系统已安装必要的内核头文件和编译工具(如
build-essential
,kernel-devel
等,具体取决于发行版),挂载CD(如果未自动挂载):sudo mount /dev/cdrom /media/cdrom # 挂载点可能需要调整 cd /media/cdrom sudo sh ./VBoxLinuxAdditions.run
安装完成后重启。
- Windows: 打开“此电脑/我的电脑”,找到新出现的CD驱动器(通常名为
- macOS (客户机): 安装过程与Linux类似,通常会自动挂载,打开终端,进入挂载点(可能在
/Volumes/VBox_GAs_版本号
),运行安装脚本(可能需要sudo
)。
- 如何安装Guest Additions:
设置共享文件夹步骤:
- 关闭虚拟机: 在配置共享文件夹之前,最好先关闭目标虚拟机(
关闭
->正常关机
)。 - 打开虚拟机设置:
- 在VirtualBox主界面,选中目标虚拟机(不要启动)。
- 点击顶部的
设置(Settings)
按钮(或右键虚拟机选择设置
)。
- 进入共享文件夹设置:
- 在设置窗口左侧导航栏,点击
共享文件夹(Shared Folders)
。
- 在设置窗口左侧导航栏,点击
- 添加新的共享:
- 在右侧面板的顶部,点击文件夹图标旁边带 号的小按钮(添加共享文件夹)。
- 弹出“添加共享文件夹”对话框。
- 配置共享属性:
- 文件夹路径(Folder Path): 点击下拉框右侧的文件夹图标,浏览并选择物理机上你想共享的目录(文件夹),也可以直接输入路径(如
C:UsersYourNameSharedDocs
或/home/yourname/shared
)。 - 文件夹名称(Folder Name): 重要! 这是该共享在虚拟机内部访问时使用的标识符,建议使用简短、无空格、无特殊字符的名字(
MySharedDocs
,HostShare
),虚拟机将通过这个名字来访问共享。 - 挂载点(Mount Point) (可选,主要用于Linux/Unix): 对于Linux/Unix客户机,你可以指定共享在虚拟机内挂载到的完整路径(
/mnt/host_share
),如果留空,VirtualBox通常会自动挂载到/media/sf_<FolderName>
(需要vboxsf
组权限)或/run/media/<user>/sf_<FolderName>
。Windows客户机忽略此项。 - 只读分配(Read-only): 勾选此项,则虚拟机只能读取共享文件夹内容,不能修改或写入,默认不勾选,允许读写。
- 自动挂载(Auto-mount): 强烈建议勾选! 这样每次虚拟机启动时,会自动挂载该共享文件夹,否则需要每次手动挂载。
- 固定分配(Make Permanent): 默认勾选。 确保该共享设置是永久性的,保存在虚拟机配置中,不要取消。
- 文件夹路径(Folder Path): 点击下拉框右侧的文件夹图标,浏览并选择物理机上你想共享的目录(文件夹),也可以直接输入路径(如
- 确认添加: 点击
确定(OK)
或添加(Add)
按钮。 - 应用设置: 在共享文件夹设置主界面,你会看到新添加的共享条目,点击底部的
确定(OK)
保存所有虚拟机设置并关闭窗口。 - 启动虚拟机并访问共享:
- 启动虚拟机。
- 访问方式取决于虚拟机操作系统:
- Windows 客户机:
- 打开“文件资源管理器”。
- 在左侧导航栏或“此电脑/我的电脑”中,查找名为
网络位置(Network locations)
或网络(Network)
的部分。 - 你应该能看到一个名为
VBOXSVR
或VirtualBox Shared Folders
的网络计算机/设备。 - 双击打开
VBOXSVR
,里面就会列出你设置的文件夹名称(Folder Name)
(如MySharedDocs
),双击即可访问共享内容。 - 或者: 在文件资源管理器的地址栏直接输入
\VBOXSVR<FolderName>
(\VBOXSVRMySharedDocs
) 并按回车。
- Linux 客户机 (图形界面):
- 打开文件管理器(如 Nautilus, Dolphin, Thunar)。
- 通常在左侧边栏的“网络(Network)”或“设备(Devices)”部分,可能会找到名为
sf_<FolderName>
的项(sf_MySharedDocs
)。 - 或者在文件管理器中直接导航到你在设置中指定的
挂载点(Mount Point)
(如/mnt/host_share
),或者VirtualBox自动挂载的默认位置(如/media/sf_MySharedDocs
或/run/media/<user>/sf_MySharedDocs
)。 - 权限问题: 默认情况下,只有
root
用户和属于vboxsf
用户组的用户才能访问自动挂载的共享文件夹(通常是/media/sf_*
路径)。- 将你的普通用户添加到
vboxsf
组:sudo usermod -aG vboxsf $USER
- 执行此命令后,必须注销当前用户并重新登录,或者重启虚拟机,才能使组权限生效,之后即可正常访问。
- 将你的普通用户添加到
- Linux/Unix 客户机 (命令行):
- 使用
mount
命令查看已挂载的文件系统,通常能找到类型为vboxsf
的挂载点(如/media/sf_MySharedDocs
)。 - 使用
cd
命令切换到挂载点目录即可访问文件。 - 同样需要确保你的用户属于
vboxsf
组(见上面图形界面的权限说明)。
- 使用
- macOS 客户机:
- 打开“访达(Finder)”。
- 在左侧边栏的“位置(Locations)”下,可能会看到共享文件夹的名称。
- 或者使用“前往(Go)”菜单 -> “前往文件夹(Go to Folder…)”,输入挂载点路径(如
/Volumes/<FolderName>
或你在设置中指定的路径)。
- Windows 客户机:
其他共享方法(备选,通常不如共享文件夹方便高效):
- 网络共享 (SMB/NFS/FTP等):
- 原理: 在物理机上设置一个网络共享(如Windows的SMB共享或Linux的NFS/Samba共享),然后在虚拟机内像访问局域网上的其他电脑一样访问这个共享。
- 优点: 不需要安装Guest Additions;跨平台兼容性好(不同虚拟机软件甚至物理机之间都可以用)。
- 缺点: 设置相对复杂(涉及宿主机网络共享设置、防火墙、虚拟机网络模式配置);速度通常不如VirtualBox共享文件夹快(走的是网络协议栈);需要配置用户权限;依赖于网络连接。
- 何时考虑: Guest Additions无法安装或不稳定;需要非常复杂的访问控制;需要在不同虚拟化平台间共享。
- 使用USB存储设备:
- 原理: 将文件复制到U盘或移动硬盘,然后在VirtualBox中将该USB设备直接连接到虚拟机使用。
- 优点: 操作简单直观;无需复杂配置。
- 缺点: 需要物理设备;文件传输是手动且非实时的(需要插拔设备或切换连接);不适合频繁共享或大文件共享;需要在虚拟机设置中配置USB筛选器。
- 何时考虑: 偶尔传输少量文件;Guest Additions和网络共享都不可行。
常见问题与故障排除 (体现E-A-T的Troubleshooting经验):
- 虚拟机里看不到共享文件夹/VBOXSVR:
- 首要检查: Guest Additions是否正确安装并成功运行?重启虚拟机试试,在虚拟机内检查是否有VirtualBox Guest Additions相关的服务/进程在运行。
- Windows客户机: 确保“网络发现”和“文件和打印机共享”已启用(在“网络和共享中心”->“高级共享设置”),检查防火墙是否阻止了访问。
- Linux客户机: 确认用户是否已加入
vboxsf
组?执行groups
命令查看,执行sudo usermod -aG vboxsf $USER
后必须注销/重启才生效,检查挂载点是否存在且有权限访问(ls -ld /media/sf_*
),尝试手动挂载(需要知道共享名和挂载点):sudo mount -t vboxsf <FolderName> <MountPoint>
(
sudo mount -t vboxsf MySharedDocs /mnt/myshare
) - 所有系统: 检查虚拟机设置 -> 共享文件夹 -> 确保共享已添加、
自动挂载
勾选、固定分配
勾选、路径和名称正确,尝试关闭虚拟机再重新添加一次共享文件夹设置。
- 无法写入共享文件夹(只读):
- 检查共享文件夹设置中的
只读分配(Read-only)
是否被取消勾选。 - Linux客户机: 确认用户属于
vboxsf
组且有写权限,检查挂载点的权限(ls -ld <MountPoint>
),有时宿主机的NTFS/FAT32分区权限或文件系统本身的只读标志也可能导致问题。
- 检查共享文件夹设置中的
- 共享文件夹性能慢:
- 确保使用的是 VirtualBox共享文件夹 而不是网络共享。
- 检查虚拟机是否分配了足够的CPU和内存资源。
- 如果宿主机是Windows,尝试关闭宿主机上的杀毒软件实时扫描(谨慎操作)或将共享文件夹加入排除列表。
- 确保虚拟机网络适配器设置正确(例如使用
NAT
或仅主机(Host-Only)
而不是桥接(Bridged)
,除非必要),避免网络流量干扰(虽然共享文件夹不直接走这个网络)。
- 安装Guest Additions失败:
- Linux: 最常见的原因是缺少内核头文件 (
linux-headers-$(uname -r)
) 或编译工具 (build-essential
,dkms
),确保系统已更新 (sudo apt update && sudo apt upgrade
/sudo yum update
),根据错误信息搜索解决方案。 - 确保虚拟机有网络连接以下载可能的依赖包。
- 尝试在虚拟机启动时按
F8
(或右Ctrl+F8
显示VirtualBox菜单) 选择安全模式启动(Windows),然后再安装Guest Additions。 - 检查VirtualBox和Guest Additions ISO的版本是否匹配(通常用VirtualBox自动下载的ISO最好)。
- Linux: 最常见的原因是缺少内核头文件 (
安全提示 (体现E-A-T的责任感):
- 最小权限原则: 只共享必要的文件夹,避免共享整个系统盘或用户主目录,在共享设置中考虑是否启用“只读”。
- 警惕恶意软件: 共享文件夹是双向通道,虚拟机内的恶意软件可能通过共享文件夹感染宿主机,确保虚拟机系统和宿主机系统都有可靠的安全防护(杀毒软件/防火墙)。
- 敏感数据: 避免通过共享文件夹传输高度敏感的信息(如密码、密钥),除非你完全信任虚拟机和宿主机的安全性,考虑使用加密容器或更安全的传输方式。
对于大多数用户,安装VirtualBox Guest Additions并使用内置的“共享文件夹”功能是实现物理机与VirtualBox虚拟机之间高效、便捷、稳定文件共享的最佳方案,务必仔细完成Guest Additions的安装,并正确配置共享文件夹的名称、路径和权限(尤其是Linux下的 vboxsf
用户组),网络共享和USB设备可以作为特定场景下的补充方案,遇到问题时,优先检查Guest Additions状态和用户权限设置。
引用说明:
- 本文操作步骤基于Oracle VM VirtualBox官方文档中关于“共享文件夹”和“Guest Additions”的核心功能描述。
- 常见问题解决方案参考了VirtualBox官方论坛、社区Wiki以及主流操作系统(Windows, Linux发行版如Ubuntu/Fedora)的通用文件共享和权限管理知识。
- 安全提示基于通用的信息安全最佳实践。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/32669.html