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

时间: 2024-11-05 18:45:03

android系统重新刷ROM简记的相关文章

android系统重新刷ROM简记(二)

在Android顶层源码目录使用make编译完成后,会生成这样一个目录: out/target/product/xxx,该目录内部有我们需要的boot.img,system.img等文件,boot.img使用kernel和out/target/product/xxx/root(广义的ramdisk)目录打包而成,也就是说boot.img是由kernel和ramdisk.img生成得到. 在android的编译框架中,把许多固定的.反复用到的目录路径定义为宏变量,而上述生成的目录 out/targ

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从名字能够知道里面存放的文件

Android系统源码下载与编译、刷机--Nexus6实测

前言 此博文记录一下Android从系统源码下载到刷机的全过程. (https://source.android.com/source/build-numbers.html 页面中列表信息找到自己设备对应的Android版本进行选择,博文中选择MOB301) 硬件:Google 亲儿子 Nexus6("shamu") Android系统:选择了Android官网上的MOB301对应的android-6.0.1_r42 驱动:自然就是MOB301_Nexus6对应的驱动了 编译系统:Ub

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

作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/51592930 手机的两种模式 : 在下面有详细的图片示例; -- Recovery 模式 : 音量键增加 + 电源键, 长按上述组合键, 看到 "MI" 的 LOGO 后即进入 Recovery 模式; -- Fastboot 模式 : 音量键减小 + 电源键, 长按上述组合键, 看到 "FASTBOOT" 后, 即 进入 FA

给Lumia 520/521/525/526/720刷Android系统

感谢XDA论坛上的开发者为Android for Lumia开发工具和ROM. 开篇的话就不多写了,这次我们直入主题. 注意事项: 一.Android for Lumia目前适用的机型有Lumia 520.Lumia 521.Lumia 525.Lumia 526和Lumia 720,其他的大多数WP机型理论上可以刷Android,不过Bootloader和ROM还没适配,什么时候可以适配,笔者也不知道. 二.笔者发现,在刷了Android系统的Lumia 520和Lumia 525上(其他机型

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

树莓派3安装Android TV系统图文教程 http://www.mz6.net/news/android/6866.html 树莓派3 Android TV系统怎样安装?树莓派3一个重要用途就是当智能机顶盒,那么安装Android系统肯定是大家的首选,但目前支持树莓派3的Android系统都是第三方移植的,各种问题不断,最重要的是没有硬件加速,好在google表示开始支持树莓派以后各种问题会慢慢得到解决.如果大家依然绝对安装Android TV系统,可以参考下面的教程! 树莓派3 Andro

分析:Android系统刷机后,第一次开机启动很慢的原因

在做Android内核开发的过程中,我们会发现,每次编译完系统源码,烧录到设备/手机中后,第一次启动都会很慢很慢,要好几分钟甚至十几分钟,为什么会出现这样的现象呢?系统刷机后第一次启动与后面再次启动有什么不同呢? 要解答这个问题,首先我们需要了解一下Android Dalvik虚拟机,以及Dalvik-cache. 由于嵌入式设备内存有限.CPU处理器不够强大.功耗敏感等原因,Google没有使用标准的JVM虚拟机,而是为Android单独开发了Dalvik虚拟机. Dalvik虚拟机与JVM虚

Android系统分区详解

Android 通常有以下分区: System 分区: 就是我们刷ROM的分区 Data    分区: 分区就是我们装APK的分区 Catch   分区: 是缓存分区 SDCard分区: 就是挂载的SD卡. 可以在adb中使用df 来查看分区情况: 1.跨分区不能用 MV命令来拷贝,但是可以用CP命令.如PWD,当前目录为:/data/local/tmp . 此目录下有个busybox和1.txt文件.则利用CP命令拷贝如下:./busybox cp1.txt /system. 2.Androi

15 Android系统安全(简要)

Android的用户和第三方软件,Android组件和数据安全 手机root后的问题:1.系统不稳定,2.病毒入侵,3.数据泄露 Root原理: Root分两类:1.临时root,2.永久root Root后的问题:1.系统不稳定,2.易中毒,3.隐私泄露 Android权限检查机制:没有权限而执行特定操作的软件会抛出SecurityException异常 所有权限位于/frameworks/base/data/etc/platform.xml 权限分两类: 直接读写设备的底层(low-leve