【发布时间】:2019-08-09 08:26:23
【问题描述】:
我很想知道在构建设备内核的最终版本之前对 Android 通用内核进行了哪些更改。
其次,我想知道是否有任何设备可以运行未经修改的通用内核。
【问题讨论】:
我很想知道在构建设备内核的最终版本之前对 Android 通用内核进行了哪些更改。
其次,我想知道是否有任何设备可以运行未经修改的通用内核。
【问题讨论】:
1) OEM 想要的任何更改。这可以从无到有,到错误修复,再到功能添加。几年前,他们通常会修补 RTL 文本以使其正常工作,但仅适用于他们知道将用于这些区域的模型。现代的例子是在谷歌添加分屏之前对分屏的自定义支持,或者折叠设备,或者缺口
简而言之,这个问题无法回答。 OEM 可以添加他们想要的任何东西。
2) 如果您真的想要,请自行构建。这是唯一确定的方法。
【讨论】:
在设备上发布之前对 Android 通用内核所做的更改通常由两个组织完成:SoC 制造商(最常见的是高通)和设备制造商。 SoC 制造商为 SoC 添加驱动程序,并可能以其他方式修改内核以使用这些驱动程序。设备制造商修改内核以添加任何额外的驱动程序(例如用于显示器、触摸屏等),并创建设备树源文件以指定设备中的硬件以及设备中的硬件如何连接。此外,制造商可以随意修改内核。通常这样做是为了增加对特殊软件“功能”的支持(三星等某些 OEM 以这种方式而闻名),或者增加对新型硬件的支持——这对于第一个 Android 来说可能是必需的具有指纹读取器、显示屏切口或可折叠屏幕等设备的设备。
是的,有些设备可以运行 Android 通用内核。 Android 通用内核只是主线 Linux 内核的一个分支。因此,如果设备的驱动程序和设备树在主线 Linux 中,那么 Android Common Kernel应该在其上运行。让我们更具体一些。谈到 Qualcomm SoC,Snapdragon 410、450、625、630、632、636、808、810、820、835、845、850、855 和 865 在 Linux 内核 v5.12 中都有一定程度的支持(虽然这不是一个结论性的清单)。这意味着在主线 Linux 中具有这些 SoC 和设备树的任何 Android 设备理论上都可以启动主线内核,从而启动 Android 通用内核。那么,哪些 Android 设备实际上在 Linux 5.12 中有设备树?这里列出的太多了,但这里有几个:谷歌 Nexus 6P、三星 Galaxy A5、小米 Poco F1、一加 6T、索尼 Xperia Z5。这些设备及其 SoC 的设备树源文件可以在 linux/arch/arm64/boot/dts/qcom/ 中找到。
【讨论】: