首页 > 手机 > 系统 > Linux内核版本介绍与查询,安卓6.0 linux内核版本

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

来源:整理 时间:2022-03-23 12:50:17 编辑:华为40 手机版

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

对于安卓,是否可以理解为安卓系统其实跑的是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

首先作为一个前资深的 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 设备内核引入主线 Linux 内核肯定会使包括 Android 用户、手机制造商和 Linux 社区等在内的不少人受益。所以,最近有新闻爆出,谷歌计划将 Android 内核统一至Linux内核主线上,后续其实还有很多工作要完成。

Linux Kernel 5.0.1新鲜发布,较月初的5.0版本有哪些变化?

Linux 内核系列终于迎来了第一个小数点(5.0.1),目前它已经做好了被任何 Linux 用户和 GNU / Linux 发行版采用的准备。3 月 4 号的时候,Linus Torvalds 才发布了 Linux Kernel 5.0,所以本次 Point Release 来得还是相当快的。作为一个具有适度功能的“里程碑”,5.0 版内核主要加入了对 AMD Radeon GPU 的 FreeSync、Btrfs 文件系统的交换文件、面向低功耗设备的 Adiantum 文件系统加密的支持、以及改进 ARM big.LITTLE 处理器的能源管理。

Linux Kernel 5.0 还加入了对 binderfs 文件系统的支持,使得设备能够运行多个 Android 实例,支持用户数据报(UDP)协议,以实现通用接收卸载(GRO)功能,此外支持 cgroupv2 中控制器的 cpuset 资源。现在,Linux Kernel 的首个“点发布”版本(5.0.1)已经到来,意味着新版内核已做好被大规模采用的准备。

Greg Kroah-Hartman 表示:“随着 Linux Kernel 5.0.1 的发布,所有 Linux Kernel 5.0 内核用户都应该尽快更新”。5.0.y git 树可通过以下方式、或移步至 Kernel.org 官网获得:git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.0.y如果你想为自用架构和基于 Linux 的操作系统编译 Linux 5.0.1 内核,那现在就可以从 Kernel.org 网站下载体验了。

此外您喜爱的 GNU / Linux 发行版,也将很快向各自的软件存储库推送更新的版本。作为一个维护更新版本,Linux Kernel 5.0.1 仅改动了 53 个文件,包含了 520 项插入和 234 项删改。精通技术的朋友,可以参阅 Greg Kroah-Hartman 的邮件公告列表,那里附有详细的变更日志。

文章TAG:内核版本Linux安卓6.0

最近更新