It basically is, but this kernel is much modified by modem maker, SoC maker and device and component manufacturers.
They almost always do dirty low quality patches just to make one device work with Android and not care about sending them to upstream (mainline) kernel or even about compatibility with anything but their Android version.
https://not.mainline.space/ - example of OnePlus 6 having more than 5,600,000 lines of code difference from normal Linux kernel. And is still considered pretty close compared to most phones.
Most of those changes seem to be drivers. I do wonder how much of those changes are auto-generated. AMD and Nvidia sometimes check in millions of changes for that reason, because their open source stuff is largely generated from their proprietary designs.
They are publishing their version of the kernel. The problem is that this kernel is so much modified and dirtly patched it is useless to run anything other than Android.
And many device drivers for Android are now proprietary blobs in Android userspace outside of the kernel code.
For mobile devices, the difference is that Android kernels actually work, and upstream Linux kernels don’t. Projects like postmarketOS are working on mainlining more Android hardware, but you probably won’t get all of your hardware to work if you grab Linux 6.8 and try to run it on your phone.
The weird kernel situation is one of the reasons you get Android phones with the very latest version of Android and a kernel stuck at something like Linux 4.14 or even lower. Upgrading Android isn’t hard, upgrading the kernel would basically require Qualcom and every other company that delivered drivers to patch their code for you.
I think that in the Android kernel (for your device) there are binary blobs for hardware drivers. Which are not in mainline and most of the times not even available anywhere.
What difference does that make? I had thought the android kernel was just the Linux kernel
It basically is, but this kernel is much modified by modem maker, SoC maker and device and component manufacturers. They almost always do dirty low quality patches just to make one device work with Android and not care about sending them to upstream (mainline) kernel or even about compatibility with anything but their Android version.
https://not.mainline.space/ - example of OnePlus 6 having more than 5,600,000 lines of code difference from normal Linux kernel. And is still considered pretty close compared to most phones.
Most of those changes seem to be drivers. I do wonder how much of those changes are auto-generated. AMD and Nvidia sometimes check in millions of changes for that reason, because their open source stuff is largely generated from their proprietary designs.
That not gpl violation? Not publishing kernel patch?
They are publishing their version of the kernel. The problem is that this kernel is so much modified and dirtly patched it is useless to run anything other than Android.
And many device drivers for Android are now proprietary blobs in Android userspace outside of the kernel code.
Android kernels are forks of Linux kernels.
For mobile devices, the difference is that Android kernels actually work, and upstream Linux kernels don’t. Projects like postmarketOS are working on mainlining more Android hardware, but you probably won’t get all of your hardware to work if you grab Linux 6.8 and try to run it on your phone.
The weird kernel situation is one of the reasons you get Android phones with the very latest version of Android and a kernel stuck at something like Linux 4.14 or even lower. Upgrading Android isn’t hard, upgrading the kernel would basically require Qualcom and every other company that delivered drivers to patch their code for you.
I think that in the Android kernel (for your device) there are binary blobs for hardware drivers. Which are not in mainline and most of the times not even available anywhere.