GNOME Boxes is an easy-to-use graphical virtual machine (VM) installer and launcher. It’s not a VM manager and offers practically no settings for micromanaging your VM. However, its easy-to-use design philosophy can also prevent its users from getting any use out of it.
Boxes is built on top of Linux’s excellent KVM+QEMU/libvirt virtualization stack. The app is intended for users who’re overwhelmed by such alphabet-soups and just want to run a visualized operating system.
KVM is a virtualization system from the Linux kernel project. You can expect high performance and a smoother upgrade experience compared to third-party alternatives like VirtualBox. QEMU and libvirt add management layers on top of KVM. Boxes sit on top of these tools.
You’ll likely find references to Boxes being used to manage remote desktop sessions to remote machines. This functionality has been moved into the new Connections app. I believe it was a good decision to split the two use cases into separate apps. Connections looks and behaves almost identically to Boxes.
The app is great for managing virtual machines with other recent versions of Linux. Everything works out of the box if you choose one of its presets for popular Linux distributions. You’re presumably already running Linux, so the end-users are maybe more likely to want to emulate Windows?
For everything outside the Linux presets, you may need to manually download and then install SPICE guest tools and VirtIO drivers inside your VM. SPICE and VirtIO powers Boxes’ integration with the host. They provide niceties such as clipboard-sharing and automatic screen resolution. Frustratingly, Boxes suggests a download link to these downloads that bundles five years out-of-date drivers! Here are links to the latest versions of virtio-win-gt.msi and qemu-ga.msi for Windows. These are very difficult to locate! Unsurprisingly, the older drivers don’t work with recent versions of Windows 10 and 11.
The app offers a grid or list view of your installed virtual machines, much like the app overview in GNOME’s Activities screen. The screen is empty by default, but a single button-click is all it takes to get going. Boxes offer you a selection of operating systems that it can automatically download and install. Just select your preferred Linux or BSD-based operating system and it’ll do the rest.
Boxes will try to auto-detect the installation media (the “Live CD”) and pick compatible virtualization options behind the scene. You can also provide it with an ISO for other operating systems, including Microsoft Windows. Anything from the built-in list gets recognized, but you might not be so lucky with other operating systems.
The lack of configuration options is both Boxes’ blessing and its curse. It relies on libosinfo
’s osinfo-db
to recognize whatever you’re trying to install and come up with the right options to give the underlying virtualization technologies. The problem with this library — besides it not always agreeing with your virtualized hardware preferences — is that it’s moving slower than the market.
It took two and a half years after the public release of Windows 10 (three and a half years after the first public betas) before installs in Boxes had working audio. It incorrectly set up Windows 10 VMs with a legacy audio device instead of a newer compatible device. The underlying technology had been there for years, but it didn’t fulfill its promise to auto-configure the VM. Users couldn’t easily set up, troubleshoot, and fix the problem by adjusting their VM configuration.
Boxes has since added a somewhat mysterious-looking Edit XML button that lets you make adjustments to your VMs. (This button will be called Edit Configuration in a future version of Boxes.) I’ll get back to this later in the article.
We’re over six months since the first public beta release of Windows 11 and over three months since the final release. Windows 11 refuses to install on legacy BIOS systems and demands hardware with UEFI, secure-boot, and a TPM 2 enabled.
The technologies/acronyms demanded by Windows 11 are mostly supported by the underlying virtualization technology. There are some issues, however. KVM doesn’t currently support snapshotting UEFI VMs. Boxes gives a generic error message when attempting to snapshot a UEFI VM. The Flatpak sandboxed version of Boxes doesn’t currently support TPM emulation. The runtime is missing the swtpm
emulator.
Regardless of the limitations with the underlying virtualization technology, Windows 11 can still be made to run in Boxes. It runs well, too, with good performance and system integration comparable to what’s available to Windows 10 VMs. Yes, you can’t take snapshots and you can’t install Windows 11 in the Flatpak version of Boxes. But it works!
Windows 11 support in Boxes is held up by osinfo-db
not recognizing it as Windows 11 and suggesting a conservative Windows 10 setup. The setup doesn’t emulate a TPM and uses a legacy BIOS instead of UEFI; likely because of the snapshot limitation. The world’s most popular consumer operating system isn’t recognized nor supported months after its release. It wouldn’t be a showstopper if Boxes had offered a few configuration toggles for changing a few common compatibility settings.
The “leave the hard stuff to us” design philosophy falls apart as soon as things don’t work or it isn’t fully supported. The Windows installer gives clear instructions on its hardware requirements. You can adjust your configuration to match if you’re using another one of the front-ends for Boxes’ virtualization technology. Yes, this involves making compromises, but letting the user make a few compromises is better than leaving them with nothing.
You can access more advanced configuration options for your Boxes VMs using tools like cockpit-machines
(web interface), virsh
(command-line), virt-manager
(graphical), and virt-xml
(command-line). The Flatpak version of Boxes only includes virsh
. Tools external to the runtime can’t connect in to its QEMU session. Each of these tools are very different and offers very different levels of VM configuration (sorted from least to most). You should still be able to launch the VM from Boxes after adjusting its settings in another compatible program.
Boxes does let you directly edit the XML configuration document of your virtual machines if you need to make adjustments. This is an option for Advanced (with a capital A) users only. A typical configuration document consists of 200+ lines describing the deep technical details of your virtual machine. You can expect that it’ll take you a few days to read the required documentation to learn about all the possible settings and their accepted values.
Boxes could include a better option for deferring its users to a more capable tool for advanced settings. The ability to edit the XML configuration is nice, if you know what you’re doing (or you’re following a tutorial). However, you can’t edit the configuration or set any options before the VM is created. Which is too late when it comes to things like picking between UEFI and BIOS boot modes.
Boxes gets bonus points for providing a full log for each virtual machine. The log is provided inside the properties dialog per VM. This addition might not sound important, but it’s a lot easier to troubleshoot a problem when you have detailed logs instead of a one-sentence generic error message. (I’m looking at you, Hyper-V!)
When everything is working, and the VM has all the required emulation drivers and guest tools, then Boxes is great! Copy-and-paste between the guest and host works predictably, folder sharing is a nice touch, and everything will run within the performance capabilities of your hardware. It’s an excellent virtual machine launcher. You might just want to keep another compatible VM management tool at hand, for the situations that Boxes can’t handle by itself.