Identifying Operating Systems in GNOME Boxes

One secret sauce of GNOME Boxes is libosinfo. It basically is an umbrella for three components: libosinfo, osinfo-db-tools, and osinfo-db.

libosinfo offers programmatic means to query for information about OSes. osinfo-db-tools is a set of tools that help manipulate and extract information from OS images (such as ISO files). osinfo-db is a database of operating system information describing requirements for virtualized installations as well as virtual drivers and devices that work with each OS in the database.

For a given image file, Boxes will use libosinfo to detect which operating system it contains and assign the appropriate configuration preferences for it.

When an operating system’s data was not present in osinfo-db, we used to treat the image file as an “unknown OS”, which would get set up with the Boxes default configuration preferences. This usually works, but when it fails, it gets really hard for a regular user to use the virtual machine. Think of a wrong virtual video driver causing the guest’s graphic session to hang, or a virtual tablet device getting on the way of gestures being passed to the guest, etc…

For this very reason, we decided to add an extra page in our VM creation assistant that will only get visible for those “unknown” OSes. This page allows you to specify which operating system you intend to install. This way Boxes can use libosinfo to set up your VM with the right configuration preferences for the chosen OS.

screenshot

If you can’t find your OS in the list, try picking a similar one. For instance, if Linux Mint isn’t on the list, you are probably better off telling Boxes it is a Ubuntu or Debian based OS.

Not choosing anything on this page is also fine, in this case, Boxes will go with its defaults.

New operating systems can be added to the osinfo-db by creating merge requests in their GitLab repository.

This (with some more polishing) and other changes will be available in GNOME Boxes 3.38. If you can’t wait, give a go to our *unstable* nightly Flatpak.