android系统又一次刷ROM简记(一)
当须要对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系统更新防互刷功能实现与分析【转】
本文转载自:https://blog.csdn.net/huangyabin001/article/details/44465145 版权声明:本文为博主原创文章,未经博主允许不得转载. htt ...
- Android系统开发 编译系统签名的APP
前言 一般情况下,我们使用的签名都是自己生成的Java签名来编译APP. 但是,如果需要开发一些特定设备的APP(对权限有更高的要求,需求一些系统基本的权限,比如让APP可以控制设备的休眠),那就需要 ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- 【树莓派】树莓派刷Android系统
树莓派3安装Android TV系统图文教程 http://www.mz6.net/news/android/6866.html 树莓派3 Android TV系统怎样安装?树莓派3一个重要用途就是当 ...
- 【树莓派】树莓派上刷android系统
这位前辈之前做了基于android2.3版本刷入树莓派的事情,http://blog.csdn.net/lichwei1983/article/details/44082669 1.android 镜 ...
- Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程
博客链接:http://blog.csdn.net/qq1084283172/article/details/52334452 折腾Android逆向的时候,经常需要给Nexus 5刷机.最近给Nex ...
- 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
一. 修改化定制Android4.0系统 Android系统启动时,先加载Linux内核,在Linux的framebuffer驱动里可以定制开 机界面,Linux内核启动成功后,挂载根文件系统,启动A ...
- Android系统分区理解及分区目录细解
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Android系统裁剪:手把手教你如何进行系统裁剪
前言:android系统裁剪优化一直是各个厂商定制产品的关键步骤,包括浅层次的去除不必要的apk(android apk裁剪定制 )和深层次的裁剪整个编译系统和框架层. android作为开源系统 ...
随机推荐
- 6、DRN-----深度强化学习在新闻推荐上的应用
1.摘要: 提出了一种新的深度强化学习框架的新闻推荐.由于新闻特征和用户喜好的动态特性,在线个性化新闻推荐是一个极具挑战性的问题. 虽然已经提出了一些在线推荐模型来解决新闻推荐的动态特性,但是这些方法 ...
- HDU 4945 2048 DP 组合
思路: 这个题写了一个背包的解法,超时了.搜了下题解才发现我根本不会做. 思路参见这个: 其实我们可以这样来考虑,求补集,用全集减掉不能组成2048的集合就是答案了. 因为只要达到2048就可以了,所 ...
- 具体解释C++引用——带你走进引用的世界
一.介绍引用 首先说引用是什么,大家能够记住,引用就是一个别名,比方小王有个绰号叫小狗.他的妈妈喊小狗回家吃饭.那就是在喊小王回家吃饭. 接下来我们用两行代码来声明一个引用(就拿小王和小狗来说吧 ...
- 使用client对象模型读取SharePoint列表数据
使用client对象模型读取SharePoint列表数据 client对象模型提供了强有力的方式.从远程client应用程序管理列表. 1. 管理员身份打开VS,新建项目Windows窗口应用程序,命 ...
- 38.angular的scope作用域
转自:https://www.cnblogs.com/best/tag/Angular/ 1. Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带. S ...
- springboot shiro配置
导入相关包(这里配合使用Ehcache缓存) <dependency> <groupId>org.apache.shiro</groupId> <artifa ...
- POJ 4007 Flood-it!
题目:http://poj.org/problem?id=4007 思路: (lyd学长的思路) IDA*算法,首先迭代加深限制搜索深度. 可以发现如果当前矩阵中除了左上角的连通块之外,共有M种颜色, ...
- svn回到某个历史版本的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 一.在选中的文件上弹出svn的右键菜单,单击"Updateto revision"菜单项,如下图: ...
- Android 得到根Fragment
public Fragment getRootFragment() { PlayFragment xFragment = null; for (Fragment fragment : getFragm ...
- hdu 3292 No more tricks, Mr Nanguo
No more tricks, Mr Nanguo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Jav ...