Hello Aaron,

see inline...

On 2024-03-08 19:20, Aaron Rainbolt via vbox-dev wrote:
On 3/8/24 11:24, Aaron Rainbolt wrote:
On 3/8/24 11:10, Nate Graham via vbox-dev wrote:
Hello! I'm Nate Graham from KDE. We're tracking an issue that causes Linux guest OSs with KDE Plasma 6 to fail when 3D acceleration is disabled: https://bugs.kde.org/show_bug.cgi?id=481937. The changes made in Plasma 6 that resulted in this issue are unfortunately not easily revertable, and 3D acceleration improves the UX in general for our systems, so our developers aren't feeling a strong incentive for to try.

I'd like to discuss the possibility of enabling 3D acceleration by default--at least for as least for KDE-based Linux guest OSs.

I am not a VBox dev, but this change has potentially severe security implications that would make me highly uncomfortable enabling this if I were a VBox dev. Quoting from the VirtualBox 7.0 user manual (https://docs.oracle.com/en/virtualization/virtualbox/7.0/user/guestadditions.html#guestadd-video):

Note:

Untrusted guest systems should not be allowed to use the 3D acceleration features ofOracle VM VirtualBox, just as untrusted host software should not be allowed to use 3D acceleration. Drivers for 3D hardware are generally too complex to be made properly secure and any software which is allowed to access them may be able to compromise the operating system running them. In addition, enabling 3D acceleration gives the guest direct access to a large body of additional program code in theOracle VM VirtualBoxhost process which it might conceivably be able to use to crash the virtual machine.

The newer 3D architecture we're using in VirtualBox for a while should make this less serious and less likely, but it's a lot of new code and therefore the risk is certainly non-zero.

If KDE-based Linux VMs have 3d acceleration become mandatory, KDE-based Linux VMs will also no longer be suitable for any security-sensitive use of VirtualBox (malware analysis, sandboxing of suspicious applications, etc.). The ability for VirtualBox to sandbox insecure software is important enough that the guide specifically mentions it as a primary use case for VirtualBox (https://docs.oracle.com/en/virtualization/virtualbox/7.0/user/Introduction.html#virtintro):

In addition to that, with the use of anotherOracle VM VirtualBoxfeature calledsnapshots, one can save a particular state of a virtual machine and revert back to that state, if necessary. This way, one can freely experiment with a computing environment. If something goes wrong, such as problems after installing software or infecting the guest with a virus, you can easily switch back to a previous snapshot and avoid the need of frequent backups and restores.

It would help to know what exactly these changes are that "cannot be easily reverted" (probably not on the VBox ML though). Perhaps someone who is willing to put in the necessary time and effort can discover a way to make KWin compatible with more secure graphics options under VirtualBox? I personally would be willing to try and help with that.

So actually, as it turns out, this appears to be an issue with the VMSVGA graphics controller in VirtualBox in particular. If I switch to the VBoxSVGA controller instead, I can boot the latest KDE neon User Edition ISO with Plasma 6 without 3d acceleration. It appears to work just fine.

Changing to VBoxSVGA graphics in an Ubuntu VM results in a warning in VirtualBox stating "The virtual machine is configured to use a graphics controller other than the recommended one (VMSVGA). Please consider switching unless you have a reason to keep the currently selected graphics controller." Is there a particular reason this is still shown? Is VMSVGA even still a good default for Linux virtual machines? I believe Windows virtual machines use VBoxSVGA by default, and Linux appears to work with it, so perhaps it would help to simply change the default graphics adapter for (at least some) Linux OSes.

Taking a deep breath... once upon a time there was just VBoxVGA, which needed a driver provided by VirtualBox Guest Additions (vboxvideo.ko) for good functionality. We had working 3D support for it even, however it was a never ending security nightmare due to the 3rd party codebase which was never meant to be used in a security sensitive context. So we decided to limit declare this device as legacy, dropping 3D support.

The new graphics device (VMSVGA) was added in VirtualBox 6 and is scheduled to take over completely, including 3D support. The reason: Linux already brings a kernel module with the full functionality (including 3D, ...) and VirtualBox provides the necessary device emulation - which still has its rough edges but we're working on resolving those. Annoyingly, the maintainer of vmwgfx.ko in the Linux kernel has recently added a message which is shown for users of VirtualBox, hinting that they should pick a supported device. Which is 100% misleading, because the supported one from our point of view is VMSVGA.

So what's VBoxSVGA? That's a hybrid between VBoxVGA and VMSVGA which we invented primarily to ease the transition for Windows VMs. It offers the functionality of both devices under the PCI device ID of VBoxVGA. That way our Windows driver can go for the VMSVGA functionality (and if you didn't update the Guest Additions before updating VirtualBox the old driver would be using VBoxVGA functionality to provide at least basic functionality). The same also works with Linux, using purely the VBoxVGA part of the device through the - legacy - vboxvideo.ko. What you found is that going with this legacy device is a workaround. You could've switched directly to VBoxVGA to get the exact same result.

Bottom line: your finding hints that there's a compatibility issue between vmwgfx.ko and the VMSVGA implementation in VirtualBox. Something which we'd be willing to investigate, as soon as a developer in the VirtualBox team with enough graphics knowledge has time for it.

Klaus

--
Aaron Rainbolt
Lubuntu Developer
Matrix: @arraybolt3:matrix.org
IRC: arraybolt3 on irc.libera.chat
GitHub:https://github.com/ArrayBolt3
_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
https://www.virtualbox.org/mailman/listinfo/vbox-dev

Reply via email to