ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:20.38KB ,
资源ID:12119752      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12119752.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ROM制作高级知识.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ROM制作高级知识.docx

1、ROM制作高级知识ROM制作高级知识【ROM制作高级知识一】如何解包编辑打包android系统的boot.img文件(1)首先声明这是网络转帖,LINUX环境大家可以用VMWARE来虚拟,也可以安装在硬盘上目录1、背景知识2、boot和recovery映像的文件结构3、对映像文件进行解包、编辑、打包的常规方法3.1、另一种解包、编辑、打包的方法4、将新的映像刷回到手机5、解包、编辑、打包为我们带来了什么6、本文讲的内容与使用update.zip刷机包不是一码事正文本帖隐藏的内容1、背景知识Android手机的文件系统有许多存储器组成,以下是在adb shell下面的输出:#cat/proc/m

2、tddev: size erasesize namemtd0: 00040000 00020000 miscmtd1: 00500000 00020000 recoverymtd2: 00280000 00020000 bootmtd3: 04380000 00020000 systemmtd4: 04380000 00020000 cachemtd5: 04ac0000 00020000 userdata注意,不同的手机在上述存储设备的顺序可能会各不相同!一定要检查您的手机,确定在以下的操作中选择正确的设备号(mtdX,这个X的序号一定要检查清楚)。在本向导中,我们主要描述对recovery

3、和boot的存储设备进行操作;system存储设备保存了android系统目录的所有数据(在系统启动后会挂载到“system/”目录);“userdata”存储设备将保存了android数据目录中的所有数据(在系统启动后会挂载到“data/”目录,里面是会有很多应用数据以及用户的preference之类的配置数据)。从上面的输出可以看出来,recovery和boot分区对应着/dev/mtd/mtd1和/dev/mtd/mtd2,在你您开始做任何修改之前一定要做两件事情,第一件事情,一定要先对这两个分区进行备份。可以使用如下命令进行备份:# cat/dev/mtd/mtd1/sdcard/re

4、covery.img# cat/dev/mtd/mtd2/sdcard/boot.img(注意,只有手机获取了ROOT权限以后才能够执行上述的备份命令)第二件事情,你您应该把你您最喜欢的update.zip刷机包放置到你您的sd卡的根目录上面。如此一来,即使你您在后续的操作中出了问题,也可以启动到recovery模式进行恢复。另外一个你您需要知道的重要文件是在android系统目录下的/system/recovery.img,此文件是mtd1存储设备的完全拷贝。这个文件在每次关机的时候,会自动地被写回到mtd1存储设备里面。这会意味着两个事情:(1)任何对/dev/mtd/mtd1中数据的直接

5、修改都会在下一次重启手机以后消失。(2)如果希望对/dev/mtd/mtd1进行修改,最简单的做法是用你您自己的recovery.img替换掉/system/recovery.img。当你您创建自己的update.zip刷机包的时候(特别是在做刷机包的适配的时候),如果你您忘记替换这个/system/recovery.img,这个recovery.img就会在关机的时候被烧写到mtd1里面去或许会变砖。一定要注意这一点!2、boot和recovery映像的文件结构boot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟

6、着是用gzip压缩过的内核,再后面是一个ramdisk内存盘,然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)。此类文件的定义可以从源代码android-src/system/core/mkbootimg找到一个叫做bootimg.h的文件。/* +-+ * | boot header | 1 page* +-+* | kernel | n pages * +-+* | ramdisk | m pages * +-+* | second stage | o pages* +-+* n = (kernel_size + page_size - 1) / pag

7、e_size* m = (ramdisk_size + page_size - 1) / page_size* o = (second_size + page_size - 1) / page_size* 0. all entities are page_size aligned in flash* 1. kernel and ramdisk are required (size != 0)* 2. second is optional (second_size = 0 - no second)* 3. load each element (kernel, ramdisk, second) a

8、t* the specified physical address (kernel_addr, etc)* 4. prepare tags at tag_addr. kernel_args is* appended to the kernel commandline in the tags.* 5. r0 = 0, r1 = MACHINE_TYPE, r2 = tags_addr* 6. if second_size != 0: jump to second_addr* else: jump to kernel_addr*/ramdisk映像是一个最基础的小型文件系统,它包括了初始化系统所需

9、要的全部核心文件,例如:初始化init进程以及init.rc(可以用于设置很多系统的参数)等文件。以下是一个典型的ramdisk中包含的文件列表:./init.trout.rc./default.prop./proc./dev./init.rc./init./sys./init.goldfish.rc./sbin./sbin/adbd./system./data【ROM制作高级知识一】如何解包编辑打包android系统的boot.img文件 (2)recovery映像包含了一些额外的文件,例如一个叫做recovery的二进制程序,以及一些对该程序支持性的资源图片文件(当你您按下home+pow

10、er组合键的时候就会运行这个recovery程序)。典型的文件列表如下:./res./res/images./res/images/progress_bar_empty_left_round.bmp./res/images/icon_firmware_install.bmp./res/images/indeterminate3.bmp./res/images/progress_bar_fill.bmp./res/images/progress_bar_left_round.bmp./res/images/icon_error.bmp./res/images/indeterminate1.bmp

11、./res/images/progress_bar_empty_right_round.bmp./res/images/icon_firmware_error.bmp./res/images/progress_bar_right_round.bmp./res/images/indeterminate4.bmp./res/images/indeterminate5.bmp./res/images/indeterminate6.bmp./res/images/progress_bar_empty.bmp./res/images/indeterminate2.bmp./res/images/icon

12、_unpacking.bmp./res/images/icon_installing.bmp./sbin/recovery3、对映像文件进行解包、编辑、打包的常规方法(注意,下面我给你您介绍的是手工命令行方式进行解包以及重新打包的方法,但是我仍然创建了两个perl脚本,这两个脚本可以让你您的解包和打包工作变得轻松许多。如果你您很擅长使用16进制编辑器的话,你您可以打开boot.img或者recovery.img,然后跳过开始的2K的头数据,然后寻找一大堆0的数据,在这一堆0的数据后面,紧跟着1F 8B这两个数字(1F 8B是gzip格式的文件的结束标记)。从此文件开始的地方(跳过2K的头),一

13、大堆0后面紧跟着到1F 8B这两个数字为止的全部数据(不包括1F 8B),就是gzip压缩过的linux内核。从1F 8B开始一直到文件的结尾包含的全部数据,就是ramdisk内存盘的数据。你您可以把把内核和ramdisk两个文件分别保存下来,在进行分别的修改和处理。我们可以通过un-cpio和un-gzip操作来读取ramdisk文件中的数据,可以使用如下的命令来实现这个目的,以下操作会生成一个目录,直接cd进去就可以看到ramdisk中的数据了:gunzip -c ./your-ramdisk-file | cpio -i此命令可以将ramdisk中的所有的文件解包到当前的工作目录下面,然

14、后就可以对它进行编辑了。当需要重新打包ramdisk的时候,就需要re-cpio然后re-gzip这些数据和目录,可以通过如下命令来实现:(cpio会把所有当前目录下面的文件都打包进去,因此,在进行此步骤之前,请把不需要的文件都清除掉。)find . | cpio -o -H newc | gzip ./newramdisk.cpio.gz最后一步就是通过 mkbootimg这个工具,把kernel和ramdisk打包在一起,生成一个boot.img:mkbootimg -cmdline no_console_suspend=1 console=null-kernel your-kernel-

15、file -ramdisk newramdisk.cpio.gz -o mynewimage.img这里的mkbootimg工具会在编译android的源代码的时候会在/android-src/out/host/linux-x86/bin目录下面自动生成。现在,如果不想背这些复杂的命令或者摆弄那个让人眩晕的16进制编辑器的话,可以尝试使用我编写的用于解包和打包的perl脚本了。希望这些脚本能够节约各位的键盘。本帖隐藏的内容3.1、另一种解包、编辑、打包的方法下载 split_bootimg.zip文件,在此zip文件中包含一个perl文件,split_bootimg.pl脚本,该脚本可以读取b

16、oot.img头(根据 Android源码中的bootimg.h读取)将kernel和ramdisk读取出来,此脚本也会输出内核命令行和板子名字。(注意,不要使用从/dev/mtd/mtd2直接拷贝出来的boot.img,此映像可能在读取过程遭到损坏。)下面是一个从TC4-RC28更新中提取出来的boot.img进行解包操作:% ./split_bootimg.pl boot.img Page size: 2048 (0x00000800)Kernel size: 1388548 (0x00153004)Ramdisk size: 141518 (0x000228ce)Second size:

17、 0 (0x00000000)Board name: Command line: no_console_suspend=1Writing boot.img-kernel . complete.Writing boot.img-ramdisk.gz . complete.解包ramdisk的命令如下:% mkdir ramdisk% cd ramdisk% gzip -dc ./boot.img-ramdisk.gz | cpio -i% cd .解码完毕后,就可以修改了(例如,在default.prop设置ro.secure=0等等)使用mkbootfs工具(mkbootfs工具是编译完毕An

18、droid源代码以后,就会在/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

19、.gz -o boot-new.img(注意:console=null的命令行选现是从TC4-RC30的boot.img引入的,用以去掉root shell)4、将新的映像刷回到手机可以将recovery.img拷贝到/system目录下面,然后重新启动手机,让手机自动为你您刷写到mtd里面(工作原理在上面已经提过了)。对于boot.img可以通过将其拷贝到sd卡的根目录,然后通过手机内的刷写工具将此映像写入到手机中。例如,使用 adb工具( Android SDK中的一个工具)将boot.img拷贝到手机的sd卡的根目录:adb push ./mynewimage.img /sdcard然后

20、通过adb shell登录手机(获取过 ROOT的)的shell交互模式,利用命令行进行交互:# cat /dev/zero /dev/mtd/mtd2write: No space left on device this is ok, you can ignore# flash_image boot /sdcard/mynewimage.img然后重启手机。如果手机能够正常启动,那么祝贺你您,你您的修改和替换已经成功了;如果不能够顺利启动,则需要重新启动进入recovery模式,并且使用update.zip来恢复。5、解包、编辑、打包为我们带来了什么可以修改手机开机启动时候的画面You ca

21、n display a splash screen of sorts upon boot. You just have to have a file named initlogo.rle in your root directory. The trick is that the root directory is overwritten each time you boot with the contents of your boot image (mtd2). There are instructions elsewhere on the forums for updating this i

22、mage.You can prove to yourself that this works by just copying logo.rle to initlogo.rle in your updated boot image and you will see the G1 screen twice.The hurdle Im running into is generating my own images. There is a program called url=to565/url that takes in an image and spits out the resulting i

23、mage in the appropriate format (give it the -r flag to generate an rle) edit, correct flag is -rle. However, everything I generate with this just looks like random colored bars when I boot up (and sometimes at the bottom of the screen I see part of whatever was left in the framebuffer when I shut do

24、wn). Supposedly to565 takes in a raw rgb888 file, and perhaps Im not generating those properly. I tried saving to raw image from gimp but so far everything is just different variations on colored bars.I may give up at this point, but I thought others might be interesting in picking up where I left off.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1