android内核版本获取,Android

谷歌系统升级,安卓将采用Linux内核,满足手机高性能需求,你怎么看?
首先作为一个前资深的 Android 程序员,一定要纠正一下这个问题,不是谷歌系统升级,安卓「将」采用 Linux 内核 。不是:「将」 。而是 Android 一直就是采用的 Linux 内核 。安卓(Android)本身就是一种基于 Linux 的自由及开放源代码的操作系统 。系统内核Android 是运行于 Linux kernel 之上,但并不是 GNU/Linux 。
因为在一般 GNU/Linux 里支持的功能,Android 大都没有支持,包括 Cairo、X11、Alsa、FFmpeg、GTK、Pango 及 Glibc 等都被移除掉了 。Android 又以 Bionic 取代 Glibc、以 Skia 取代 Cairo、再以 opencore 取代 FFmpeg 等等 。
Android 为了达到商业应用,必须移除被 GNU GPL 授权证所约束的部份,例如 Android 将驱动程序移到 Userspace,使得 Linux driver 与 Linux kernel 彻底分开 。Bionic/Libc/Kernel/ 并非标准的 Kernel header files 。
Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏 。Android 的 Linux kernel 控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等 。
下载 Android 源码之前,先要安装其构建工具 Repo 来初始化源码 。Repo 是 Android 用来辅助 Git 工作的一个工具 。通过上述我们就可以看出 Android 就是运行在 Linux Kernel 之上的,基于授权版权等原因,它只不过是没有 GNU/Linux 功能那么全面 。为什么会出现这个问题?Android 是基于 Linux 内核的操作系统,但是,运行在 Android 设备上的内核其实与 Google 选择的 LTS 版本 Linux 内核有很大不同 。
在到达每一台 Android 设备前,内核会经历三个阶段的 fork:Google 会先选择某个 LTS(长期支持)版本的 Linux 内核,打上 Android 操作系统的特定补丁,使其成为 Android 通用内核;紧接着,通用内核被交付给高通等 SoC 供应商,打上硬件补丁;最后,SoC 内核再被移交至设备制造商,打上设备特定的各类元件补丁,这也就构成到每台设备中的设备内核 。
这是一个及其漫长的过程,执行多重 fork 并处理数百万行代码大大减慢了整个开发速度 。因此,Android 设备使用的内核相较于 Linux 内核主线要滞后两到三年的时间 。Google 于 10 月份最新发布了 Pixel 4,其 Linux 内核则是 2017 年 11 月发布的 4.14 LTS 版本 。
并且由于过大的工作量,Android 设备通常不获取内核更新,它将永远停留在 4.14 版本上 。再者,各种设备的内核都不尽相同,一台设备的特定内核无法在其他设备上工作 。于是,Google 正试图缩小各 Android 设备内核与主线 Linux 内核间的差距,让设备内核更接近上游内核主线 。在今年的 Linux Plumbers Conference 上,Android 内核团队负责人 Sandeep Patil 表示,他们的目标是从根本上找到 Android 运行所需要的、但不必在给定的硬件上运行的东西,然后将其引入上游并尽可能接近主线 。
Google 的打算是复制其早期工作 Project Treble 以模块化 Android 。Project Treble 用于在 Android 和 HAL(硬件抽象层)之间创建稳定的接口 。与此类似,Google 计划稳定 Linux 的内核 ABI,从而提供一个稳定的写入接口,使硬件供应商可以轻松地插入代码,最终消除特定的设备内核 。
Google 的高级软件工程师 MatthiasM?nnich 展示了一幅预想中的内核体系结构图 。“下一代 Android 设备”内核将由通用内核镜像(Generic Kernel Image,GKI)和多个?GKI?模块构成,特定硬件的驱动程序(可能是闭源驱动)将作为内核模块加载 。总之在该设想中,所有东西都被模块化了 。
【android内核版本获取,Android】

推荐阅读