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作为开源系统 ...
随机推荐
- 洛谷 P1462 通往奥格瑞玛的道路 二分 最短路
#include<cstdio> #include<queue> #include<cstring> #include<algorithm> using ...
- 正则表达式中的/i
i = insensitive means case-insensitive 表示大小写不敏感
- 【jQuery03】简单的选项卡切换
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- fwupdate-efi 与 grub2-common 冲突
在CentOS-7Minimal系统中使用命令如下命令yum groupinstall -y "GNOME Desktop"安装 图形界面时提示:fwupdate-efi 与 gr ...
- 【BZOJ 1192】[HNOI2006]鬼谷子的钱袋
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 设k为最大的正整数满足 \(2^0+2^1+...+2^k<=m\) 如果\(m>2^0+2^1+...+2^k\) 那 ...
- Linux系统信息查看命令大全[转]
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinf ...
- ajax动态添加复选框
function getLands() { $.ajax({ url:"httpserver.do?doPost&userQygs="+$("#userQygs& ...
- Qt之字典划词
简述 相信大家都用过词典吧!因为英语不太好...O(∩_∩)O~,所以经常进行划词翻译! 简述 实现 效果 源码 更多参考 实现 原理:鼠标移至某单词之上,获取鼠标位置,然后在对应位置进行取词,翻译! ...
- (六)storm-kafka源代码走读之PartitionManager
PartitionManager算是storm-kafka的核心类了,如今開始简单分析一下.还是先声明一下,metric部分这里不做分析. PartitionManager主要负责的是消息的发送.容错 ...
- glm编译错误问题解决 formal parameter with __declspec(align('16')) won't be aligned
參考:http://stackoverflow.com/questions/25300116/directxxmmatrix-error-c2719-declspecalign16-wont-be-a ...