1 硬件检测

1.1 手机一般使用的是 ARM 架构。
由于 SoC 与其他设备(例如各种传感器)的通信是使用 I2C 或 SPI 等总线通信的,操作系统无法检测硬件的存在,因此在 ARM 上操作系统对硬件配置信息的获取一般是通过 Device Tree 实现的。即在编译操作系统内核时,在源代码中写明硬件端口与设备的对应关系。
由于主板在不同型号间往往是不同的,硬件布线是不同的,甚至硬件也是不同的,如果没有针对该 hardware revision 重新编译内核,就没办法使用 SoC 外的设备。
1.2 一般的计算机使用的是 x86 架构,对于硬件检测一般使用 ACPI 或 UEFI ,而且硬件的总线通信有统一的协议,于是每个硬件可以向操作系统报告自己的存在。这时 Linux 如果有 LKM 的支持,可以动态加载内核模块,或是直接调用静态编译进内核的模块。

2 软件
手机的硬件受限制,存储空间一般都比较小,没必要在里面放置多余的内核模块。

3 运营商利益
运营商的合约机基本上会校验内核的数字签名,防止第三方内核的加载。因为获得系统最高权限有时可以绕开运营商的限制。

— 完 —

本文作者:王明哲

【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)

此问题还有 15 个回答,查看全部。
延伸阅读:
Android 2.1 系统和 Android 2.2 系统的表现差别大吗?
小米手机刷miui还是原生系统好?

分享到