主要原因是各个系统的硬件不能兼容。
1 手机一般使用的是 ARM 架构。
由于 SoC 与其他设备(例如各种传感器)的通信是使用 I2C 或 SPI 等总线通信的,操作系统无法检测硬件的存在,因此在 ARM 上操作系统对硬件配置信息的获取一般是通过 Device Tree 实现的。即在编译操作系统内核时,在源代码中写明硬件端口与设备的对应关系。
由于主板在不同型号间往往是不同的,硬件布线是不同的,甚至硬件也是不同的,如果没有针对该 hardware revision 重新编译内核,就没办法使用 SoC 外的设备。
2、 运营商利益
运营商的合约机基本上会校验内核的数字签名,防止第三方内核的加载。因为获得系统最高权限有时可以绕开运营商的限制。