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作为开源系统 ...
随机推荐
- mysql 1067终极解决办法 亲测好使
进入mysql data 目录 删除 ib_logfile0 ib_logfile1 ibdata1 这三个文件 重启mysql
- k8s日志收集配置
容器日志样例 172.101.32.1 - - [03/Jun/2019:17:14:10 +0800] "POST /ajaxVideoQueues!queryAllUser.action ...
- 紫书 习题 11-17 UVa 1670 (图论构造)
一开始要符合题目条件, 那么肯定没有任何一个点是孤立的, 也就是说没有点的度数是1 所以我就想让度数是1的叶子节点相互连起来.然后WA 然后看这哥们的博客 https://blog.csdn.net/ ...
- 紫书 习题8-6 UVa 1611 (构造法)
这道题和例题8-1相当的像. 例题8-1https://blog.csdn.net/qq_34416123/article/details/80112017 一开始我还以为用归并的思想, 用交换把局部 ...
- dva基本用法
1. npm install -g dva-cli 全局安装dva.2. dva new myApp --demo 创建dva项目.3. cd myApp npm start 启动项目.4. 定义 m ...
- nested exception is java.lang.NoClassDefFoundError: org/codehaus/jettison/json/JSONObject异常的解决办法
解决办法:你可以尝试添加一个jar包,因为我加入了一个jar包后错误问题成功解决. 将所需要的jettison-1.2.jar包复制到lib文件夹里面,重启项目,问题搞定.
- 为什么button在设置标题时要用一个方法,而不像lable一样直接用一个属性
为什么button在设置标题时要用一个方法.而不像lable一样直接用一个属性 原因是有时我们对 button做一次点击,须要改变button的标题.仅仅实用方法才干做到,而label是标签 ...
- backtrack5实现局域网DNS欺骗
前言:不得不说Linux下的神器挺多,越来越喜欢Linux了.. . 測试环境 linux backtrack 5 windows xp 先在Linux下开 ...
- Vue小技巧,如何导入普通JS文件
最近在开发一个展示3D模型的WEB程序,在工程中使用了VUE和ThreeJS库.Three.js本身是支持CommonJS的,但我们还用到了OBJLoader模块,此模块不支持CommonJS,改成C ...
- [NOI2002] Robot 解题报告(数论+DP)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1408 Description 3030年,Macsy正在火星部署一批机器人. 第1秒,他 ...