Group: Software/FSDG distributions/DistroExecutionEnvironments

From LibrePlanet
Jump to: navigation, search
(Running distributions in a virtual execution environments: fix link syntax)
(Running distributions in a virtual execution environments: reimport missing ref from Group:Software/FSDG_distributions/UnmaintainedDistros)
(36 intermediate revisions by the same user not shown)
Line 29: Line 29:
 
{| class="wikitable"  border="1"
 
{| class="wikitable"  border="1"
 
| colspan=2 rowspan=2 |
 
| colspan=2 rowspan=2 |
! colspan=8 | Distributions
+
! colspan=7 | Distributions (that are maintained)
 
|-    <!-- All the distributions are listed below -->
 
|-    <!-- All the distributions are listed below -->
 +
! Dragora 3.0-beta2
 
! Guix
 
! Guix
 
! Hyperbola
 
! Hyperbola
Line 36: Line 37:
 
! PureOS
 
! PureOS
 
! Replicant
 
! Replicant
! Trisquel 8.0 (Flidas)
 
! Trisquel 9.0 (etiona)
 
 
! Trisquel 10 (nabia)
 
! Trisquel 10 (nabia)
 
|-
 
|-
 
! rowspan=3 | Runtimes
 
! rowspan=3 | Runtimes
 
! libvirt's LXC
 
! libvirt's LXC
 +
| ?
 
| {{No}}<ref name="guix-lxc-block-device">'''guix system''' cannot produce a chroot in a directory if it's not backed by a block device.</ref><ref name="guix-lxc-startup">'''guix system init''' doesn't have an easy way for the host to know which init binary to run which which arguments.</ref>
 
| {{No}}<ref name="guix-lxc-block-device">'''guix system''' cannot produce a chroot in a directory if it's not backed by a block device.</ref><ref name="guix-lxc-startup">'''guix system init''' doesn't have an easy way for the host to know which init binary to run which which arguments.</ref>
 
| {{Yes}}
 
| {{Yes}}
Line 47: Line 47:
 
| {{Yes}}
 
| {{Yes}}
 
| {{no}}<ref name="replicant-virt">Nobody tried to run Replicant in a vm or container.</ref>
 
| {{no}}<ref name="replicant-virt">Nobody tried to run Replicant in a vm or container.</ref>
| {{no}}<ref name="trisquel-8-lxc">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 [https://bugzilla.redhat.com/show_bug.cgi?id=1770763 a cgroup API change].
 
 
However Trisquel 9 works fine in this context and Trisquel 8 is not supported anymore by Trisquel since April 2021.</ref>
 
| {{Yes}}
 
 
| {{Yes}}
 
| {{Yes}}
 
|-
 
|-
 
! Qemu / Qemu KVM / Bare metal
 
! Qemu / Qemu KVM / Bare metal
 +
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
 
| {{Yes}}
Line 63: Line 56:
 
| {{Yes}}
 
| {{Yes}}
 
| {{no}}<ref name="replicant-virt"></ref>
 
| {{no}}<ref name="replicant-virt"></ref>
| {{Yes}}
 
| {{Yes}}
 
 
| {{Yes}}
 
| {{Yes}}
 
|-
 
|-
! Docker
+
! Docker<ref>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 [[Group:Software/research/ExternalRepositories#Docker_registries|ExternalRepositories]] page.</ref>
 +
| ?
 
| {{Yes}}<ref>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.</ref>
 
| {{Yes}}<ref>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.</ref>
| ?
+
| {{no}}<ref>I found no hyperbola docker package, no docker related git repository in [https://git.hyperbola.info:50100/ git.hyperbola.info], and while parabola-docker has very few parabola specific files, [https://git.parabola.nu/~lukeshu/parabola-docker.git/tree/rootfs/etc/pacman.d/mirrorlist 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.</ref>
| Not packaged, requires Parabola.<ref>[https://git.parabola.nu/~lukeshu/parabola-docker.git/tree/README.md A project] exist to build Parabola docker images but it's not packaged in Parabola</ref>
+
| {{orange|yes, Not packaged, requires Parabola to create the docker container.}}<ref>[https://git.parabola.nu/~lukeshu/parabola-docker.git/tree/README.md A project] exist to build Parabola docker images but it's not packaged in Parabola</ref>
| {{no}}<ref name="pureos-debuerreotype">PureOS has [https://repo.pureos.net/pureos/pool/main/d/debuerreotype/debuerreotype_0.10-2_all.deb a package for debuerreotype], the software used to create the semi-official Debian images on docker.com, but it's not setup to use PureOS repositories. Someone needs to bug report to get it fixed or to have the package removed.</ref>
+
| {{orange|yes, with configuration. Requires debuerreotype with a recent debootstrap to create the docker container.}}<ref name="pureos-debuerreotype">PureOS has [https://repo.pureos.net/pureos/pool/main/d/debuerreotype/debuerreotype_0.10-2_all.deb 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 [https://tracker.pureos.net/w/development/pureos_docker_images/ documentation] on how to do that the PureOS wiki.</ref>
 
| {{no}}<ref name="replicant-virt"></ref>
 
| {{no}}<ref name="replicant-virt"></ref>
| ?
+
| {{orange|yes, with configuration, Requires debuerreotype with recent Trisquel 9 or 10 to create the docker container.}}<ref name="trisquel-debuerreotype">[https://packages.trisquel.org/flidas/debuerreotype Trisquel 9] and [https://packages.trisquel.org/nabia/debuerreotype 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.</ref>
| {{no}}<ref name="trisquel-debuerreotype">[https://packages.trisquel.org/flidas/debuerreotype Trisquel 9] and [https://packages.trisquel.org/nabia/debuerreotype Trisquel 10] have a package for debuerreotype, the software used to create the semi-official Debian images on docker.com, but it's not setup to use Trisquel repositories. Someone needs to bug report to get it fixed or to have the package removed.</ref>
 
| {{no}}<ref name="trisquel-debuerreotype"></ref>
 
 
|}
 
|}
  
Line 82: Line 72:
 
{| class="wikitable"  border="1"
 
{| class="wikitable"  border="1"
 
! Distribution
 
! Distribution
 +
! Dragora
 +
! Dynebolic
 
! Guix
 
! Guix
 +
! Hyperbola
 
! Parabola
 
! Parabola
 +
! PureOS 10.0 (byzantium)
 +
! Trisquel 10 (nabia)
 +
! Ututo S
 
|-
 
|-
 
! Docker
 
! Docker
 +
| {{no}}<ref name="dragora-docker">Dragora doesn't have any docker package.</ref>
 +
|
 
| {{yes}}<ref>There is a docker package and [https://guix.gnu.org/en/manual/devel/en/guix.html#index-docker_002dconfiguration service]</ref>
 
| {{yes}}<ref>There is a docker package and [https://guix.gnu.org/en/manual/devel/en/guix.html#index-docker_002dconfiguration service]</ref>
 +
| {{no}}<ref>Hyperbola doesn't have any docker package: https://www.hyperbola.info/packages/?sort=&q=docker</ref>
 
| {{yes}}<ref>The [https://www.parabola.nu/packages/community/x86_64/docker/ Parabola docker package] has a docker service that can be activated.</ref>
 
| {{yes}}<ref>The [https://www.parabola.nu/packages/community/x86_64/docker/ Parabola docker package] has a docker service that can be activated.</ref>
 +
| {{yes}}<ref>PureOS has the docker.io package and it works fine.</ref>
 +
| {{yes}}<ref>The [https://packages.trisquel.org/nabia/docker.io Trisquel docker.io package] has a docker service that can be activated.</ref>
 
|-
 
|-
 
! Libvirt LXC
 
! Libvirt LXC
| {{no}}<ref>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).</ref>
+
| {{no}}<ref name="dragora-libvirt">Dragora doesn't have any libvirt package.</ref>
 +
|
 +
| {{yes}}<ref>Tested with Guix x86_64-linux and Trisquel 11 x86_64 and Parabola</ref>
 +
| {{no}}<ref name="hyperbola-libvirt">Hyperbola doesn't have any libvirt package: https://www.hyperbola.info/packages/?sort=&q=libvirt</ref>
 
| {{yes}}<ref>Tested with Parabola, Trisquel 9, Trisquel 10 and other distributions.</ref>
 
| {{yes}}<ref>Tested with Parabola, Trisquel 9, Trisquel 10 and other distributions.</ref>
 +
|
 +
| ?
 +
|
 
|-
 
|-
 
! Libvirt qemu-kvm
 
! Libvirt qemu-kvm
 +
| {{no}}<ref name="dragora-libvirt"></ref>
 +
|
 +
| {{yes}}
 +
| {{no}}<ref name="hyperbola-libvirt"></ref>
 
| {{yes}}
 
| {{yes}}
 +
|
 
| {{yes}}
 
| {{yes}}
 
|-
 
|-
 
! Libvirt Xen
 
! Libvirt Xen
 +
| {{no}}<ref name="dragora-libvirt"></ref>
 +
|
 
| {{no}}<ref>[https://packages.guix.gnu.org/packages/libvirt/ Guix's libvirt] seems not to be built with Xen</ref>
 
| {{no}}<ref>[https://packages.guix.gnu.org/packages/libvirt/ Guix's libvirt] seems not to be built with Xen</ref>
 +
| {{no}}<ref name="hyperbola-libvirt"></ref>
 
| {{no}}<ref>libvirt is not built with Xen support in the [https://github.com/archlinux/svntogit-community/blob/packages/libvirt/trunk/PKGBUILD libvirt package] (which comes from Arch Linux).</ref>
 
| {{no}}<ref>libvirt is not built with Xen support in the [https://github.com/archlinux/svntogit-community/blob/packages/libvirt/trunk/PKGBUILD libvirt package] (which comes from Arch Linux).</ref>
 +
|
 +
| ?
 +
|
 
|}
 
|}
 +
 +
== Other execution environment ==
 +
 +
{| class="wikitable"  border="1"
 +
! Host software name
 +
! Host software FSDG status
 +
! Target FSDG compliant programs exist?
 +
|-
 +
! [https://directory.fsf.org/wiki/DOSBox DOSBox]
 +
| {{yes|OK}}
 +
| {{yes}}<ref>COMMAND.com is a program shipped by DOSBox and it's being built with it. Since FSDG compliant distributions ship DOSBox, they probably also build it along the way.</ref>
 +
|-
 +
! MAME
 +
| {{yes}}
 +
* Present in many FSDG comlpiant distributions
 +
* Not reviewed yet by the Free Software Directory
 +
| {{yes}}<ref>
 +
There [https://uzebox.org/wiki/index.php?title=Emulator#MAME is a tutorial] on how to launch and/or convert uzebox games to be used with MAME but not all of the game work. [https://directory.fsf.org/wiki/DrMario_(Uzebox) DrMario] was tested with the same git revision used in the Free software directory and seemed to work. To build it for MAME:
 +
$ git clone https://github.com/Uzebox/uzebox<br/>
 +
$ cd uzebox<br/>
 +
$ git checkout e05013c91a77dc32a541f692c82d91250035d66f<br/>
 +
$ make -C tools/packrom/<br/>
 +
$ export PATH=$PATH:$PWD/tools/packrom/<br/>
 +
$ cd demos/DrMario/default<br/>
 +
$ make<br/>
 +
$ objcopy -I ihex DrMario.hex -O binary dr-mario.bin<br/>
 +
Then get where the rom directory is located:<br/>
 +
$ mame -showconfig | grep '^rompath'<br/>
 +
rompath                  $HOME/mame/roms<br/>
 +
Then install the dr-mario.bin in a uzeboz directory in the rom directory:<br/>
 +
$ mkdir -p $HOME/mame/roms/uzebox<br/>
 +
$ mv dr-mario.bin $HOME/mame/roms/uzebox/<br/>
 +
And we finally I run drmario like that, with the Guix MAME under Parabola:<br/>
 +
$ mame uzebox drmario<br/>
 +
dr-mario.bin WRONG LENGTH (expected: 0000dcaa found: 0000ce5a)<br/>
 +
dr-mario.bin WRONG CHECKSUMS:<br/>
 +
    EXPECTED: CRC(8144b271) SHA1(d4bb13f54b756e2ba9e57075aae473b72397f48f)<br/>
 +
      FOUND: CRC(c0130ccf) SHA1(8bca126a623c19033eace513ae547a0560e9f558)<br/>
 +
WARNING: the machine might not run correctly.<br/>
 +
Average speed: 41.13% (3 seconds)<br/>
 +
And that showed a game on the screen. Pressing 1 make it does stuff, but I'm not sure what the controls are.</ref>
 +
|-
 +
! Retroarch
 +
| {{yes}}
 +
* Present in many FSDG comlpiant distributions
 +
* Not reviewed yet by the Free Software Directory
 +
| {{Yes}} Has some backends that are OK:
 +
* MAME
 +
* 2048<ref>"Some cores, like 2048, do not require any content in order to work": https://www.retroarch.com/?page=cores</ref>
 +
|-
 +
! [https://directory.fsf.org/wiki/QEMU Qemu] + [https://directory.fsf.org/wiki/Seabios SeaBIOS]
 +
| {{yes}}
 +
* Reviewed by the Free Software Directory
 +
* Packaged most FSDG compliant distros
 +
| {{Yes}}<ref>Example: The installer image of most FSDG compliant distributions supporting i686 or x86_64</ref>
 +
|-
 +
! [https://directory.fsf.org/wiki/QEMU Qemu] + [https://directory.fsf.org/wiki/Seabios Tianocore]
 +
| {{yes}}
 +
* Tianocore not yet reviewed by the Free Software Directory
 +
* Packaged most FSDG compliant distros<ref>For Tianocore in Parabola the package is named edk2-ovmf</ref>
 +
| {{Yes}}<ref>Example: The installer image of most FSDG compliant distributions supporting x86_64</ref>
 +
|-
 +
! [https://directory.fsf.org/wiki/Uzem Uzem]
 +
| {{yes|OK}}
 +
| {{yes}}<ref>
 +
[https://directory.fsf.org/wiki/Uzem Uzem], [https://directory.fsf.org/wiki/packrom packrom] and [https://directory.fsf.org/wiki/Arkanoid_(Uzebox) Arkanoid] were checked directly with their upstream source code at the same git version that was reviewed on the Free Software Directory, with Parabola x86_64 and avr-gcc and avr-libc installed:<br/>
 +
$ git clone https://github.com/Uzebox/uzebox<br/>
 +
$ cd uzebox<br/>
 +
$ git checkout e05013c91a77dc32a541f692c82d91250035d66f<br/>
 +
$ make -C tools/uzem/<br/>
 +
$ make -C tools/packrom/<br/>
 +
$ export PATH=$PATH:$PWD/tools/packrom/<br/>
 +
$ cd demos/Arkanoid/default<br/>
 +
$ make<br/>
 +
$ make Arkanoid.uze<br/>
 +
Then running the emulator on the game we built also works fine:<br/>
 +
$ ../../../tools/uzem/uzem Arkanoid.uze<br/>
 +
We have the game graphics appearing inside the emulator and so on.
 +
</ref>
 +
|-
 +
! [https://directory.fsf.org/wiki/Wine Wine]
 +
|
 +
* OK in FSDG compliant distributions.
 +
* Some other distributions automatically install nonfree fonts with wine.<ref>Reference: https://directory.fsf.org/wiki/Wine</ref>
 +
| {{yes}}<ref>
 +
GNU Hello can be built with Guix and run in Parabola (with Parabola's wine) with the following command:<br/>
 +
$ wine $(guix build --target=x86_64-w64-mingw32 hello)/bin/hello.exe<br/>
 +
[...]<br/>
 +
Hello, world!<br/>
 +
It is also possible build and run more useful programs like xz in the same way, though not many programs are known to cross compile well. People can also contribute to Guix to make more program cross compile and/or to package free software for windows and run that with Wine.<br/>
 +
</ref>
 +
|-
 +
|}
 +
 +
== See also ==
 +
* https://wiki.parabola.nu/Emulator_licensing_issues
 +
* https://directory.fsf.org/wiki/Collection:Computer_and_video_game_console_emulators
 +
* https://directory.fsf.org/wiki/Collection:Game_ROM_images
  
 
== References ==
 
== References ==
  
 
<references/>
 
<references/>

Revision as of 06:11, 14 August 2024

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 (that are maintained)
Dragora 3.0-beta2 Guix Hyperbola Parabola PureOS Replicant Trisquel 10 (nabia)
Runtimes libvirt's LXC ? No[1][2] Yes Yes Yes No[3] Yes
Qemu / Qemu KVM / Bare metal Yes Yes Yes Yes Yes No[3] Yes
Docker[4] ? Yes[5] No[6] yes, Not packaged, requires Parabola to create the docker container.[7] yes, with configuration. Requires debuerreotype with a recent debootstrap to create the docker container.[8] No[3] yes, with configuration, Requires debuerreotype with recent Trisquel 9 or 10 to create the docker container.[9]

Virtual execution environments availability in FSDG compliant distributions

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

Other execution environment

Host software name Host software FSDG status Target FSDG compliant programs exist?
DOSBox OK Yes[22]
MAME Yes
  • Present in many FSDG comlpiant distributions
  • Not reviewed yet by the Free Software Directory
Yes[23]
Retroarch Yes
  • Present in many FSDG comlpiant distributions
  • Not reviewed yet by the Free Software Directory
Yes Has some backends that are OK:
Qemu + SeaBIOS Yes
  • Reviewed by the Free Software Directory
  • Packaged most FSDG compliant distros
Yes[25]
Qemu + Tianocore Yes
  • Tianocore not yet reviewed by the Free Software Directory
  • Packaged most FSDG compliant distros[26]
Yes[27]
Uzem OK Yes[28]
Wine
  • OK in FSDG compliant distributions.
  • Some other distributions automatically install nonfree fonts with wine.[29]
Yes[30]

See also

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. 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.
  5. 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.
  6. 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.
  7. A project exist to build Parabola docker images but it's not packaged in Parabola
  8. 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.
  9. 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.
  10. Dragora doesn't have any docker package.
  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. 16.016.116.2 Dragora doesn't have any libvirt package.
  17. Tested with Guix x86_64-linux and Trisquel 11 x86_64 and Parabola
  18. 18.018.118.2 Hyperbola doesn't have any libvirt package: https://www.hyperbola.info/packages/?sort=&q=libvirt
  19. Tested with Parabola, Trisquel 9, Trisquel 10 and other distributions.
  20. Guix's libvirt seems not to be built with Xen
  21. libvirt is not built with Xen support in the libvirt package (which comes from Arch Linux).
  22. COMMAND.com is a program shipped by DOSBox and it's being built with it. Since FSDG compliant distributions ship DOSBox, they probably also build it along the way.
  23. There is a tutorial on how to launch and/or convert uzebox games to be used with MAME but not all of the game work. DrMario was tested with the same git revision used in the Free software directory and seemed to work. To build it for MAME: $ git clone https://github.com/Uzebox/uzebox
    $ cd uzebox
    $ git checkout e05013c91a77dc32a541f692c82d91250035d66f
    $ make -C tools/packrom/
    $ export PATH=$PATH:$PWD/tools/packrom/
    $ cd demos/DrMario/default
    $ make
    $ objcopy -I ihex DrMario.hex -O binary dr-mario.bin
    Then get where the rom directory is located:
    $ mame -showconfig | grep '^rompath'
    rompath $HOME/mame/roms
    Then install the dr-mario.bin in a uzeboz directory in the rom directory:
    $ mkdir -p $HOME/mame/roms/uzebox
    $ mv dr-mario.bin $HOME/mame/roms/uzebox/
    And we finally I run drmario like that, with the Guix MAME under Parabola:
    $ mame uzebox drmario
    dr-mario.bin WRONG LENGTH (expected: 0000dcaa found: 0000ce5a)
    dr-mario.bin WRONG CHECKSUMS:
    EXPECTED: CRC(8144b271) SHA1(d4bb13f54b756e2ba9e57075aae473b72397f48f)
    FOUND: CRC(c0130ccf) SHA1(8bca126a623c19033eace513ae547a0560e9f558)
    WARNING: the machine might not run correctly.
    Average speed: 41.13% (3 seconds)
    And that showed a game on the screen. Pressing 1 make it does stuff, but I'm not sure what the controls are.
  24. "Some cores, like 2048, do not require any content in order to work": https://www.retroarch.com/?page=cores
  25. Example: The installer image of most FSDG compliant distributions supporting i686 or x86_64
  26. For Tianocore in Parabola the package is named edk2-ovmf
  27. Example: The installer image of most FSDG compliant distributions supporting x86_64
  28. Uzem, packrom and Arkanoid were checked directly with their upstream source code at the same git version that was reviewed on the Free Software Directory, with Parabola x86_64 and avr-gcc and avr-libc installed:
    $ git clone https://github.com/Uzebox/uzebox
    $ cd uzebox
    $ git checkout e05013c91a77dc32a541f692c82d91250035d66f
    $ make -C tools/uzem/
    $ make -C tools/packrom/
    $ export PATH=$PATH:$PWD/tools/packrom/
    $ cd demos/Arkanoid/default
    $ make
    $ make Arkanoid.uze
    Then running the emulator on the game we built also works fine:
    $ ../../../tools/uzem/uzem Arkanoid.uze
    We have the game graphics appearing inside the emulator and so on.
  29. Reference: https://directory.fsf.org/wiki/Wine
  30. GNU Hello can be built with Guix and run in Parabola (with Parabola's wine) with the following command:
    $ wine $(guix build --target=x86_64-w64-mingw32 hello)/bin/hello.exe
    [...]
    Hello, world!
    It is also possible build and run more useful programs like xz in the same way, though not many programs are known to cross compile well. People can also contribute to Guix to make more program cross compile and/or to package free software for windows and run that with Wine.