In this article, we’ll talk about VirtualBox display adapters.
First, we’ll look at the virtualized OS environment where we’ll discuss virtualization, graphics controller and 3D acceleration. After these, we’ll look at the individual VirtualBox adapters.
2. VirtualBox Virtualization
Just like the physically installed computer requires having all its components for it to work, the guest OS also needs the same. The guest machine needs to access peripherals like the CPU, RAM, and graphics adapter cards. These are required for the guest machine to be able to display output on the screen and operate effectively.
The host OS can allow the guest OS to use its components. This is only possible through the manager/hypervisor. A hypervisor exposes the components of the host machine to the guest machine. In other words, we can say that the guest OS (the virtual machine) indirectly connects to the host machine.
2.1. VirtualBox Graphics Controller
When we’ve just installed, imported, or upgraded our VirtualBox, by default it may have a non-standard graphics controller enabled. This will, in turn, affect the quality of our display capabilities. The graphics controller is responsible for specifying the type of adapter used by the guest machine (virtual machine/VM). In some instances, it might force us to install VirtualBox guest additions on the guest VM to specify which graphics controller we want to be enabled.
There are only three types of adapters available. Even though VirtualBox offers us four options to choose the type of graphic controller we want to be enabled, one isn’t an adapter. These options are VBoxSVGA, VBoxVGA, VMSVGA, and None. In this tutorial, we’ll mainly discuss the adapters.
In the meantime, let’s look at the None option. We should note that when we select the option None, our guest machine won’t emulate any graphics adapter. This option’s mainly beneficial if we want our machine to go headless or if we want to access it over ssh. For this option to work properly, we must first configure ssh before selecting it. Going headless can improve performance as it removes a layer.
2.2. 3D Acceleration
Some of these adapters support 3D acceleration, whereas some don’t. The 3D acceleration feature allows applications within the virtual machines to use the 3D properties available on the host machine.
Instead of using software to emulate 3D features, these adapters use either OpenGL or Direct3D 8/9 programming interface. This is because the software equivalent of these adapters would be slower. In addition, the hosting OS must be able to use the 3D hardware if it’s present.
VirtualBox emulates VMware’s SVGA through the VBoxSVGA adapter. For VMs created for Windows 7 and the versions that come after it, VBoxSVGA is the default graphic controller.
VBoxSVGA has many a number of advantages, but the most important one is that it improves performance and supports 3D acceleration. This feature makes it better than the legacy VBoxVGA option.
When we select this option, we can upgrade existing VMs without losing their current graphics during the process. This only applies to the VMs previously using VBoxVGA and having VirtualBox video drivers installed. After upgrading, we’ll still see the same devices (same graphics display) until we upgrade the guest additions to enable 3D acceleration.
Using this option gives us more advantage over its counterparts. For instance, using VBoxSVGA with the VirtualBox drivers allows us to use VirtualBox-specific traits, which improves guest VM operation. This option also allows us to get a full-screen resolution for a live CD and it also has improved security.
We should use this graphics controller for the legacy guest OSes. This is the default graphics option for images created for Windows versions before Windows 7 and Oracle Solaris.
This mode doesn’t support 3D acceleration. If we want to create a Linux image using this option, we’ve to install VirtualBox guest additions. This is because this adapter’s not yet supported by the mainline Linux kernel (currently some Linux distros support it). It only supports OpenGL 1.1 on 64-bit Windows 10 and in all Linux distributions.
Although it doesn’t support 3D acceleration, it supports some form of 3D pass-through, but the approach it uses is insecure and can let the guest VM dump all commands to the host machine’s GPU. To provide continuity, VirtualBox upgrades from version 6.0 onward have this mode selected automatically on all old VMs. We don’t lose any acceleration we previously had.
This option mimics the VMware workstation graphics adapter with the “VMware SVGA 3D” acceleration method. Contrary to what the manual says, currently, it’s the default for Linux guest VMs.
This adapter type is supposed to provide better performance and security than the older versions. To add to this, the mainline Linux Kernel supports VMSVGA using the SVGA driver.
It also supports OpenGL 2.1 on all Windows and Linux guest OSes. The other advantage this option gives us is that it might also support old VM images which have VMware guest additions available but lack the VirtualBox guest additions.
This option’s not as fast as the VBox cards as it’s trying to be compatible with something else (VMware image).
6. Selecting a Graphic Controller
Now that we’ve looked at these graphic controller adapters, let’s look at where to find them and change them.
Before we make any changes, we should bear in mind that choosing the wrong adapter might cause our guest OS to crash or not boot up. In some cases, the crash will only happen when we try to open graphic applications. If we experience a crash or boot-up problem, we should revert to the previous working option or select the recommended/default option.
To apply any graphic setting, we first open VirtualBox and go to the VM’s settings. We then click on Display and by default it should display the screen tab window. Lastly, in the Screen tab window of the Display settings, we look for Graphics Controller. When we click the drop-down beside it, we can choose which graphic controller option we want:
In this tutorial, we’ve looked at the types of adapters available for us to use in VirtualBox. Each of these adapters works best with a specific type of OS and we should be very mindful when we change the default graphics setting of any of the images we’ve created. Finally, apart from the improved performance and display, these adapters also allow us to import and use images previously created from VMware.