Aleasto/waydroid

Description

Waydroid (and dependencies) packaged for Fedora on x86_64 and aarch64

  • Waydroid itself packaged
  • Network available out of box
  • Work in SELinux Enforcing mode

Thanks dependencies from rmnscnce/waydroid

Installation Instructions

Make sure you're using a kernel that supports ashmem and binder to use Waydroid. One such example is XanMod kernel which can be installed on Fedora
  1. Add the Copr repository

sudo dnf copr enable yanqiyu/waydroid

  1. Install the Waydroid

sudo dnf in waydroid

For more information please refer to https://yanqiyu.info/2021/10/25/waydroid-fedora/

Active Releases

The following unofficial repositories are provided as-is by owner of this project. Contact the owner directly for bugs or issues (IE: not bugzilla).

* Total number of packages downloaded in the last seven days.


This is a companion discussion topic for the original entry at https://copr.fedorainfracloud.org/coprs/aleasto/waydroid/

I noticed this Copr overrides the selinux-policy packages, while yanqiyu’s Copr that this is forked from just uses the new package waydroid-selinux to add in policies. Would it be better to only put the new policies in a separate package like how it was in yanqiyu’s Copr so everything else can get timely updates from the main repo, or is overriding the packages necessary for changes you have made?

It is necessary because genfscon rules are not supported in sepolicy modules.

Just tried it, and ran

sudo waydroid init -c https://raw.githubusercontent.com/aleasto/waydroid-ota/main/system -v https://raw.githubusercontent.com/aleasto/waydroid-ota/main/vendor
sudo systemctl enable --now waydroid-container

to setup. Then,

Running sudo waydroid container start gives

[01:07:30] Failed to load ashmem driver
[01:07:30] modprobe: FATAL: Module ashmem_linux not found in directory /lib/modules/5.16.11-200.fc35.x86_64
[01:07:30] Failed to load Ashmem driver

Do I still need the Xanmod kernel?

No, you should ignore it.
Also you should not run sudo waydroid container start, it’s already run by systemd.

waydroid session start
[01:38:54] Failed to start Clipboard manager service, check logs

Now its stuck here

Update: I did pip install pyclip and it now doesn’t give that error, but still stuck indefinitely :confused:

I’m having trouble running waydroid, it’s weird. When I just booted, waydroid-container seems to be running fine (judging from the systemctl status waydroid-container output). But when I waydroid show-full-ui, logs say that it failed to start the container, and, the container is indeed dead.
I also think I’ve located the cause of the issue in logs:

(005955) [15:27:37] % lxc-start -P /var/lib/waydroid/lxc -F -n waydroid -- /init
(005955) [15:27:37] New background process: pid=6289, output=background
lxc-start: waydroid: network.c: netdev_configure_server_veth: 708 No such file or directory - Failed to attach "vethc5FWvn" to bridge "waydroid0", bridge interface doesn't exist
lxc-start: waydroid: network.c: lxc_create_network_priv: 3419 No such file or directory - Failed to create network device
lxc-start: waydroid: start.c: lxc_spawn: 1826 Failed to create the network
lxc-start: waydroid: start.c: __lxc_start: 2053 Failed to spawn container "waydroid"
lxc-start: waydroid: conf.c: run_buffer: 323 Script exited with status 126
lxc-start: waydroid: start.c: lxc_end: 996 Failed to run lxc.hook.post-stop for container "waydroid"
lxc-start: waydroid: tools/lxc_start.c: main: 308 The container failed to start
lxc-start: waydroid: tools/lxc_start.c: main: 313 Additional information can be obtained by setting the --logfile and --logpriority options
(005955) [15:27:37] waiting 10 seconds for container to start...

Also lxc-checkconfig reports

Cgroup v1 systemd controller: missing
Cgroup v1 freezer controller: missing
Cgroup ns_cgroup: required

So I’m currently googling all this stuff and trying to figure out how to fix lxc problems. Maybe someone here has any ideas?

I am stuck here too, it’s been 30 minutes i think

The latest build works like a charm. Thanks!
Any idea on whats the status on stuff like integration with libhoudini for the x86 LineageOS images provided?

I followed these directions, and initially when trying to do “waydroid show-full-ui” I would get “Failed to get service waydroidplatform, trying again…” forever. I tried stopping the systemd service (which said it was running successfully) and manually starting it with “mydroid container start”. Now when trying to show-full-ui I instead get “Starting waydroid session” but then nothing after that. I now continue to get that new behavior even if I shut down the manually started container and restart it via the systemd service

What did I do wrong? Is there a log i should be looking at?

OK, this is very odd. When it’s waiting at “Starting waydroid session”, if I look at processes in top, I see a surfaceflinger process running as the wrong user - my primary user account, which is not the account I’m logged in as when trying to start it, and which I didn’t use at all when setting this up. I also see a bootanimation process running as UID 1003, a user which doesn’t even exist on my system.

Are there perhaps some UIDs hardcoded somewhere they shouldn’t be?

dmesg or sudo waydroid logcat will provide more information

Ah, I see, it was throwing a bunch of errors about sensors… removing the package waydroid-sensors and restarting worked. Is that package needed for anything? I’m on a desktop pc, not a phone, if that makes a difference.

I inherited the package from the previous copr fork, where the author already knew it was broken. I haven’t looked into it yet though.

Thanks. Is there any reason not to install Google Play Services, assuming I obtain the apk elsewhere? Will it not work, or will my account get banned for using it from an unauthorized device?

waydroid already supports google services by initializing with waydroid init -s GAPPS which will download android images with google services included, however this copr currently only works with my custom built android images and I have not built the ‘gapps’ variant yet.

This project may help you GitHub - casualsnek/waydroid_script: Python Script to add OpenGapps, Magisk, libhoudini translation library and libndk translation library to waydroid !

Thanks, I’ll take a look. Do you have any info on what’s required to build a custom images that works with this copr version? In addition to gapps, I’d like to get an Android TV variant built, and I’d be willing to contribute some effort to that

Building from master already works: Compile Waydroid - Lineage OS based images - Waydroid

Except that for the browser to not crash you need to rebuild the chromium apks in external/chromium-webview/ with these patches:
https://chromium-review.googlesource.com/c/chromium/src/+/3475612
https://chromium-review.googlesource.com/c/chromium/src/+/3465975
Or more simply copy my apk from /var/lib/waydroid/rootfs/system/product/app/webview/webview.apk

You can find me on irc.libera.chat if you need

I tried installing gapps using the waydroid_extras script, but when I get to the step of getting my android ID, it produces no output ID - I checked the sqlite db myself and it’s not in there.

Not sure if this is related or a separate issue, but I don’t seem to have network connectivity. Both the browser and Google Play store app say no network connection.

FYI for anyone reading this thread, the issue was that my container (for complicated, unrelated reasons), wasn’t getting network connectivity, and apparently that’s a prerequisite for generating an android ID