@bootlessxfly When I port MaruOS to Pixel, I have found the Pixel's prebuild vendor.img has the fstab file to configure data partition. If I use prebuild vendor.img, my modification for data partition to support MaruOS's root will effect nothing. So I use vendor built from code, which supports Project Treble also. Maybe it will help for your porting to pixel 2 XL.On Tue, Apr 23, 2019 at 11:54 AM Preetam D'Souza <preetam...@gmail.com> wrote:Excellent, I am looking forward to seeing Maru running on the Pixel 2 XL!Once you get vanilla Lineage 15.1 built and booting on your device, go ahead and just repo init our official maru-0.6 manifest branch (which is also based on Lineage 15.1) and includes all the Maru patches so you do not need to manually add the Maru repos. You'll just need to add some device-specific stuff to your device repo (essentially the same as you did for the 6P previously) and update the kernel config, and you should have a build up and running with all the Maru bits on top of Lineage 15.1. We can discuss more specifics in your porting thread as needed.On Monday, April 22, 2019 at 6:35:39 PM UTC-4, bootlessxfly wrote:Sorry for the silence on this, I do have an update though.I am going to hold off buying a 6p. I can still set up a build server for this and maintain the builds, but as far as having a device to test with, I will be holding off.
Today I took advantage of the 50 percent off Google Pixel 3 and purchased myself a new phone(I just couldn't pass up on that deal).
So, with a new phone, I can officially move my pixel 2 XL into Dev status and fully commit it as a Dev device. This weekend, I plan on setting up a dev VM on my desktop and building cynogenmod 15.1 for my pixel 2 XL. Once I have this baseline build booting, I will move to add the Maruos framework and kernel patches. At this point I'll start a Google pixel 2 XL device porting thread. My next update will go there.
Next month, if we still do not have a maintainer, I can look back into purchasing a Nexus 6p, but for now I am going to focus on the pixel 2 XL.
--
You received this message because you are subscribed to the Google Groups "Maru OS dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to maru-os-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/maru-os-dev/9c2f97b7-92bf-4f49-86a8-bcb886ab483b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to maru-...@googlegroups.com.
I haven't had to much of a chance to look since I ran into it. But figured Id post it on here in case someone had any suggestions. Ill attach my log too.system/libhidl/transport/include/hidl/HidlTransportSupport.h:84:6: note: candidate function not viable: requires 2 arguments, but 1 was providedbool setRequestingSid(const sp<::android::hidl::base::V1_0::IBase>& service, bool requesting);
Okay. So I figured out the issue. It was with my kernel. For some reason the lineageOS kernel(Even without the LXC patches) for 16.0 will not boot for me. Ill installed a different kernel and the system booted fine. Ill continue to look into this. I have a hunch that there is something wrong with the kernel config from the crosshatch 16.0 lineageos repo. So I may find a different source tree and see if that boots.
--
You received this message because you are subscribed to a topic in the Google Groups "Maru OS dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/maru-os-dev/zNB94U6IPaY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to maru-os-dev...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/maru-os-dev/a0ad39c1-6df1-449b-b169-032e3cd58b60n%40googlegroups.com.
Hi!
A couple of things I’ll add on: I had working Pixel 2 and 3 trees, though I can’t remember if I actually submitted the MR to bring in mainline. Since the project is no longer maintained, that’s probably a moot point.
For anyone looking for a non-root way to do this, I used to run Linux (Fedora/Ubuntu) inside a proot container. Proot translates userspace syscalls into kernel calls, which can mean up to ~30% CPU performance loss. That said, I run my laptop as a thin client into a homelab these days, and nothing I do is CPU-bound. On Qualcomm devices you also get Freedreno, so no syscall translation is needed for graphics, which gives you a fully functioning Linux laptop without modifying the base OS. I actually ran this setup as my daily dev environment (including kernel work) for about a year with a NexDock XL and ultrawide monitor, and it worked well.
On the security side, I created a custom work profile: personal profile had frozen Google services and only F-Droid apps; work profile had Aurora Store + minimal Play Services for the apps I had to run. I bridged anything else with AdGuard locally. It’s basically a Graphene-inspired model, but without root.
I’ve since moved away from converged setups due to time constraints, but I think the best path forward is still non-root if you want mainstream adoption. There’s not really a fully functional self-installing proot distro out there for laypeople right now, but it’s definitely possible. Just sharing in case that’s useful.
Chris
To view this discussion visit https://groups.google.com/d/msgid/maru-os-dev/9e8f1e43-ee99-48d8-9af7-4ee892710898n%40googlegroups.com.
Hi,
I should add a quick note. :)
Proot overhead is often quoted as “up to 30%,” but that really only applies to very CPU-bound tasks that rely heavily on kernel context switches or hardware acceleration. For most everyday workloads, I measured the performance hit to be negligible. Anything primarily userspace-bound doesn’t incur extra overhead, since no syscalls are being made.
For example, if you set up GNOME and strip out dbus, you end up with a UI that adds very little Proot overhead. XFCE also works well, as it makes relatively few syscalls. In both cases, you still get access to the full Linux application ecosystem. The heavier hit comes with tasks that require lots of kernel-space context switching. But the nice part is that you don’t need to modify the system at all — you can bind your Proot distro directly to Android desktop mode (or DeX) and even automate launching Linux via Tasker whenever you plug into desktop mode.
Now, if you’re working on a rooted device (whether Graphene or stock Android), there isn’t really a need to lean on LXC. Yes, LXC gives you a security-focused, “out of the box” way to run system containers — but it’s not out of the box on Android. Looking at projects like Lindroid, you still need to enable kernel bits to make LXC usable. As of Android 15 and 16, I see no indication that the required namespaces have been enabled in stock kernels. That leaves only two options today:
This is the core scalability problem: you either give up security around Linux, or you give up the Android-provided security model of your device.
Because of that, I’d encourage people to look seriously at pKVM as a backend. I know, Qualcomm doesn’t support it yet — but they won’t have much choice long-term. Reports indicate Android 16 will package pKVM with hardware acceleration, which would eliminate the need for custom hybris builds per device. Right now, you still need root to use pKVM, and Pixels are the only devices that fully support it. But Google seems to be pushing Android 17 to bring official Linux app support using pKVM, which could finally give us a standardized path forward.
Also worth noting: there is a native X server implementation for Android, and with Wayland you can use tools like waypipe to pipe output directly to an Android client without needing a full Wayland port. That gives you another clean option for running graphical Linux apps in a non-root setup.
Lastly, I realized I never shared this with the community, and I should have. A while back I co-authored and published an IEEE white paper that uses this project as an example to map out different operating system convergence techniques. It’s titled “Operating System Convergence: An Example via the Maru OS Project.” The paper credits Preetam and the community as a whole. I’d be happy to share a pre-publication PDF if anyone is interested. It looks like the Lindroid folks have independently worked through many of the same ideas, which is great to see. :)
I only played a small part as a maintainer and occasional contributor, but I have nothing but fond memories of working with this community. I still believe strongly in the potential of OS convergence in the mobile space. While I don’t have the bandwidth to contribute code here these days, I’m always open to exchanging ideas. And I wanted to share these concepts here in case anyone wants to explore a different architecture.
Cheers,
Chris
Hi Luka,
Great to meet you — I watched your presentation at Volla Community Days last year and really enjoyed it.
Your work on lindroid-drm is especially cool. I hadn’t come across it before and I’ll definitely look through it when I get a chance. From what I’ve seen, virgl can get close to peak performance on a clean Linux host, but the Android implementations I’ve tested haven’t been great. I assumed Google would be pushing optimizations toward Imagination DXT going forward, though that wouldn’t apply broadly. By contrast, your DRM loopback with hybris looks like the most effective path to real performance, even if it requires root and kernel changes.
I’ve also been following how Google is approaching this under pKVM. My impression is that a lot of the DRM problems are sidestepped there, but at the expense of latency and raw performance — two different designs serving two different purposes. That’s also why Linux apps under ChromeOS feel a bit laggy, even though they still run reasonably well. Their new Linux Terminal feature on Pixel devices (Android Authority) seems aimed at Linux app support within an Android-based desktop mode. GrapheneOS is also adding user-facing virtualization with GPU acceleration on the roadmap (GrapheneOS forum). And I’ve been keeping an eye on the Venus project too, since it looks like it could help with some (though not all) of the performance issues you mentioned.
I thought I remembered you experimenting with waypipe at some point — though I might be misremembering, since I can’t find the repo now. For context, I ran into similar issues when I tried launching Wayland from a proot environment in headless mode. At the time I assumed it was just permissions and lack of root access, but your explanation makes it clear there’s a bigger dependency on compositor/DRM that I hadn’t accounted for.
I really like the direction you’re taking with Lindroid. It feels like the clear answer for anyone who needs native performance. The challenge, at least here in the US, is that rooting has become much harder: locked bootloaders, disabled features, broken banking/pay apps, and voided warranties. That’s one reason I stepped back for a while — it became more about fighting hardware restrictions than testing ideas. In that sense, I still think pKVM (or even proot, hacky as it is) has a role: more for Linux as a thin client with app support versus running heavier Linux apps natively.
I’m also attaching the IEEE paper. Much of what it covers you’ve already addressed(Plus more), and since it was written about four years ago, some of it is a bit dated.
Best regards,
Chris
To view this discussion visit https://groups.google.com/d/msgid/maru-os-dev/c9996a6f-c286-40d8-8036-00480378ff4cn%40googlegroups.com.