当须要对android系统进行大刀阔斧的改造的时候,应该清晰的了解android各个image的组成才干做到庖丁解牛。

首先在android烧写过程中须要烧写的文件主要包含uboot.bin\boot.img\system.img\userdata.img\recovery.img等文件。

小米的刷机文件主要包含data\META-INF\recovery\system\blob\boot.img\file_contexts文件。

Data目录下仅仅有一个目录miui从名字能够知道里面存放的文件主要是小米的用户界面文件。

system/app  这个里面主要存放的是常规下载的应用程序,能够看到都是以APK格式结尾的文件。在这个目录下的程序为系统默认的组件,自己安装的软件将不会出如今这里,而是\data\目录中。

system/bin  这个文件夹下的文件都是系统的本地程序,从bin文件夹名称能够看出是binary二进制的程序,里面主要是Linux系统自带的组件(命令)

system/etc  从目录名称来看保存的都是系统的配置文件,比方APN接入点设置等核心配置。

system/fonts  字体目录。除了标准字体和粗体、斜体外能够看到文件体积最大的可能是中文字库。或一些unicode字库当中DroidSansFallback.ttf文件大小

system/framework  framework主要是一些核心的文件。从后缀名为jar能够看出是是系统平台框架。

system/lib  lib文件夹中存放的主要是系统底层库,一些so文件,如平台执行时库

system/media/audio  铃声音乐目录,除了常规的铃声外另一些系统提示事件音。

system/usr  用户目录,包括共享、键盘布局、时间区域文件等

system/priv-app 能够存放自己编写的一些app文件

system/vendor 存放产品相关文件

bootimg文件是由Image和ramdisk.img文件生成。在/build/core/Makefile文件里有相关的描写叙述。# the boot image, which is a collection of other images.

INTERNAL_BOOTIMAGE_ARGS := \

$(addprefix --second ,$(INSTALLED_2NDBOOTLOADER_TARGET)) \

--kernel $(INSTALLED_KERNEL_TARGET) \

--ramdisk $(INSTALLED_RAMDISK_TARGET)

在system/core/mkbootimg/bootimg.h中有详细打包的描写叙述。

** +-----------------+

** | boot header     | 1 page

** +-----------------+

** | kernel          | n pages

** +-----------------+

** | ramdisk         | m pages

** +-----------------+

** | second stage    | o pages

** +-----------------+

从上面可以清晰的看出boot.img文件的构成主要是将kernel以及ramdisk.img文件打包而且加入文件头完毕。

假设须要改动小米官方给出的文件的情况下,能够使用

#./split_bootimg.pl boot.img

Page size: 2048 (0x00000800)

Kernel size: 6695672 (0x00662af8)

Ramdisk size: 1276106 (0x001378ca)

Second size: 0 (0x00000000)

Board name:

Command line:

Writing boot.img-kernel ... complete.

Writing boot.img-ramdisk.gz ... Complete.

解包ramdisk文件。首先要创建一个目录用于存放解压后的文件,进入目录之后,运行以下命令:

#gzip -dc ../boot.img-ramdisk.gz | cpio -i

对文件作出改动之后,须要又一次做成boot.img文件。

使用mkbootfs工具(mkbootfs工具是编译完成Android源码以后。就会在~/android-src/out/host/linux-x86/bin自己主动生成)来又一次创建ramdisk。能够使用例如以下命令来操作:

#mkbootfs ./ramdisk | gzip > ramdisk-new.gz

使用mkbootimg来又一次创建boot.img,mkbootimg也能够在~/android-src/out/host/linux-x86/bin文件夹中能够找到:

#mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot-new.img

android系统又一次刷ROM简记(二)

android系统又一次刷ROM简记(一)的更多相关文章

  1. Android系统更新防互刷功能实现与分析【转】

    本文转载自:https://blog.csdn.net/huangyabin001/article/details/44465145 版权声明:本文为博主原创文章,未经博主允许不得转载.    htt ...

  2. Android系统开发 编译系统签名的APP

    前言 一般情况下,我们使用的签名都是自己生成的Java签名来编译APP. 但是,如果需要开发一些特定设备的APP(对权限有更高的要求,需求一些系统基本的权限,比如让APP可以控制设备的休眠),那就需要 ...

  3. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  4. 【树莓派】树莓派刷Android系统

    树莓派3安装Android TV系统图文教程 http://www.mz6.net/news/android/6866.html 树莓派3 Android TV系统怎样安装?树莓派3一个重要用途就是当 ...

  5. 【树莓派】树莓派上刷android系统

    这位前辈之前做了基于android2.3版本刷入树莓派的事情,http://blog.csdn.net/lichwei1983/article/details/44082669 1.android 镜 ...

  6. Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程

    博客链接:http://blog.csdn.net/qq1084283172/article/details/52334452 折腾Android逆向的时候,经常需要给Nexus 5刷机.最近给Nex ...

  7. 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM

    一. 修改化定制Android4.0系统 Android系统启动时,先加载Linux内核,在Linux的framebuffer驱动里可以定制开 机界面,Linux内核启动成功后,挂载根文件系统,启动A ...

  8. Android系统分区理解及分区目录细解

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  9. Android系统裁剪:手把手教你如何进行系统裁剪

    前言:android系统裁剪优化一直是各个厂商定制产品的关键步骤,包括浅层次的去除不必要的apk(android apk裁剪定制 )和深层次的裁剪整个编译系统和框架层.   android作为开源系统 ...

随机推荐

  1. luogu P4018 Roy&October之取石子(博弈论)

    题意 题解 如果n是6的倍数,先手必败,否则先手必胜. 因为6*x一定不是pk 所以取得话会变成6*y+a的形式a=1,2,3,4,5: 然后a一定为质数.我们把a取完就又成为了6*x的形式. 又因为 ...

  2. [洛谷P2183]巧克力

    题目大意:有n块巧克力,每块巧克力有一个大小.巧克力可以切成若干份.现在要你切成大小相等的m块,且尽可能大.求这个大小. 解题思路:我们二分巧克力切成的大小,然后计算能切成多少块,判断即可.由于最大的 ...

  3. Oralce中的package和package body

    1.Oracle Package的作用: 可以简化应用设计.提高应用性能.实现信息隐藏.子程序重载 2.ORACLE中的function   .package.package   bodies.pro ...

  4. HNU 13101 The Triangle Division of the Convex Polygon 组合数的因式分解求法

    题意: 求第n-2个Catalan数 模上 m. 思路: Catalan数公式: Catalan[n] = C(n, 2n)/(n+1) = (2n)!/[(n+1)!n!] 因为m是在输入中给的,所 ...

  5. Docker学习总结(9)——Docker常用命令

    容器生命周期管理 - docker [run|start|stop|restart|kill|rm|pause|unpause] 容器操作运维 - docker [ps|inspect|top|att ...

  6. xcode 及 MAC 经常使用快捷键

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 黑苹果键盘 ...

  7. c#程序中使用"like“查询access数据库查询为空的问题

    今天,在开发的过程中发现了一个特别奇怪的问题:access中like查询时候.在Access数据库中运行,发现能够查询出结果.这是在数据库上运行.select * from KPProj where ...

  8. 关于Android真机调測Profiler

    u3d中的Profile也是能够直接在链接安卓设备执行游戏下查看的,导出真机链接U3D的Profile看数据,这样能更好的測试详细原因. 大概看了下官方的做法.看了几张帖子顺带把做法记录下来. 參考: ...

  9. 本地代码中使用Java对象

    通过使用合适的JNI函数,你可以创建Java对象,get.set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函数.JNI通过ID识别域和方 ...

  10. poj--2083--Fractal(dfs)

    Fractal Time Limit: 1000MS   Memory Limit: 30000KB   64bit IO Format: %I64d & %I64u Submit Statu ...