Android Phone

Google wants to bring Android “as close as possible” to the mainline Linux kernel.

This noble goal, reported by Android Police, was expanded on by Google engineers speaking at the Linux Plumbers Conference 2019.

Though Android is built on top of a Linux kernel, it’s not built atop the same Linux kernel that most desktop Linux distributions use.

Instead, it uses something called the Android common kernel. This is heavily modified LTS version that incorporates a bunch of “out of tree” code from chip makers, hardware partners, and Google itself, as well as firmware drivers, quirk workarounds, and other miscellaneous patches.

Repeat the process for every Android phone out there and you can an idea of how divergent things currently are.

Android Linux Kernel

Ubuntu Phone, Canonical’s failed attempt at bringing Ubuntu to smartphones, relied heavily on co-opting existing Android devices because it re-used the existing Android Linux kernel available.

But a new bread of ARM-based smartphones, including the Librem 5 and the PinePhone, are targeting mainline Linux support as a feature.

And Google is clearly thinking along the same lines.

Just don’t confuse Google’s wishes with reality. This is something they’ve been talking about for a while, and are making plenty of progress on.

But this all remains some way off happening.

“Major technical and political changes”

Switching Android to run on the mainline Linux kernel would be a huge undertaking, one that would inevitably major technical and political changes changes to the way the Linux kernel is currently developed.

Instead of each Android device shipping its own device-specific Linux kernel, Google’s idea is to upstream as much code as possible, and stabilize Linux’s in-kernel ABI so that there’s stable interface for Linux kernel and hardware vendors to target.

In short, as Ars Ron Amadeo sums up, ‘Google wants to decouple the Linux kernel from its hardware support’.

And that’s unlikely to happen overnight, if ever.

Dev News Android Google linux kernel