安卓系统bootloader模式是什么?如何进入bootloader

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

在安卓系统当中,我们可以看出bootloader在系统当中是很底层的东西,如果在刷机的时候损坏了bootloader那肯定是无法开机的,如果问题严重的话可能需要重写底层,所以新手朋友们在刷机之前还是要了解一些刷机的专业知识。俗话说磨刀不误砍柴工,做好之前的学习准备,在刷机遇到问题的时候就更加游刃有余了。

当然有的品牌的手机bootloader是加了锁的,其目的就是为了防止用户私自刷机从而导致系统不稳定。虽然加了锁。但是在用户强烈的要求下还是能对bootloader的解锁。比如:HTC、华为、索尼等机器都能官方解锁,而三星则直接没有给bootloader加锁。

1、何为“Bootloader”?

  Bootloader是一个Rom里的固件管理工具。使用它可以让你恢复出厂设置,用Fastboot刷机,加载Recovery工具。

  在Bootloader里你也可以查看S-ON/S-OFF的状态,固件和Radio的版本等等。

  进入Bootloader无需root或S-OFF。在每台HTC出厂的手机里都有。

  2、如何进入Bootloader?

  关机,然后按住音量-和电源键。(需要把“快速开机”关闭,在“设置”》“应用程序”里改。或者拔掉电池,让手机真正的关机。)

  你可以直接拔电池来退出Bootloader。

  如果你装了自制recovery的话,可以进入recovery,然后重启手机。

Android BootLoader及两种刷机模式fastboot和recovery

对于一个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以及一些概念解释
分类: Android系统 2013-05-03 01:24 208人阅读 评论(0) 收藏 举报

发现网上一些文章对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解锁才是真正的王道啊!

Android的bootloader相关推荐

  1. android+rom+bootloader+flash,Android ROM开发(4) bootloader 三种启动模式

    Andrew Huang 转载请注明作者及网址 HTC手机中用的bootloader称为HBoot,不知道是不是HTC Bootloader 之意,从官网的源码看这个bootloader不象是u-bo ...

  2. MTK 驱动(73)---MTK 6761平台 android O bootloader启动之 Pre-loader -amp;gt; Lk

    MTK 6761平台 android O bootloader启动之 Pre-loader -> Lk 1.bootloader到kernel启动总逻辑流程图 ARM架构中,EL0/EL1是必须 ...

  3. Android系统分析——Bootloader(Lk)

    1.Crt0.S 2.bootable/bootloader/lk/app Android系统分析--Bootloader(Lk) LK是android系统的bootloader,是系统启动后的最早入 ...

  4. 高通、猎户机型Android典型bootloader分析

    1.bootloader是什么? 简单地说,bootloader 就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,我们可以初始化硬件设备.建立内存空间的映射图,从而将系统的软硬件环境带到一 ...

  5. MTK 6761平台 android O bootloader启动之 Pre-loader - Lk

    1.bootloader到kernel启动总逻辑流程图 ARM架构中,EL0/EL1是必须实现,EL2/EL3是选配,ELx跟层级对应关系: EL0 -- app EL1 -- Linux kerne ...

  6. android 官方bootloader,安卓系统bootloader模式是什么?如何进入bootloader模式

    [刷机之家]在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的 ...

  7. Android Mediatek bootloader oem锁定和解锁流程

    目录 修改的文件: 文件修改说明: 这个修个是在mtk android11上的 , 就是个进入oem解锁流程  , 下面这部分代码就是开机检测按键 , 然后进入不同模式的.如果要修改其他的 也是大同小 ...

  8. android rom 工作,Android ROM开发(4) bootloader 三种启动模式

    Andrew Huang 转载请注明作者及网址 HTC手机中用的bootloader称为HBoot,不知道是不是HTC Bootloader 之意,从官网的源码看这个bootloader不象是u-bo ...

  9. 高通平台MSM8916LCM模块移植(一)-bootloader部分

    此次移植打算分成两个模块来说,bootloader部分和kernel部分.在实际的移植调试过程中也是这么分成了两个部分分别调试. 高通平台中的bootloader叫做LK(Little Kernel, ...

最新文章

  1. 【2020论文】U-Det:一种改进的双向特征网络U-Net结构用于肺结节分割
  2. axr_Lab1_scan_top_down_flow(下)
  3. 自由鸟书评排行网开始上线试运行,欢迎前往评论!
  4. [转]计算机学习道路
  5. 简单配置局域网FTP
  6. seach和seachd的区别
  7. 【转】在windows上安装VTK
  8. TensorFlow官方教程翻译:导入数据
  9. MySQL 检索 JSON 字段
  10. Mysql出现Table 'performance_schema.session_status' doesn't exist
  11. 简单粗暴讲述自动化仓储系统
  12. 长沙民政职业技术学院计算机网络技术专业,长沙民政职业技术学院计算机网络技术专业...
  13. Android O/P/Q 版本移植iperf网络性能测试工具
  14. 数学建模系列---熵权法
  15. KYLIN立方体构建详解
  16. 局域网环境搭建Jenkins
  17. 老子《道德经》第五十二章
  18. 长江后浪推前浪 被移动支付拍到沙滩上的行业有哪些?
  19. 如诗的别离——品读TERRY的告别邮件
  20. 华为什么机型可以使用鸿蒙系统,华为手机鸿蒙系统支持哪些手机型号-鸿蒙系统支持设备型号说明-红鼠网...

热门文章

  1. 最新亿级流量电商详情页系统的大型高并发与高可用缓存架构实战第一版附全套资料
  2. 好用的思维导图软件有哪些
  3. solaris 的ZFS操作
  4. 如何免费安装并激活序列号iMazing软件
  5. 2022-2028全球与中国绿色氢基微电网市场现状及未来发展趋势
  6. 对比分析方法,数据异动的假设,如何找出羊毛党
  7. [oracle]通过DBLINK远程查询带DBLINK的视图
  8. excel中精度损失导致太长的数字后面全变成了零的解放方法
  9. R语言进行多重样本t检验代码问题
  10. 使用 GPG 加密和解密文件