android boot.img
android在启动时uboot推断有没有组合健按下或者cache分区的升级文件来决定进入哪个系统(可能还有别的推断方式)
有组合健按下或者cache分区有升级文件,则载入recovery.img进入升级系统。否则载入boot.img进入正常系统
此次记录3个要点:
1:boot.img的结构
2:怎样作成boot.img
3:uboot 怎样寻找boot.img
一:boot.img的结构例如以下:
+-----------------+
|boot header | 1 page
+-----------------+
|kernel | n pages
+-----------------+
|ramdisk | m pages
+-----------------+
|second stage | o pages
+-----------------+
当中:
boot header记录了boot.img的一些信息。
kernel即内核压缩文件zImage,
ramdisk即根文件系统。
second stage备用
boot header一共占了一页,默认2K。
前面的数据是struct boot_img_hdr,后面拿0补齐,凑齐2K。
结构体例如以下:
struct boot_img_hdr
{
unsigned char magic[BOOT_MAGIC_SIZE];
unsigned kernel_size; /*内核大小*/
unsigned kernel_addr; /*内核位置*/
unsigned ramdisk_size; /* root根文件系统大小*/
unsigned ramdisk_addr; /*根文件系统位置*/
unsigned second_size; /*扩展,备用*/
unsigned second_addr; /*扩展,备用*/
unsigned tags_addr; /*传參数用的物理内存地址,它作用是把bootloader中的參数传递给kernel*/
unsigned page_size; /*页大小,默认2K*/
unsigned unused[2]; /*扩展,备用*/
unsigned char name[BOOT_NAME_SIZE]; /*产品名*/
unsigned char cmdline[BOOT_ARGS_SIZE]/*启动參数*/;
unsigned id[8]; /*能够重用。如时间戳,校验位*/
};
二:boot.img的制作
mkbootimg命令制作boot.img,命令路径:~/out/host/linux-x86/bin/mkbootimg,代码路径:~/system/core/mkbooting
mkbootimg命令參数例如以下:
kernel : zImage的路径
ramdisk: ramdisk.img的路径
second :
备用文件路径cmdline :
内核參数board :
产品名base : base地址
pagesize :
页大小output:
输出路径当中kernel,ramdisk,output是必需要传入的參数,其他都是可选的
演示样例:
mkbootimg --kernel zImage --ramdisk ramdisk.img --base 0x10800000 --output boot.img
三:uboot载入 boot.img
uboot在载入boot.img时使用booti 命令,比如:booti mmc2 ,表示设备假如有几个SD卡,或者emmc时。
去第二个资源寻找,boot.img
uboot会去第二个资源设备上的第一个分区读取boot.img
首先读取boot.img中的boot
header,从中获取须要的信息
这样就确定了内核和根文件系统在 boot.img中的位置,剩下的就是载入到内存中了
当中内核载入到内存的位置是由base參数决定的,默认是0x10800000
android boot.img的更多相关文章
- In Depth : Android Boot Sequence / Process
In Depth : Android Boot Sequence / Process What happened when I press power on button in my Android ...
- android boot.img 结构
android 的boot.img 包括 boot header,kernel, ramdisk 首先来看看Makefile是如何产生我们的boot.img的: boot镜像不是普通意义上的文件系统, ...
- 另一种root方法,Android boot.img破解
一.破解原理 Android手机获得Root权限,其实就是让/system和/data分区获得读写的权限.这两个分区的权限配置,一般在根分区的init.rc文件中,修改这个文件可永久获得root权限. ...
- android boot.img unpack pack
每次编译boot.img都要花比较长的时间,有时候只是更改其中的配置文件. 如果能够将boot.img解压,更改之后再打包的话,就能节省时间. boot.img tools是别人写好的工具,能很好的解 ...
- Android/Linux boot time分析优化
如果需要优化boot time,就需要一个量化的工具来分析每个阶段的时间消耗.这种类型的优化特别适合使用基于timeline的图表,有着明显的时间顺序.要求不但能给出整个流程消耗的时间,还要能对流程进 ...
- Android Bootloader LittleKernel的两篇文章 【转】
转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 ...
- Run Android on Your Netbook or Desktop
Run Android on Your Netbook or Desktop Would you like to try out Google's Android OS on your netbook ...
- imx6 android 进入文件系统闪屏
imx6进入文件系统的时候都会闪屏,应该是framebuffer未初始化,就已经打开了背光.目前解决办法,在kenel阶段关闭背光,显示android的开机动画之后(此时framebuffer已经初始 ...
- Android Bootloader LittleKernel的两篇文章
Android 开发之 ---- bootloader (LK) LK是什么 LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程 ...
随机推荐
- vue 响应式原理
Vue 采用声明式编程替代过去的类 Jquery 的命令式编程,并且能够侦测数据的变化,更新视图.这使得我们可以只关注数据本身,而不用手动处理数据到视图的渲染,避免了繁琐的 DOM 操作,提高了开发效 ...
- tomcat相关实验
tomcat相关实验 1.实现LNT 同主机实现 1.安装并启动tomcat 1)OpenJDK的安装 yum install java-1.8.0-openjdk-devel.x86_64 确定JD ...
- 怎样在一个HTML中嵌入另一个HTML页面(iframe标签用法)
iframe 怎么 在一个网页中嵌入另一个网页呢,我们可以用html中的iframe标签搞定. iframe支持所有浏览器.下面来看语法: <iframe src="规定在 ifram ...
- Logstash&Redis&Elasticsearch&Kibana
[搭建] 一个很好的提示,强调版本的一致性 http://www.cnblogs.com/yjf512/p/4194012.html http://michael.bouvy.net/blog/en/ ...
- Hibernate从零开始的反向工程
首先 创建一个web项目 导入jar包 Bulid Path 先现在hibernate的插件 help-->eclipse marketplace-->输入tool 点instal ...
- [OIDC in Action] 1. 基于OIDC(OpenID Connect)的SSO
在[认证授权]系列博客中,分别对OAuth2和OIDC在理论概念方面进行了解释说明,其间虽然我有写过一个完整的示例(https://github.com/linianhui/oidc.example) ...
- 二维,多维数组排序array_multisort()函数的使用
对于数组的排序,很很多方法:随便百度了一下 sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组进行排序 ksort() - 根据键, ...
- LINQ学习系列-----2.3 迭代器带来的延迟查询
此篇博文承接上一篇博文: LINQ学习系列-----2.2 迭代器 一.第一次执行 废话不多说,上源码: 执行结果下图: 为什么会这样?其实原因很简单 fro ...
- PCL+VS2010环境配置
PCL+VS2010环境配置 我本是效率至上的Linux党,但是PCL在Ubuntu下配置了几次都失败,不得不选择Windows 1.下载 http://go.rritw.com/www.pointc ...
- Servlet&JSP-HTTP报文头获取及应用
完整代码请参考:https://github.com/devway9/java-exercise/tree/master/servlet-jsp 目录 1 HttpServletRequest获取报文 ...