VirtualBox 6.0 提供了一个名为“图形控制器”的新设置。有四个选项可供选择:
- 没有任何
- VGA接口
- 虚拟视频图形卡
- VGA接口
在用户手册中我发现了以下信息:
图形控制器:指定客户虚拟机使用的图形适配器类型。请注意,您必须在客户虚拟机上安装客户机附加组件才能指定 VBoxSVGA 或 VMSVGA 图形控制器。以下选项可用:
– VBoxSVGA:使用 Linux 或 Windows 7 或更高版本的新虚拟机的默认图形控制器。与旧版 VBoxVGA 选项相比,此图形控制器提高了性能和 3D 支持。
– VBoxVGA:将此图形控制器用于旧版客户操作系统。这是 Windows 7 之前 Windows 版本的默认图形控制器。
– VMSVGA:使用此图形控制器模拟 VMware SVGA 图形设备。
– 无:不模拟图形适配器类型。
但它仍然没有描述其中哪一个以及为什么我应该选择它们。
什么时候我应该选择无?
VMSVGA 比 VBoxSVGA 更好吗?
VBoxVGA 有什么问题?
我已经在 efi 和传统模式下使用 virtualbox 6.0.4 测试了 archlinux-2019.02.01-x86_64.iso 的启动:
┌──────────┬─────────────────────────────────┬─────────────┐
│ Adapter │ EFI mode │ Legacy mode │
├──────────┼─────────────────────────────────┼─────────────┤
│ VBoxVGA │ ok │ ok │
│ VMSVGA │ ok in systemd-boot menu, │ ok │
│ │ then black screen for some time │ │
│ │ when booting, then becomes ok │ │
│ VBoxSVGA │ black screen │ ok │
└──────────┴─────────────────────────────────┴─────────────┘
我还注意到,使用 VMSVGA 和 VBoxSVGA 传递 video=XRESxYRES 参数时会被忽略:
+----------+----------------+--------------+
| Adapter | EFI mode | Legacy mode |
+----------+----------------+--------------+
| VBoxVGA | works | works |
| VMSVGA | doesn't work | doesn't work |
| VBoxSVGA | could not test | doesn't work |
+----------+----------------+--------------+
但是仍然可以使用 fbset 在启动后设置一些被忽略的分辨率。
答案1
根据我在源代码中发现的内容:
VGA接口
这模拟了 VirtualBox 特定的图形适配器,与以前的版本(<6.0.0)相同。
- 这是为以前版本的 VirtualBox(<6.0.0)和 Windows 7 之前的 Windows 客户机创建的映像的默认设置。
- 它具有某种形式的 3D 直通,但是 - 如果我没记错的话 - 它使用了一种不安全的方法,只是让客户机将任何和所有命令转储到主机 GPU。
- 在 Linux 客户机上使用它需要安装客户机附加组件,因为主线 Linux 内核尚不支持此适配器。
- 仅支持 64 位 Windows 10 和所有 Linux 客户机上的 OpenGL 1.1。
此选项可能只是为了提供连续性——升级到 6.0 后,所有旧虚拟机都会自动选择此模式,因此不会出现意外的行为变化;你不会失去你所需的任何加速度之前有。
虚拟视频图形卡
这使用“VMware SVGA 3D”加速方法模拟 VMware Workstation 图形适配器。
- 与手册所述相反,这是当前 Linux 客户机的默认设置。
- 它应该提供比旧方法更好的性能和安全性。
- 这是由主线 Linux 内核支持的,使用SVGA 驱动程序。
- 在所有 Windows 和 Linux 客户机上支持 OpenGL 2.1。
- 它还可能具有支持旧操作系统的优势,这些操作系统具有 VMware 客户机添加功能,但没有 VirtualBox 客户机添加功能。(我计划在 Windows 9x 上进行测试,否则即使是 VESA 显卡也很难与 VirtualBox 协同工作)
VGA接口
这提供了一种像 VMSVGA 一样工作的混合设备(包括其新的 3D 加速功能),但报告与 VBoxVGA 相同的旧 PCI VID:PID。
- 这是 Windows 客户机的默认设置。
- 这种模式的优点是,您可以升级现有的虚拟机(以前使用 VBoxVGA 并安装了 VirtualBox 视频驱动程序),并且它们不会在升级过程中丢失图形 - 它们仍然可以看到相同的设备,直到您稍后升级“客户添加项”以启用 3D 加速。
- 此外,由于它仍然是 VMware SVGA模仿通过 VirtualBox,选择此选项并使用 VirtualBox 驱动程序可能仍然比 VMware 驱动程序有优势,例如允许使用 VirtualBox 特定的附加功能。
“没有任何”
显然,这根本不是模拟图形。仅当您通过 PCI 直通提供真实 GPU 时才使用它,或者您的系统绝对没有需要GPU。
来源
答案2
但他们做明确地告诉你什么时候应该选择它们:
– VBoxSVGA:使用 Linux 或 Windows 7 或更高版本的新 VM 的默认图形控制器。与旧版 VBoxVGA 选项相比,此图形控制器提高了性能和 3D 支持。
- Linux 或 Windows >7
- 提高性能和 3D 支持
– VBoxVGA:将此图形控制器用于旧版客户操作系统。这是 Windows 7 之前 Windows 版本的默认图形控制器。
- (推断)性能略低,但与旧操作系统的兼容性更好
- 旧操作系统或 Windows < 7
– VMSVGA:使用此图形控制器模拟 VMware SVGA 图形设备。
- 模拟 VMWare 设备
- 最好是你的虚拟机最初是在 VMWare 上设置的,并且安装了他们的工具
- 可能不如 VBox 卡快,因为它试图与其他东西兼容。
– 无:不模拟图形适配器类型。
- 您不需要图形适配器
,即您想要以无头方式或通过 SSH 运行机器,并且不需要模拟图形的开销。 - 可以提高性能,因为它删除了一层或模拟
答案3
性能是其中一个区别。使用 进行测试glxgears
,我得到:
- VBoxVGA:60fps +/- 2(非常低,但移动窗口并不流畅,所以似乎是合理的)
- VMSVGA:1570fps +/- 50(重启后,我得到 1300fps +/- 200?!)
- VBoxSVGA:970fps +/- 30(在此模式下,Cinnamon 警告我桌面环境的图形正在 CPU 上运行)
在第一次产生 VBoxVGA 弃用警告之前,Debian 存储库中已经更新了客户添加项,因此我可以直接切换它而无需先进行更新。使用 检查您的版本dpkg -l | grep virtualbox
。
客户添加的版本是6.0.4
、mesa-utils(包含 glxgears)8.4.0-1+b1
,基本操作系统是带有 Cinnamon 的 Debian 10(Buster)。
VM 启用了 PAE/NX、3D 加速但没有 2D 加速、分配了 2 个 CPU(主机有 2 个内核,每个内核有 2 个线程)、PV 默认、启用 VT-x/AMD-V 并且嵌套分页。
答案4
VGA接口无法识别CustomVideoMode1
[1] 设置,只能虚拟视频图形卡认识并应用它们。
这可能是 wayland 和 swayvm 的问题,谁知道呢;无法找到更好的解决方案。