Linux内核版本介绍与查询,安卓6.0 linux内核版本

对于安卓,是否可以理解为安卓系统其实跑的是Linux?

Linux内核版本介绍与查询,安卓6.0 linux内核版本


对于安卓,是否可以理解为安卓系统其实跑的是Linux?这个理解不是不准确的 。首先我们看下Android系统的架构:Linux kernel只是Android系统的一部分,并且对原生Linux进行了大量改动 。Android 底层运行的Linux是基于开源的Linux,但是也在Linux基础上做了很大的改动:1.Google自己开发了一套Bionic Libc来代替glibc 。
2.Android应用并不是基于标准的Linux应用,而是基于Java虚拟机Dalvik、ART以及JNI的一套应用体系 。3.增加了Android专有的驱动程序: 比如Android Binder 、Low Memory Killer、Android Alarm等驱动 。Android Linux内核版本和Linux发型版本不一致:Android Linux内核版本比Linux发型版本都会低很多,目前Linux最新版本是Linux5.0.2了,而Android9的一些手机Linux还是Linux4.18系统 。
谷歌系统升级,安卓将采用Linux内核,满足手机高性能需求,你怎么看?
Linux内核版本介绍与查询,安卓6.0 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 运行所需要的、但不必在给定的硬件上运行的东西,然后将其引入上游并尽可能接近主线 。

推荐阅读