Incus DE experience

Incus is a hypervisor platform that unifies the management of containers and virtual machines. Incus provides general facilities that can be used in useful ways by different consumers of the software.

About twenty years ago when there was interest to have some kernel support for something that would become what we know now as Linux containers. One option was to create some sort of subsystem for Linux containers. The kernel developers were against this, because a dedicated such subsystem is generally complicated, and if the container fad does not work out, then you are stuck in maintaining a whole subsystem. What really happened, and it is good design practice, is to add primitives to the Linux kernel ( namespaces, cgroups, etc) that can be used to build Linux containers. In a way, that subsystem would now be running in user-space.

By following the same design pattern, Incus has the facilities that are required to implement many things, even things not envisioned in the early days. As far as I know, there is nothing fundamental missing on the part of Incus to have a Desktop Environment experience.

There are ways to run individual GUI applications in a system container and get the output on the host’s desktop. In some cases it may not be that seamless, but that’s up to us to figure out what is needed to make it seamless.

There are also ways to run a Desktop Environment in a system container and a virtual machine. The latter is more straightforward, and any performance issues have to do with external-to-Incus matters. In a VM you either use a dedicated GPU, or you use some other software that sends the output to the host’s GPU (Xspice).

Running a Desktop Environment in a system container looks promising to me. @tarruda wrote the tutorial and I got it working in Incus. The Linux distribution runtimes that are used to generate the system container images, use stock packages. Those packages do not work as is, when they are running inside a system container. They require tiny changes that have not been upstreamed yet. If those changes get upstreamed, then it would be possible to use stock container images to launch desktop environments. Failing that, it’s just an issue of creating another Incus remote that will have such ready-made container images (created manually).

1 Like