Group: Software/FSDG distributions/DistroExecutionEnvironments

From LibrePlanet
< Group:Software‎ | FSDG distributions
Revision as of 15:40, 12 February 2023 by GNUtoo (talk | contribs) (Virtual execution environments availability in FSDG compliant distributions: Add Dragora and Dynebolic)
Jump to: navigation, search

Introduction

The Free System Distribution Guidelines (GNU FSDG) have the following:

Complete Distros

Our list of distributions is a guide for systems you can install in a computer. Therefore, it only includes distributions that are complete in themselves and ready to use. [...]

An exception to this requirement and to the self-hosting requirement above is for small system distributions, which are distros designed for devices with limited resources, like a wireless router for example. Free small system distributions do not need to be self-hosting or complete, because it is impractical to do development on such a system, but it must be developable and buildable on top of a free complete system distribution from our list of distributions, perhaps with the aid of free tools distributed alongside the small system distribution itself.

So sometimes (like with Replicant) building the small distribution rely on being able to install specific FSDG compliant distributions.

So for instance building Replicant has only been tested on specific distributions (typically Trisquel), so if you run another FSDG distribution (like Parabola for instance) you might want to run Trisquel under Parabola somehow.

Other uses cases could be to deploy services that is packaged in a distribution and not another.

For instance Freedombox is in PureOS and in Trisquel but not in Parabola or Guix.

Installing

There are often various possibilities for installing an FSDG distribution in a virtual environment. For instance

  • You can cross bootstrap it (see the CrossDistroBootstrap article for more details)
  • You can also install in a VM that emulates a complete computer like Qemu with KVM.

Running distributions in a virtual execution environments

Here some known working combinaison of distributions and virtual execution environments:

Distributions
Guix Hyperbola Parabola PureOS Replicant Trisquel 8.0 (Flidas) Trisquel 9.0 (etiona) Trisquel 10 (nabia)
Runtimes libvirt's LXC No[1][2] Yes Yes Yes No[3] No[4] Yes Yes
Qemu / Qemu KVM / Bare metal Yes Yes Yes Yes No[3] Yes Yes Yes
Docker[5] Yes[6] No[7] yes, Not packaged, requires Parabola.[8] yes, with configuration. Requires debuerreotype with recent debootstrap.[9] No[3] ? yes, with configuration, Requires debuerreotype with recent Trisquel 9 or 10.[10] yes, with configuration, Requires debuerreotype with recent Trisquel 9 or 10.[10]

Virtual execution environments availability in FSDG compliant distributions

Distribution Dragora Dynebolic Guix Hyperbola Parabola PureOS 10.0 (byzantium) Trisquel 10 (nabia)
Docker Yes[11] No[12] Yes[13] Yes[14] Yes[15]
Libvirt LXC No[16] No[17] Yes[18] ?
Libvirt qemu-kvm Yes No[17] Yes Yes
Libvirt Xen No[19] No[17] No[20] ?

References

  1. guix system cannot produce a chroot in a directory if it's not backed by a block device.
  2. guix system init doesn't have an easy way for the host to know which init binary to run which which arguments.
  3. 3.03.13.2 Nobody tried to run Replicant in a vm or container.
  4. At the time of writing (May 2021) Trisquel 8 doesn't work anymore in LXC through libvirt in Parabola: Failed to create symlink /sys/fs/cgroup/net_cls: Operation not permitted Freezing execution. This is due to a cgroup API change. However Trisquel 9 works fine in this context and Trisquel 8 is not supported anymore by Trisquel since April 2021.
  5. This references if it's possible to create docker images for a given distribution. For (the lack of) FSDG compliant docker registries and possible workarounds, see the ExternalRepositories page.
  6. An image can be produced with the 'guix system image -t docker system.scm' command. Guix can also be installed on top of most GNU/Linux and GNU/Hurd distributions.
  7. I found no hyperbola docker package, no docker related git repository in git.hyperbola.info, and while parabola-docker has very few parabola specific files, very few it has at least one, so hyperbola support probably need to be added in the parabla-docker program. Though Hyperbola is also switching to a BSD kernel, so docker might not work anymore there. So there might not be enough interest to do that.
  8. A project exist to build Parabola docker images but it's not packaged in Parabola
  9. PureOS has a package for debuerreotype, the software used to create the semi-official Debian images on docker.com. It uses debootstrap so it can create PureOS images. However the package documentation mention Ubuntu or Debian examples, so someone needs to bugreport and/or fix it. The debuerreotype-init --non-debian rootfs amber https://repo.pureos.net/pureos command can be used to create a PureOS rootfs on PureOS. There is also some documentation on how to do that the PureOS wiki.
  10. 10.010.1 Trisquel 9 and Trisquel 10 have a package for debuerreotype, the software used to create the semi-official Debian images on docker.com. It uses debootstrap so it can create Trisquel images. However the package documentation mention Ubuntu or Debian examples, so someone needs to bugreport and/or fix it. The debuerreotype-init --non-debian rootfs nabia http://archive.trisquel.info/trisquel command can be used to create a Trisquel 10 rootfs on Trisquel 10.
  11. There is a docker package and service
  12. Hyperbola doesn't have any docker package: https://www.hyperbola.info/packages/?sort=&q=docker
  13. The Parabola docker package has a docker service that can be activated.
  14. PureOS has the docker.io package and it works fine.
  15. The Trisquel docker.io package has a docker service that can be activated.
  16. Libvirt LXC is available in Guix, but trying to run Parabola in libvirt LXC results in this error: "Unable to complete install: 'internal error: guest failed to start: Failure in libvirt_lxc startup: Unable to create directory /sys/fs/cgroup/unified: No such file or directory'". And Parabola is known to work in libvirt LXC (at least in Parabola).
  17. 17.017.117.2 Hyperbola doesn't have any libvirt package: https://www.hyperbola.info/packages/?sort=&q=libvirt
  18. Tested with Parabola, Trisquel 9, Trisquel 10 and other distributions.
  19. Guix's libvirt seems not to be built with Xen
  20. libvirt is not built with Xen support in the libvirt package (which comes from Arch Linux).