为 Linux 客户机操作系统配置 VirtualBox 共享文件夹

逐步设置 VirtualBox 共享文件夹的指南

目录

在Linux Guest OS中配置VirtualBox共享文件夹,请按照以下步骤操作:

VirtualBox共享文件夹配置窗口

1. 安装VirtualBox Guest Additions

要在Guest OS中启用共享文件夹支持,必须安装Guest Additions:

  • 启动Guest。
  • 在VirtualBox菜单中,选择:
设备 > 插入Guest Additions CD映像

插入Guest Additions CD映像截图

  • 在Guest中打开终端,如果需要,挂载CD并运行安装程序:
sudo sh /media/$USER/VBox_GAs_*/VBoxLinuxAdditions.run
  • 安装完成后重启Guest。

  • 将您的用户添加到Guest中的vboxsf组(这对于访问权限至关重要):

sudo usermod -aG vboxsf $(whoami)

` 重启或注销/登录以使组更改生效。

2. 在主机上的VirtualBox管理器中配置共享文件夹

  • 右键点击您的虚拟机,进入:
设置 > 共享文件夹
  • 点击添加共享文件夹按钮。
  • 设置以下内容:
    • 文件夹路径:您Linux主机上要共享的文件夹。
    • 文件夹名称:在Guest中引用的名称(例如,share)。
    • 可选勾选自动挂载,以便在启动时自动挂载。
    • 可选勾选设为永久,以实现持久共享。

3. 在Linux Guest中挂载共享文件夹

如果启用了自动挂载,VirtualBox将在启动时自动挂载共享文件夹,通常位于/media/sf_(例如,/media/sf_share),并具有vboxsf组的访问权限。

如果您想手动挂载或挂载到自定义位置:

  • 创建挂载点:
mkdir ~/host_share
  • 使用以下命令挂载:
sudo mount -t vboxsf  ~/host_share

在启动时自动挂载共享文件夹

在Linux Guest中,推荐的做法是在Guest的/etc/fstab中添加共享文件夹的条目。 这可以确保每次系统启动时都挂载该文件夹。

以root身份使用文本编辑器打开/etc/fstab

sudo nano /etc/fstab

添加如下一行,将sharename/home/youruser/host_share替换为您所需的路径(例如,/mnt/shared):

sharename   /home/youruser/host_share   vboxsf  defaults  0   0

sharename是在VirtualBox共享文件夹设置中定义的名称。

创建挂载点(如果不存在):

mkdir -p /home/youruser/host_share

挂载所有文件系统或重启以测试:

sudo mount -a

检查共享文件夹是否现在可以访问。

访问、权限与故障排除

  • 共享文件夹在Guest中将由root:vboxsf拥有。
  • 确保您的Guest用户在vboxsf组中(使用id $USER检查)。
  • 如果遇到权限问题,请确保您在vboxsf组中,并在将自己添加到该组后注销/登录(或重启)。
  • 对于更复杂的需求或动态/条件挂载,您还可以使用systemd自动挂载单元,但/etc/fstab是Linux上VirtualBox共享文件夹最直接和可靠的方法。

这种方法将确保您的VirtualBox共享文件夹在每次系统启动时自动挂载

VirtualBox无法在VMX根模式下运行

如果您收到以下错误,该错误归咎于KVM内核模块:

VBoxManage: error:
VirtualBox can't operate in VMX root mode.
Please disable the KVM kernel extension, recompile your kernel and reboot
(VERR_VMX_IN_VMX_ROOT_MODE)

VBoxManage: error:
Details:
code NS_ERROR_FAILURE (0x80004005),
component ConsoleWrap, interface IConsole

请自行承担风险进行以下操作。 您可以在Ubuntu 24.04上尝试临时禁用此错误,但请确保当前没有人正在使用kvm:

lsmod | grep kvm
lsof | grep kvm
sudo modprobe -r kvm_intel 

如果您愿意,也可以尝试禁用并重新编译,如果您经常使用VirtualBox。

检查kvm是否已加载(在收到VirtualBox错误时应为已加载):

lsmod | grep kvm

检查kvm是否当前正在使用中:

lsof | grep kvm

如果没有输出,kvm当前未被使用,内核模块可以安全卸载:

sudo rmmod kvm_intel # 或 kvm_amd 在AMD CPU上
sudo rmmod kvm

这将仅在当前会话中卸载内核模块。要禁用启动时的kvm,需要将其加入黑名单并更新initramfs。将以下内容添加到/etc/modprobe.d/blacklist-kvm.conf

blacklist kvm
blacklist kvm_intel   # 或 kvm_amd

更新initramfs并重启:

sudo update-initramfs -u
sudo reboot

有用的链接