New in Fedora: Running x86 programs on ARM systems

The newly released Fedora KDE Plasma Desktop 42 introduces out-of-box support for running x86 and x86-64 programs on ARM systems. This is accomplished by leveraging the emulation stack originally developed for Fedora Asahi Remix. This work is now integrated into Fedora Linux proper. This makes it available for all ARM systems running Fedora Linux, not just Apple Silicon Macs.

How Is This Accomplished

To make it possible to run x86 programs via emulation, we leverage several tools, each solving a specific problem:

  • FEX, a fast emulator that can run x86 and x86-64 programs on ARM Linux hosts
  • muvm, a tool that can run another program inside a microVM
  • binfmt-dispatcher, a simple dispatcher that can dynamically pick the best emulator to use when an x86 or x86-64 program is started

With this setup, when a non-native program is run, the kernel invokes binfmt-dispatcher via the binfmt_misc interface. The dispatcher picks the best emulator to use. This is based on the program, the system it’s running on, and its own configuration. By default, we use the FEX emulator, which provides the best compromise between performance and compatibility for most programs. FEX only support host systems running a 4k page-size kernel. Thus, when running on a system with different page-size (such as Apple Silicon Macs running Fedora Asahi Remix 42, which use a 16k page-size), the dispatcher will automatically run FEX inside muvm. This will spin up a microVM with a 4k page-size kernel for compatibility.

If the user prefers to use a different emulator (such as box64 or QEMU), that can be configured globally, or on a per-program basis. The dispatcher automatically installs any missing dependencies via DNF whenever a non-native program is run for the first time that requires them. This installation requires confirmation by the user.

Library Availablity

FEX relies on an immutable filesystem containing a large set of commonly used x86-64 and x86 libraries. However, it cannot contain every library, so it is possible that a program could fail to start due to missing dependencies. Should that happen, consider submitting a pull request to the Kiwi description to get it added. It is also possible to overlay locally additional dependencies, though you should consider this as experimental at this stage. In general, this feature will work best with programs that have reduced or minimal dependencies. This is common with a lot of commercial software. While it is possible to run complex FLOSS applications with a wide dependency web, we recommend just using the native ARM version whenever that’s an option. That will always provide the best performance.

Feature Availability

This new feature is available out of the box on Fedora KDE Plasma Desktop 42. It is also available on Fedora Asahi Remix, in both the KDE Plasma and the GNOME editions. Additionally, Fedora Asahi Remix includes a gaming emulation stack based on Steam, and has dedicated documentation for this feature. On other Fedora editions, you can run $ sudo dnf install @x86-emulation to make this feature available.

It’s also worth noting that while we have specifically targeting x86 emulation on ARM hosts, the same approach could be used for other hosts and targets in the future.

New in Fedora

4 Comments

  1. António Sousa

    Great news! But how do I use this feature? I have Fedora Asahi Remix 42 installed.

  2. RG

    Please do not forget qemu-x86_64-static, available for several bare metal hardware, as well as box86 and Limbo[emu], so several others for integrated architecture emulation. Why restrict on x86 only?

    box86 had issues with graphics when I took a look. But it is ongoing development.

    https://github.com/ptitSeb/box86
    https://github.com/limboemu/limbo

  3. I wonder if you could use this same technique on lower end systems like the RPI4 to go play CS2

Leave a Reply


The interval between posting a comment and its appearance will be irregular so please DO NOT resend the same post repeatedly. All comments are moderated but this site is not monitored continuously so comments will not appear as soon as posted.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

The opinions expressed on this website are those of each author, not of the author's employer or of Red Hat. Fedora Magazine aspires to publish all content under a Creative Commons license but may not be able to do so in all cases. You are responsible for ensuring that you have the necessary permission to reuse any work on this site. The Fedora logo is a trademark of Red Hat, Inc. Terms and Conditions