App exits with fex-emu Fedora packages, worked with copr packagess

Hey,

Previously on Fedora 40 I used the teohhanhui/fex-emu copr to install the fex-emu package and my java app worked. I also used the Fedora40 rootfs provided by Fex.

Now on Fedora 41 I install fex-emu-2410-1.fc41.aarch64 and fex-emu-rootfs-fedora-42-4.fc41.noarch from Fedora’s repos.
I also put {"Config":{"RootFS":"/usr/share/fex-emu/RootFS/default.erofs"}} into ~/.fex-emu/Config.json, but launching my java app I get:

$ ./app
erofsfuse 1.8.2
<W> erofs: /usr/share/fex-emu/RootFS/default.erofs mounted on /run/user/1000/.FEXMount11643-up4oU8 with offset 0

and nothing. After a few seconds it terminates without my app opening a gui or producing output.

The copr is returning 404, so I can’t go back to it.

Any ideas what could be missing from the Fedora package approach?

You need to delete the whole ~/.fex-emu directory from the COPR setup, the config you have is incorrect. muvm sets up the FEX config automatically.

If you want everything to work you should install steam, which pulls in the whole stack (it doesn’t actually install Steam, it’s just a wrapper). Non-Steam usage is not really supported at the moment, which is why there’s no documented metapackage to pull everything in for other use cases yet.

Hey,

steam wasn’t present in Fedora’s repo, so I enabled the @asahi/steam and @asahi/mesa coprs, but then it is missing the mesa-fex-emu-overlay-* packages, i.e. installing steam I get:

$ sudo dnf install steam
Updating and loading repositories:
Repositories loaded.
Failed to resolve the transaction:
Problem: conflicting requests
  - nothing provides mesa-fex-emu-overlay-i386 needed by steam-0-11.fc41.noarch from copr:copr.fedorainfracloud.org:group_asahi:steam
  - nothing provides mesa-fex-emu-overlay-x86_64 needed by steam-0-11.fc41.noarch from copr:copr.fedorainfracloud.org:group_asahi:steam
You can try to add to command line:
  --skip-broken to skip uninstallable packages

It is probably worth noting that I am trying to get this running on a vanilla aarch64 Fedora 41, though I think it should be possible, just that it’s missing something.

Any idea where can I get those missing packages? Or should I use some other means to install steam ?

The repos those are in are configured by the asahi-repos package. Make sure you update your system fully and that that package is installed.

So I enabled the @asahi/fedora-remix-branding copr, which provided the asahi-repos package. After installing it and steam - fex-emu was installed without any issues.

Now running an x86_64 app I get that the RootFS is unconfigured:

$ ./app 
Invalid or Unsupported elf file.
This is likely due to a misconfigured x86-64 RootFS
Current RootFS path set to ''
RootFS path doesn't exist. This is required on AArch64 hosts
Use FEXRootFSFetcher to download a RootFS

so I drop {"Config":{"RootFS":"/usr/share/fex-emu/RootFS/default.erofs"}} into ~/.fex-emu/Config.json which, after restarting the OS, takes me back to the same message when launching an app:

$ ./app
erofsfuse 1.8.2
<W> erofs: /usr/share/fex-emu/RootFS/default.erofs mounted on /run/user/1000/... with offset 0

though now it does not exit after a few seconds but just hangs there.

Anything else that could be missing or I could be doing wrong?

That is not-working as intended. You have to run x86_64 apps with muvm, they cannot be run outside of the microVM. In the future this will be transparent, but it isn’t yet.

Delete ~/.fex-emu/Config.json, it will break muvm. The configuration is automatic in that mode.

That does seem like it would work, but sadly I cannot test it right now, because I am running it in a VM on an M1 and muvm seems to be complaining about a missing /dev/kvm, which is not happening because M1 does not seem to support VM nesting.

No way in avoiding muvm besides building an older release, right?