红米Note4X 刷机LineageOs 14.1全过程讲解

之前上一期,我们已经将红米Note 4X相适配的LineageOS相关刷机包已经编译出来了,是驴子是马拉出去溜溜就知道了,接下来就要开始刷机旅程了,当然刷机有风险(自己刷成了砖,我也没办法),所以首先我们要来了解一些刷机方面的小知识,做到心中有数,遇事不乱即可。
手机其实跟PC没什么本质的区别,都有bootloader都有kernel和system文件夹,先上一张简图
红米Note4X 刷机LineageOs 14.1全过程讲解_第1张图片
我们姑且把每一个块就当做一个线性的数据存储空间吧,可以看到bootloader在最前头,负责启动后面的正常内核 或者recovery内核吧。内核启动完了,光有个卵用,还得创建出init 开始进入应用层,应用层的app就负责调用内核提供的系统调用来完成各种功能。这样我们才看得到各种app的身影。 所以/system就是我们操作系统最基础的组件和app存放点。/data我们可以看成用户自己存储的数据和app文件夹,比如你下载点啥,安装个啥app吧。/cache就是缓存系统了,存放系统的一些临时文件,或者日志记录等数据,通常刚开始它是空的。
我们再结合~/android/out/target/product/mido下面生成的几个img文件,与上面几个块的对应关系吧。
红米Note4X 刷机LineageOs 14.1全过程讲解_第2张图片
boot.img 对应的就是 boot kernel + ram disk
recovery.img 对应的就是recovery kernel + ram disk
system.img 对应的就是/system
userdata.img 对应的就是/data
cache.img对应的就是/cache
那么bootloader呢,通常我们不去乱动它,当然你也可以刷成自己定义的bootloader,但是我暂时不建议这么做,因为bootloader一旦损坏了,不能正常工作,你的手机就变砖了,这个时候普通刷机方式无能为力。所以,通常我们解锁bootloader就是所说的手机解锁。就是让bootloader能听从我们的话,往手机内部flash存储块中刷入各种img。这就是刷机了,通常我们所说的线刷,一般是靠bootloader完成的。
当然还有一种叫卡刷,那个就是启动进入recovery kernel中,基本上是一个最简单的linux基本系统,当然我们可以加载其他app拿着root权限来对整个系统所有文件区块进行写操作了,当然包括刷入新的boot.img了。现在不知道各位明白了没。
有了这点基本知识,刷机就可以开始了。
大家可能会问,怎么boot.img 和recovery.img都是由两个文件组成的呀。对呀,它其实由两个文件组成,一个是内核二进制(zImage)另一个是内存磁盘镜像(ramdisk.img)。这个ramdisk.img其实就是一个利用内存作为磁盘的模板文件,由内核加载到内存中,然后挂载到文件系统中去,这样可以加快启动文件的读取,也能够起到一键还原的功效,因为你在里面可以随便改,但是重启了之后,它依然加载的是flash上的ramdisk.img.这种设计的确巧妙,不愧是linux吧。ramdisk.img里面放的就是系统内核启动完毕要执行的第一批最必要的系统应用如init等。它会完成后面的/system 和 /data的挂载等工作。所以ramdisk.img的作用很关键。
那么boot.img 和recovery.img有什么区别呢,我认为,内核zImage部分应该没啥区别,估计区别在ramdisk.img ,recovery模式你面放入的可能是一个恢复程序,而不会引导加载后面的文件分区来完成正常的启动,那么我们可以把 boot.img 和recovery.img看作一个双系统中的两个不同的linux系统吧。

小米的bootloader我们可以在手机启动时,按住音量- 和电源键,你会看到一个fastboot界面,其实用的就是fastboot作为bootloader,fastboot是个什么东西呢,其实只是bootloader的一种。上一张国外的bootloader功能图
红米Note4X 刷机LineageOs 14.1全过程讲解_第3张图片
其实就是可以实现从不同的分区引导启动系统。
fastboot其实是一种较为高级的一种bootloader它加载了一个微小的内核,支持基本的usb协议,所以它可以通过usb线,来传输和接收数据和控制命令。
当我们将手机启动进入fastboot等待模式时,他就会不停的接受来自usb的数据信号,只有当上位机发送各种指令和数据时,它就会根据上位机的指令来做各种操作,比如擦除某个分区,写入某个分区新的数据。
我们可以将上位机发送的命令分为三种

第一种,基本命令


  命令     |             解析
 devices  |  列出所有的fastboot客户设备
getvar    |  获得某个参数值
continue  |  继续正常启动
reboot    |  重启正常启动
reboot-bootloader |   重启到fastboot等待模式

第二种,刷机命令

命令      |         解析
erase   |擦除某个分区 比如boot,recovery,system,data
flash  |擦除并刷写入同名的 .img文件
flash   |擦除分区并写入相对应的filename的img文件
flashall | 这个就是擦除boot recovery system分区,然后写入fastboot目录下 boot.img  recovery.img system.img文件                              

第三种,额外指令
命令     |   解析
oem      | 与设备特定相关的操作,比方说解锁
boot    | 这是个很有用的命令,直接将内核文件和ramdisk文件加载到内存,不刷写,直接从内存引导启动,这样对系统的伤害降到了最低,通常想测试内核是否是好坏,可以采取这种方式。

好了fastboot命令讲解完了,大家就应该知道线刷是怎么回事了吧。
接下来我再将卡刷,之前讲过了,是进入到recovery.img这个内核镜像中去了,内核通常没区别,因为内核提供基本与各种设备操作的基本接口,而唯一的区别就在于ramdisk 上面,如果我们能够写一个非常好用的应用程序,可以实现对各个分区进行擦写,那么就是一个非常好的刷机app了,这么优秀的app有很多,我比较推荐一个就是
TWRP ,估计很多搞过卡刷的人都耳熟能详了,官方已经制作好了相应的recovery.img了,你只要把recovery分区刷进去,然后开机按 电源键 和音量+键 ,就可以进入到recovery系统了,这个时候你就会看到twrp操作界面了。现在明白了吧,用twrp刷机就是我们通常所说的卡刷了。
明天接着写,实际操作,时间有限,

你可能感兴趣的:(android,bootloader,kernel,android刷机,note4x刷机,lineageOs)