对于一个android手机用户加软件工程师,刷机而不知道它的内部原理,那是很痛苦的。本着学习的心态,还是去研究了一番。

首先,你要知道智能手机就是一台小电脑,如果你恰好用的是linux系统,那可以说两者在系统层面没有区别。因为android就是linux内核外加java虚拟机。当你开机时,机器首先要启动,CPU最先执行的一段程序就是BootLoader,这和电脑上的BIOS是一个玩意儿。它所做的事情就是初始化硬件,CPU时钟之类的,以及加载内核文件。BootLoader可以分为两个阶段。在阶段一,做了一些初始化,在阶段二,如果发现按键有特殊的组合,比如htc g2是回退键和开机键,就会进入fastboot模式。这里要说的是,内核还没有加载,所以更谈不上多进程任务调度之类的概念,机器只是在顺序执行一条条的指令。

BootLoader既然要做硬件初始化之类的,必然和硬件相关,所以它的代码并非通用的,不同的硬件需要不同的BootLoader代码,各大厂商可能都有自己的,并且加入开机画面之类的。最常听说的是uboot和hboot,后者是htc的bootloader。我们常说的刷机,是不会动bootloader的,只会动这之后的系统部分。

再说fastboot,它是bootloader后期进入的一个特殊阶段。可以通过数据线与电脑连接,然后在电脑上执行一些命令,如刷系统镜像到手机上。fastboot可以理解为实现了一个简单的通信协议,接收命令并更新镜像文件,其他什么的干不了。

如果没有进入fastboot,bootloader继续执行,如果又发现有特殊的按键组合,比如htc g2上是home键和开机键,则会进入recovery模式。分析recovery.img镜像文件就会发现,它里面包含了一个kernel以及一个可执行程序recovery,以及一些初始化文件。从某种意义来说,这就是一个小型操作系统,和正常启动进入的系统的kernel是一样的,只是init及之后干的事情不同。这里的kernel和我们常说的linux内核还是有差异的,linux内核是包括kernel以及调度器内存管理等除显示界面外完整系统。而kernel只是指内核init进程启动前的那一段逻辑。

在recovery模式下,会加载了部分文件系统,所以才可以读sdcard中的update.zip进行刷机,当然,也可以清除cache和用户数据。

讲到这里,我想说的是,既然recovery是一个小型操作系统并且有手机这样现成的设备,我们可以基于它做些有趣的事,比如移植网络协议及无线网络连接逻辑,然后开发一个命令行版的新浪微博客户端,这样就可以用自己改造的系统发微博了。当然,先改一个hello world版的recovery再说。也许还可以基于这些实践写一些帮助学习操作系统的教程。

Android BootLoader及两种刷机模式fastboot和recovery相关推荐

  1. 使用ubuntu16.04对NVIDIA Jetson Xavier NX使用刷机:两种刷机方式:SD卡镜像法 和 NVIDIA SDK Manager法

    文章目录: 1 NVIDIA Jetson Xavier NX的两种刷机方式 2 使用SD卡镜像法对Jetson Xavier NX刷机的具体步骤 3 使用NVIDIA SDK Manager法对Je ...

  2. 进入android刷机模式,手机进入recovery模式怎么刷机?【详细步骤】

    [导读]手机作为现在应用最广泛的通讯工具,越来越多的被人们所关注.在应用上不仅仅在通讯方面非常的突出,在学习方面还有娱乐方面都能够表现出非常不错的水平.就目前来讲,智能手机现在已经变得非常的普及了,对 ...

  3. android手机刷机的作用,安卓手机几种刷机模式作用及分区介绍

    做一个记录,自己用也好,免得下次要刷机又望了,到处找资料. 1.普通启动模式 方法:长按电源键 用途:正常使用 2.fastboot模式 方法一:长按 电源键+音量下键 方法二:抠掉电池,然后长按音量 ...

  4. MTK 刷机模式 fastboot 图片

    目录 修改 验证 修改 1.路径 alps/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/fhdplus2400 2.修改 替 ...

  5. lgv50怎么进入fastboot模式_fastboot知识扫盲 高级刷机方式fastboot模式怎么进入?

    安卓手机刷机有很多种方式,大家比较熟悉的是Recovery,然而小编为大家介绍的是另一种刷机方式,fastboot.那么fastboot是什么意思呢?英语直接翻译意思是快速启动.在安卓手机中fastb ...

  6. 【转】adb sideload 刷机模式. 一种用USB线,刷卡刷包的方法.

      我前段时间刷Android机失败了,不忍眼睁睁变成砖头,终于找到了砖头起死回生的办法...... 感觉挺有用的,分享一下. ------------------------------------ ...

  7. Android逆向之源码刷机及Root

    前言 作为一个软件逆向分析师,拥有一台干净纯粹的手机,是一件开心事情. 对于拥有Google Nexus系列机器的我, 编译Android源码并刷入机器中,一件振奋人心的事情,我们今天就来带大家一块来 ...

  8. 小米手机四种刷机方法

    首先声明我不是给小米打广告,我也不是小米的人,只是最近有很多人问我怎么刷小米,我就把这篇还不错的刷小米的文章写在这里,方便那些需要的人. OTA升级刷机 OTA升级是所有厂商都提供的一种升级方式,一旦 ...

  9. 第七天:整理S5PV210三种刷机方式 及自身问题总结

    1.3.ARM裸机第三部分-开发板.原理图和数据手册 第一部分.章节目录 1.3.1.开发板和光盘资料简介 1.3.2.开发板硬件手册带读 1.3.3.开发板刷系统1 1.3.4.开发板刷系统2 1. ...

最新文章

  1. SAP 采购订单上的总账科目如何自动带出来
  2. 标准成本、目标成本、实际成本
  3. 如何增加SAP_ALL的权限
  4. 冰墩墩+周杰伦也救不了NFT
  5. kafka抑制启动时的log INFO为WARN级别
  6. ftp服务器连接成功不显示端口,ftp被动联接端口是怎样确定的
  7. Redis学习日记-05:SORT命令
  8. 洛谷P4364 [九省联考2018]IIIDX(线段树)
  9. php 类别名,关于php:从类别ID laravel获取类别名称
  10. excel删除行闪退_Excel出现闪退如何处理?
  11. Arcgis拓扑检查必须相互覆盖操作步骤
  12. 2021图像检索综述
  13. 阿里云API网关(9)常见问题
  14. java配置文件起名规范_Mybatis注解和配置文件命名规范所引发的问题
  15. Mac IntelliJ IDEA 2020.1 闪退
  16. 标准正态分布变量的累积概率分布函数
  17. 访客模式 无痕模式 区别_旧访客设计模式的新生活
  18. 压在心底慢慢体会__珍藏的句子
  19. 老男孩读PCIe之四:TLP类型
  20. 【雅思阅读】王希伟阅读P2(阅读填空)

热门文章

  1. 数据结构课程设计 公交系统
  2. 如何简单的抓取网站数据
  3. NAM: Normalization-based Attention Module,一种新的注意力计算方式,无需额外的参数...
  4. 横向TableVIew的实现
  5. 386页《Python深度学习》电子书及源码下载
  6. Flutter Checkbox 复选框
  7. ImportError: `load_weights` requires h5py when loading weights from HDF5.错误
  8. G++ + OpenCV 编译
  9. paddlepaddle 27 支持任意维度数据的梯度平衡机制GHM Loss的实现(支持ignore_index、class_weight,支持反向传播训练,支持多分类)
  10. 一套系统要不要这样贵,5亿美元