FOSSPicks
x86 on ARM
FEX
With ARM64 becoming an ever more viable platform for general Linux desktop and laptop use, we find ourselves at an exciting juncture. For the first time in a generation, there's a split between a dominant and well-established architecture, x86 and x86-64, and a nascent newcomer, ARM-based AArch64. Most distributions now have a quickly maturing ARM build of their latest releases, and open source means almost everything can be rebuilt without too much difficulty, but there's still a transition period for some software, especially on distributions such as Arch where not everything in the AUR offers an ARM binary and proprietary software with only x86-based builds. Apple is tackling this problem on its M1 and M2 macOS machines with its incredibly performant Rosetta, which now works natively within Ubuntu virtualization on macOS, but FEX is trying to do the same thing for native Linux.
FEX is an x86 and x86-64 compatibility and translation layer for ARM64, enabling you to run x86 binaries from an ARM host. It only currently works with ARMv8.0 and ARMv8.1+, rather than the chips found on older Raspberry Pi devices, but it does run quickly and efficiently enough to be unnoticeable on modern hardware. It's a brilliant way to run games and other proprietary software that may not yet offer native ARM builds. On Ubuntu, there's a handy script that will install all FEX's necessary dependencies and add the project's PPA to your package archive. An x86 RootFS image of the same distribution is also needed to provide the runtime environment for your x86 executables, and the script will download this and let you choose to run it uncompressed or from the compressed image to save space. Either way, it works without any further setup. Type FEXBash
and you immediately get an x86 version of Bash running within your own filesystem. Type uname -a
and you'll see it's x86, and you can access many other x86 executables directly. Even graphics acceleration remains intact as it's passed through to your host system libraries, and it all works brilliantly.
Project Website
https://github.com/FEX-Emu/FEX
Audio effects
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
Wine 10 Includes Plenty to Excite Users
With its latest release, Wine has the usual crop of bug fixes and improvements, along with some exciting new features.
-
Linux Kernel 6.13 Offers Improvements for AMD/Apple Users
The latest Linux kernel is now available, and it includes plenty of improvements, especially for those who use AMD or Apple-based systems.
-
Gnome 48 Debuts New Audio Player
To date, the audio player found within the Gnome desktop has been meh at best, but with the upcoming release that all changes.
-
Plasma 6.3 Ready for Public Beta Testing
Plasma 6.3 will ship with KDE Gear 24.12.1 and KDE Frameworks 6.10, along with some new and exciting features.
-
Budgie 10.10 Scheduled for Q1 2025 with a Surprising Desktop Update
If Budgie is your desktop environment of choice, 2025 is going to be a great year for you.
-
Firefox 134 Offers Improvements for Linux Version
Fans of Linux and Firefox rejoice, as there's a new version available that includes some handy updates.
-
Serpent OS Arrives with a New Alpha Release
After months of silence, Ikey Doherty has released a new alpha for his Serpent OS.
-
HashiCorp Cofounder Unveils Ghostty, a Linux Terminal App
Ghostty is a new Linux terminal app that's fast, feature-rich, and offers a platform-native GUI while remaining cross-platform.
-
Fedora Asahi Remix 41 Available for Apple Silicon
If you have an Apple Silicon Mac and you're hoping to install Fedora, you're in luck because the latest release supports the M1 and M2 chips.
-
Systemd Fixes Bug While Facing New Challenger in GNU Shepherd
The systemd developers have fixed a really nasty bug amid the release of the new GNU Shepherd init system.