> In Android 8.0 and higher, the lower-level layers are re-written to adopt a new, more modular architecture. Devices running Android 8.0 and higher must support HALs written in HIDL, with a few exceptions listed below. These HALs can be binderized or passthrough. In Android 11, HALs written in AIDL are also supported. All AIDL HALs are binderized.
> Binderized HALs. HALs expressed in HAL interface definition language (HIDL) or Android interface definition language (AIDL). These HALs replace both conventional and legacy HALs used in earlier versions of Android. In a Binderized HAL, the Android framework and HALs communicate with each other using binder inter-process communication (IPC) calls. All devices launching with Android 8.0 or later must support binderized HALs only.
https://source.android.com/docs/core/architecture/hal
> The term Legacy HAL refers broadly to all pre-Android 8.0 HALs (deprecated in Android 8). The bulk of Android system interfaces (camera, audio, sensors, etc.) are defined under `hardware/libhardware/include/hardware` and have rough versioning and a roughly stable ABI. A few subsystems (including Wi-Fi, Radio Interface Layer, and Bluetooth) have other non-standardized interfaces in `libhardware_legacy` or interspersed throughout the codebase. Legacy HALs never provided hard stability guarantees.
https://source.android.com/docs/core/architecture/hal/archiv...
Hence my doubts, what makes Android Linux isn't on the Linux kernel.
Also I am not sure if everything related to Binder, gralloc and SurfaceFlinger are part of upstream contributions.
Then there are the ebpf customizations, different SELinux and secccomp settings, among others.