Discussion about Waydroid(especially the kernel)

Hey guys, First of all wanna say, good job, the Fedora project is amazing, I wanted to install waydroid, but the problem is that the kernel, I’ll have to compile it I think, That’s what I understood from the website. Is there a repository where I can just get it? i have a very weak CPU(i3 4005U) and it’s an old computer, I wasted 3 hours day before yesterday

Just wanted to ask if someone compiled it already

2 Likes

Did you try XanMod kernel? It is available on Copr:

https://copr.fedorainfracloud.org/coprs/rmnscnce/kernel-xanmod/

I’ve been interested in the various android on Linux solutions. This one doesn’t translate native arm code correct? If you have a program with some native arm code, it would fail on x86 linux I believe. Games generally seem to use some native code and previous attempts to use Anbox didn’t work.

AIUI (@ngompa can correct me) the kernel modules are all enabled as of 5.15; Waydroid’s documentation is out of date

The Fedora Linux standard kernel has the necessary components enabled for Waydroid since v5.15. You should not require an alternate kernel or third-party kernel modules to leverage Waydroid userspace on Fedora Linux systems.

2 Likes

Does it, because I read somewhere that ashmem and binder doesnt come with it

No actually, I should check it out, I am a total noob btw


Is Xanmod stable and all that btw? scared of bricking my system

Ok, I just tried it out and things are… weird, to say the least.

It seems like this is right, since after I installed the container seemed to work, but I couldn’t get the full session to work, as it kept giving me Failed to start Clipboard manager service, check logs and Failed to get service waydroidplatform, trying again... errors.

But then I tried restarting the system, just in case it could help with some weird issue. And now the system apparently doesn’t have the ashmem driver anymore??? It wasn’t in the error logs before the system restart and now it gives me these in the logs:

[22:09:45] Failed to load ashmem driver
[22:09:45] modprobe: FATAL: Module ashmem_linux not found in directory /lib/modules/5.16.9-200.fc35.x86_64

We do not have ashmem, but we do have binder. The ashmem driver is sort of deprecated and expected to be deleted eventually from the kernel. Android has moved away from it as well. I believe the Waydroid LineageOS tree has a patch to build to use memfds instead of using ashmem. With that patch, everything should work.

1 Like

Quite a noob into this whole thing, so… how exactly would one be able to use it then?

To be fair, it would be really nice to have either a Magazine post or a dedicated Docs page about setting up Waydroid on Fedora. Would make it even better for the users and make it easier for the original devs to point to a consistent source on how to do it for non-Debian-based users.

I have no experience using it myself but it is a well-known custom kernel which is used by users of other distributions as well. I don’t think you can brick your system by installing it because you can always choose to boot a different kernel from the grub menu.

Oh cool, but what about updates? Also, it’s fine I can wait till a bit of clarity comes in, and a proper guide. Since we cannot really create an easy one-click way for everyone, we’ll need to think of something simpler

2 Likes

Copr repo seems getting regular updates but I agree, waiting for things to settle is a good idea.

Ok, I finally managed to get it working with the (almost) stock kernel. Basically running the stock kernel with a small systemd service to load the ashmem module on boot. It’s hacky but it works.

The first thing I needed to make this works came from here:

git clone https://github.com/JayDoubleu/silverblue-toolbox-ashmem.git
make -C silverblue-toolbox-ashmem/ashmem
sudo insmod silverblue-toolbox-ashmem/ashmem/ashmem_linux.ko

Since I run a secure boot system, I had to manually sign the module before being able to use it. I was so used to having to manually sign the NVIDIA kernel modules that this part was relatively easy:

sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /etc/pki/akmods/private/private_key.priv /etc/pki/akmods/certs/public_key.der ~/silverblue-toolbox-ashmem/ashmem/ashmem_linux.ko

(In my case I changed the folder where I cloned the git repo, so you’d have to change the command accordingly if you don’t want to leave that folder in your /home.

Now running sudo insmod silverblue-toolbox-ashmem/ashmem/ashmem_linux.ko works (if you have a secure boot system).

After that I just created a small script with that command and a systemd service to load that on boot. I’m sure that there are 100 different, cleaner ways to make this work. But that’s the one I found, and it works! Except it doesn’t.

Whenever I reboot I get this error. And just like you can find in the end of that issue, I tried this workaround

You need to create a systemd mount file for binderfs and override a waydroid-container.service to symlink binderfs devices to /dev .

/etc/systemd/system/dev-binderfs.mount

Description=/dev/binderfs mount
ConditionCapability=CAP_SYS_ADMIN

[Mount]
What=binder
Where=/dev/binderfs
Type=binder
Options=context=system_u:object_r:device_t:s0

/etc/systemd/system/waydroid-container.service.d/override.conf

[Unit]
RequiresMountsFor=/dev/binderfs
After=dev-binderfs.mount

[Service]
ExecStartPre=/bin/sh -c ‘ln -fs /dev/binderfs/* /dev/’

…which worked!

Oh wow, did you introduce to us as a noob

Good job, how is it working, did you play around with it, login to instagram or whatever you use in your phone or something? How is it?

1 Like

Btw, no processing involved right??

I see no compiling other than make file for the ashmem

I’m currently having to fix my approach lol

I am indeed a complete noob when it comes to sysadmin stuff, which clearly shows due to not knowing how to write a proper systemd service file. I just spent a lot (and I mean A LOT) of time trying to make this work.

Just the ashmem file. The process itself works wonders, just the automation that is currently failing me. Like, the driver needs to be loaded before the waydroid container starts, or else I’ll need to restart it manually.

But I have no idea how to delay it after the driver is loaded, so this is exactly what’s happening right now.

1 Like

Oh wow, thanks for your time, loading the driver can be done in autostart or… I have no issues with that tho, mine is a plain Intel i3 4th gen

You gotta make a service for this ig, but i would advise no running waydroid all the time

Welp, apparently someone came for the rescue:
https://copr.fedorainfracloud.org/coprs/aleasto/waydroid/

No need for the ashmem driver, it just works. Came in a weird timing tho, as I figured out I no longer need Waydroid because I found out scrcpy got a lot better over the years and I can use it easily to directly use my phone and do whatever I wanted waydroid for with it, specially with this script.

I seriously don’t know why they don’t integrate it in GS/KDE Connect. It works just as well if not better than Windows’ My Phone thingy. It should at least be packaged in the repos.

1 Like