IT门户, 中国互联网人工智能物联网行业资讯平台--公众IT

当前位置:公众IT > 技术文章 >

新闻来源:互联网资料整理       发布时间:2023/4/5 17:31:10       共计:4597 浏览

首先作为一个前资深的 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内核主线上,后续其实还有很多工作要完成。


谷歌只是想将 Android 内核统一至Linux内核主线上,Linux内核主线上,Linux内核主线上,重要的事情说三遍,是主线上。其实 Android 一直都是基于 Linux 内核的操作系统。


不知道大家看明白了没有?

先纠正一个不准确的地方。安卓的系统一直采用的都是Linux的内核,只是在Linux的基础上,谷歌做了很多内核代码的修改。

2017年,谷歌就修改了超过6万行Linux内核的代码,2018年,谷歌又加入了32000行代码,删除了1500多行代码。但是这并不能改变安卓是基于Linux来研发的事实。

这一次谷歌进行安卓的系统升级,只是对现有的安卓内核进行再一次的升级,让安卓的内核能够更接近于主流的Linux内核。而目的,是准备将安卓内核和应用程序与驱动分离,保持内核的独立于纯净。

谷歌再次进行内核的优化,其核心的目的可能是为了谷歌的新系统Fuchsia铺路。

谷歌很早就在研发自己的新系统Fuchsia,而这也是谷歌的第三个操作系统。Fuchsia已经毫无疑问的将会使用新的内核Zircon,而不再使用Linux内核。不过,Fuchsia将会兼容基于Linux内核的应用程序。

如果要想量Fuchsia拥有更好的兼容性,自然安卓的内核越接近Linux的主流内核,就能够更好的进行兼容。越多的自定义内容,只会让安卓进行Fuchsia的切换时,难度更加的大。

谷歌和甲骨文之间由于安卓系统的各种纠纷,一直让谷歌很苦恼,安卓成为了最大的移动操作系统,但是却使用了Java平台的内容,其中就包括甲骨文没有授权的源代码修改,所以一直官司不断。谷歌的一直想进行安卓的平稳切换,因此,Fuchsia是迫在眉睫的事情。

因此,谷歌在优化安卓的同时,将安卓的内核分离,并且让内核更接近于主流的Linux,这对于谷歌未来的新系统切换有着重要的意义。

这问题就看不懂了,android本身就是基于Linux内核开发的,而且android也已经满足高性能需求了,虽然android有自己的缺点,但是Linux直接安装在手机上的效果也并没有很好。所以不明白题主想说什么,android换用Linux内核不是就相当于没换嘛。

一、安卓本来就是采用linux内核

首先要说明的一点是,安卓是基于linux内核而来的,谷歌并没有否认这一点。只是谷歌在linux内核的基础上,做了很多的修改完善,然后成为了安卓系统。

下面这张图很好的说明了这个问题,所有的系统其实都是基于nuix,然后再发展到linux,而安卓、华为鸿蒙基于linux,iOS基于unix。

二、谷歌这次是指让安卓接近目前的主流Linux内核,意思是以后尽量少改,与linux内核尽量保持一致。

前面已经讲过,安卓是linux修改而来的,所以虽然它采用的是linux内核,但却做了修改,谷歌这次升级的意思是以后要尽量少修改,在内核上尽量与linux内核保持一致。

它为何要这么做?有两个原因:

1、同时物联网的到来,linux系统的设备越来越多,它们使用linux内核,而安卓使用修改过的linux内核,之间还是有区别的,所以谷歌打算尽量统一起来,以达到各设备之间的兼容等等,以后大家要更换系统也容易简单了,这样安卓会有更多的机会。

2、谷歌准备将安卓内核和应用程序与驱动分离,保持内核的独立、纯净。这个是基于目前目前linux内核已经很强大了的基础来的。

版权说明:
本网站凡注明“公众IT 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
您可以扫描右侧微信二维码联系我们。
·上一条: | ·下一条:
网站首页 关于我们 联系我们 合作联系 会员说明 新闻投稿 隐私协议 网站地图