现在的智能手机和平板电脑上在出厂前都预装了操作系统,比如 Android,iOS ,BlackBerry ,Windows,Windows Phone…
在PC上,所谓的装系统,不管是Windows也好还是不同发行版的Linux也好,真正“装”的是什么?是装驱动。
以PC上Windows为例,Windows系统在安装时需要判断是你CPU是单核还是多核(以此确定使用什么类型的内核),安装的过程中,可能还需要重写引导程序,安装各种驱动,包括并不限于CPU、主板、内存、显卡、声卡、键盘、鼠标、显示器……
如果刨除驱动、各种运行库、各种应用软件的话,现代操作系统真正的内核都是很小的,基本上都在几MB到几十MB之间(对于Linux来说,需要需要裁剪内核)。
因为不同PC的硬件配置不同,你的键盘可能是USB的,但别人的可能是PS/2的,你的显卡用是A卡,别人的可能是N卡,甚至可能是CPU里集成的显卡。因此,PC上操作系统的安装程序需要识别你PC上的硬件配置,并加以安装对应的驱动。
因为通常来说,手机的刷机包只能针对特定一款手机型号。也就是说,刷机包的驱动只能适用于特定的某一款手机。
因为移动设备的存储空间不是无限大,且一般来说不好直接扩容,那么操作系统就应该遵循最简的原则:只适配于当前的硬件配置。而且,而且如果厂商在一个操作系统里包含所有驱动,其开发成本是很高的。微软用了几十年的时间才积累下载的驱动开发经验,不是一般厂商能够达到的。
所以,厂商在发布设备的时候时,显示准备好一个适配于当前硬件的刷机包,因为驱动和内核都是完全适配于当前硬件的,那么刷机过程中,真正“装”的东西就很少了。
2、主流操作系统要有适配于移动设备的硬件驱动,不要以为开发驱动很简单,对于移动设备来说,硬件的具体配置未必都是公开的,那么要对一个封闭信息的硬件开发驱动并不是一件简单的事情。
但是对于硬件厂商来说,开放可能意味着售后的麻烦,比如用户会抱怨兼容性不好啦之类的。并不符合厂商的利益。所以,暂时就这样封闭就好了。
1、了解bootloader的原理(对于非操作系统相关的开发人员来说,需要几个月的时间),然后能修改并加载自己的启动镜像。
2、自己能生成新的内核镜像,以及,编译出相关配套的驱动。生成内核镜像并不难,尤其是有了第一步的基础,但驱动就未必是简单的事情了。有些新硬件,根本就没有第三方驱动。
总结来说,因为移动设备和PC的安装过程不同,所以,不要把PC上的观念套用的移动设备上,目前来说,还不太适用(但未来就很难说了)。真要学习这方面的知识,需要对操作系统有一定程度的了解。如果想达到目的,又不像学这些知识,那么花钱是唯一的途经。
手机操作系统是不带驱动的,而手机产商整合了驱动进去。如果脱离手机产商你就没驱动,无法安装其它系统,答案就是这么简单。
PC 端可以自由安装操作系统是因为 固化有BIOS/UEFI 跟手机的 BOOT LOADER 基本是类似的东西,这些东西有通用的接口,通用操作系统也遵循这些接口规范,说白了就是这些硬件和 OS 从开始设计就是为了方便你装系统的,已经在硬件固件的层面帮你做好相应工具而已。
手机属于嵌入式设备,多操作系统从需求上没那个必要,毕竟这类硬件是高度定制化的,通常也需要相应定制化的 OS
说 PC 装系统容易的,你给我随便找个 X86 机器完美驱动个 OSX 试试?UEFI 的机器在不关闭 SecureBoot 情况下你给我个第三方系统试试。
说手机装系统难得,HTC HD2 是个打脸的例子(当然前提我们都是站在那些硬件大神们的肩膀上)。
系统出厂的安装也是类似的,有专门的部署程序来量产化,简单来说跟你线刷一样简单吧(当然这个线刷包要在工程样机上反复测试封装出来的,工程样机理论上可以装任何系统,只要你足够牛逼能搞定引导的驱动问题)。
(反正我知道的 windows8.1 update 支持 winboot 之后部署系统真的是方便爆了,只需要在一台部署“母机”上做好系统镜像,然后就是直接复制到相应分区和写入引导指令的事情,装一个系统就是拷贝4,5 G数据的时间,爽歪歪?)
首先是BROM(固化在芯片中不可更改的代码), 多半应该是有secure check机制的, 不同厂未必一样, 除非你是内部人员否则几乎不可能破的了, 强行安装多半直接变砖
如果过的了第1关, 则面临另外一个问题: 硬件驱动(直接控制硬件工作的代码), 不同的厂商芯片的硬件控制器是完全不同的, 你需要查看芯片厂商是否提供了不同OS的驱动, 如果没有则又是一条死胡同
手机操作系统可以统称为HLOS,即high level os ,于此对应,自然还有底层的bootloader,用于引导内核。
所以首先要求内核去适应bootloader,然后是驱动,手机的零件多种多样,光触摸屏就好多家。。驱动都需要修改,这些都需要底层源代码去修改。。。
还有就是手机的硬件调试接口基本上没有。。。还有就是手机电路板的连线,各个都不一样,所以现在的代码没做到去适应硬件连接。。。

