发现网上一些文章对bootloader,root等概念的解释不够清晰,甚至存在错误,所以把一些经验和大家分享一下,如有错误请指出
一般懂Android的人都知道有一样叫Bootloader的东西,先解释一下他的用途
1.对硬件进行必要的初始化和检测错误
2.防止boot,recovery分区被写入。
有些人会问,boot,recovery分区是什么?其实Android就正如我们使用的桌面端一样,会把硬盘分区进行使用,只是这里Android是使用了Nand Flash而不是硬盘,boot分区里面有linux内核 + ramdisk。 而recovery分区里面也是有linux内核 + ramdisk,一般boot和recovery的内核是同一个,但recovery里面的ramdisk会有更多recovery需要使用的程序和数据。可见这2个分区都是很重要的分区,必须进行相应的保护。
但有趣的是Bootloader本身却是可以被升级的(前提是厂家提供的升级包,只有他们才知道bootloader的),其实就如我们电脑主板上的BIOS一样,是EEPROM,也是可以升级的。如我的xt720手机,是一款摩托罗拉的老手机了,它的Bootloader上锁+加密,这里注意上锁和加密是2个不同的东西:
1.上锁了,可以防止个人误操作,你解锁了,就可以随意修改boot和recovery的数据。
2.加密了,你想误操作都没机会,因为你没有解锁码。
所以,如果你要解锁,必须先得到解锁码,先解密了,然后才能解锁。
接下来再把一些概念弄清楚,root和bootloader解锁是没有任何关系的,root是开发者通过内核的一些漏洞而获得最高权限,root是在操作系统的层面,而bootloader是偏硬件的层面,有2种情况,
1.你root了,可以通过root修改system分区的数据,但你还是不能修改boot和recovery的数据,因为bootloader还没解锁。
2.而如果你bootloader解锁了,但你没有root,你连system分区的数据都无法修改。
这时候可能会有人疑问,为什么我bootloader上锁了,我还是能装recovery?还能刷ROM?
1.其实这个recovery不是真正的recovery,它不是真正安装在recovery分区的,他只是在读取boot分区完成后,读取Android操作系统前,执行了这个所谓的recovery,所以用户看起来就像进入了recovery,这种recovery被称为2ndinit。
2.关于能刷ROM的问题,这里刷ROM仅能改变system分区的内容,也就是改变了Android系统的内容,比如把2.2的UI换成4.0的,换一些framework等,但是boot分区的linux内核你是改不了的。这时候又有一种称为2ndboot的技术了,当从boot分区完成原厂内核的加载后,2ndboot把开发者的自定义内核替换掉当前内存中的内核。
2ndinit和2ndboot都是退而求其次的方法了,能真正bootloader解锁才是真正的王道啊!