FAQ

From FEX-Emu Wiki
Jump to navigation Jump to search

Frequently Asked Questions

Will FEX-Emu (Linux emulation) run on Android?

No.

The Android operating system has fundamental incompatibilities with the Linux environment that FEX is ensuring compatibility with. As an example Termux and Termux-proot spend a tremendous amount of effort to try and support a Linux-like environment and some things still don't run.

  • Restricted syscalls
    • Android restricts a huge amount of syscalls, either by disabling them through SECCOMP or completely eliminating them from the kernel
    • SYSV IPC syscalls completely removed, breaking a ton of X11/Xorg things.
    • A bunch of newer syscalls completely disabled through SECCOMP that games/WINE wants
  • Filesystem layout doesn't match
    • Linux applications expect a specific filesystem layout which doesn't match on Android. This freaks out most applications.
    • Proot as an example does a ton of work trying to fixup paths to make this viable.
  • Linux applications can't open a direct GPU device
    • Need something like virgl or virtgpu for device passthrough
    • Usually means a bunch of overhead and added latency even if possible

Will FEX-Emu (Linux Emulation) ever be supported on Android?

FEX-Emu's target is Linux on Linux devices. Android is not a target and will never be a target.

The most interesting idea here is Pixel devices shipping VM support and FEX can run in a microVM in that environment. Because at that point it is just Linux. But Google has a lot of work to go before that even matters.

Will FEXCore ever be supported on Android?

FEXCore is a generic-ish x86 and x86_64 emulation library. It is designed to be compiled for Linux targets but itself doesn't really care about the operating environment.

This can be built for an Android AArch64 target but since it's just a library it won't have any use for a user. Other emulators like Cassia and Hangover could use this to run in that environment.

What about FEXCore's Windows DLL support?

FEXCore supports being built as a Windows DLL purely for WINE integration. It still expects to be run on a Linux kernel OS and makes assumptions that this is the case.

  • If attempting to compile the code with MSVC then it won't compile.
  • If attempting to run the DLL on a Windows machine then it will immediately crash
  • Do not use it outside of a WINE WOW64 environment.