打印

[原创]关于I350ROM定制的基础教程

本主题由 star3000 于 2008-3-23 21:54 移动

[原创]关于I350ROM定制的基础教程

简单整理了一下教程,以原理为主,如果一开始给大家个模板,大家都不知道模板为什么是那样的就没意思了。
大家可以学着做一下。我也是边学边做的,期间也请教了不少前辈。教程中所用到的工具见13楼。

一、认识I350 ROM的构成

    从官方下载到的ROM,是由几个文件组成的:一个nb0文件,一个bif文件,一个bmp文件,一个custfile文件夹。我们重点关注的是nb0文件,下面谈到的ROM一般指的就是这个nb0文件。一般来说I350nb0可以用ImgfsTools配合BEPE(德国的一个学生高手)Package Tool分解成两个文件夹:OEMSYS文件夹。
    其中,OEM文件夹是厂商为自己机型定制的专用驱动或应用软件,不同机型一般情况是不通用的,但是要简体化I350的一些特色软件,就要修改里面的OEMApps文件夹了。汉化一般DLLEXE文件的方法和PC上的一样,可以用PE Explorer或者exescope等软件,修改里面的图片或者字符串。现在大家手头上如果已经有我之前做的几个简体版本,直接引用就行了。这里要感谢star3000最早提供了OEMApps的简体资源,后面的版本我很多都是直接引用的。
    接着介绍SYS文件夹。SYS是系统的核心部份,这里是微软的东西,每个机型基本上都是通用的,是移植ROM的关键之一,这部份成功了,ROM就移植成功一半了。如果大家定制过Windows XP的安装光盘,可以这样理解,SYS就是微软XP的操作系统本身,OEM文件夹就是你电脑的硬件驱动和集成的一些软件。
    如果大家在网上查询过有关定制ROM的教程,应该有接触过“模板”的概念。通常在这种定制模板中,还有一个ROM文件夹。里面一般有一个ROM文件和一个xip文件夹(实际上在这种模板当中,起作用的只有一个boot.rgu文件)。先说说这个ROM文件,它就是你要重新生成定制ROM时候的一个“种子”。这个种子肯定是要和你的机型相对应的,如果直接用了其他机型的ROM做种子,那么你的机子很有可能就要变砖头了。
    接着简单谈谈XIP。引用老猫的话,“XIP就是WINCE XIP KERNEL,是CE核心部分,XIP是为eXecute In Place的缩写,在微软的CE定义中,这块区域存放的是以非压缩格式存放,不需加载,由Bootloader直接调用执行。”虽然相对于整个ROM来说,xip只占了很小的比例,但是对于系统兼容性、稳定性来说,其作用不可忽视。而xip的移植,也是整个移植过程中最困难、最繁琐的。
    关于ROM里面的DSMRGU文件。OEMSYS目录下都有若干子目录,每个目录都是一个模块,每个模块都有一个同名的DSM文件和RGU文件,DSM文件记录了这个模块中有那些文件组成,并且部份包含有签名功能。RGU文件是注册表文件,这个文件在建立ROM时会自动导入注册表default.hvuser.hv文件中,我们要做的注册表修改工作都是在RGU文件修改中完成的。

[ 本帖最后由 acwan 于 2008-3-22 19:00 编辑 ]

TOP

二、I350ROM的分解
ImgfsTools
工具包可适用于很多不同机型的ROM。对于分解ROM,常用到的工具有:prepare_imgfs.exeviewimgfs.exe
我们把ROM放到imgfstools的文件夹中,在命令提示符下,执行
:
1.prepare_imgfs 350.nb0 –nosplit
如图,这里350.nb0是你要解开的ROM的名称




附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • star3000 智慧 +20 感谢分享 2008-3-23 21:53
  • star3000 部落币 +60 感谢分享 2008-3-23 21:53
  • star3000 +96 感谢分享 2008-3-23 21:53

TOP

在目录下会生成三个文件:imgfs_raw_data.binimgfs_removed_data.bindump_MemoryMap.txt。第一个imgfs_raw_data.bin是我们需要的。接着运行viewimgfs imgfs_raw_data.bin,如图:
附件: 您所在的用户组无法下载或查看附件

TOP

接着就是5-10分钟的等待,ROM正在解开,会生成一个dump的目录,里面的文件就是我们需要的,移植、汉化、修改,主要都在这里完成了。但是打开一看,里面的文件多得可以让你晕头转向的:

附件: 您所在的用户组无法下载或查看附件

TOP

上面提到过BEPEPackage Tool,下面我们就用它来整理一下这些看上去杂乱无章的文件,运行后选中DUMP文件夹,会看到类似的版本信息:

如果看不到这些版本信息,那说明里面的dsm、rgu已经被清理掉了,怎么办呢?
我们先关注sys,OEM部分先不管,找一套完整的rgu、dsm和.sof(见附件)复制到DUMP目录,再运行Package Tool,
这时候你看到的版本信息是不对的,但不妨碍我们获得SYS。
SYS目录外的先删除吧。OEM部分找一个我前期做的ROM,可以分出OEM的,反正这部分通用。

[ 本帖最后由 acwan 于 2008-7-11 23:12 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

这个是官方E8ROM解开后的。可以看到SYSNETOEM等版本号,语言版本,DPI等。至于最后一个missingdsm可不必理会。接着选择菜单中的Tools>buildpackages,接着DUMP下就会归类成OEMSYS文件夹,如图:

附件: 您所在的用户组无法下载或查看附件

TOP

如果只是移植ROM,不考虑集成其他软件,OEM文件夹我们可以暂时不管,重点先看SYS文件夹:

这里面的都是一个个系统组件的模块,需要精简的,可以在这里把自己不需要的模块咔嚓掉,但如果搞不清楚这些模块的作用,那还是别乱动的好。分解的部分就这里了。
附件: 您所在的用户组无法下载或查看附件

TOP

三、SYS的移植
其实这部分没什么特别的。如果你需要移植一个19199ROM,那你可以多解开几个19199ROM,其他机型的解ROM方法都会有所差异,套用一句老话“百度一下,你就知道”。这里要介绍一个很好用的软件:Beyond Compare 2。主要界面如下:


有什么不同的可以一目了然了。只需要把新版本对应的文件复制到你需要移植的sys文件夹内就OK了。至于不同语言版本的移植,需要注意语言包的问题。这方面不在这里讨论,大家有兴趣的自己百度一下。(百度要给我点广告费了,哈)和显示出来的版本号相关的各个文件夹下的dsm文件,还有packages.cifpackages.sof这两个文件。但是现在的rom好多是加密过,或者用all_package_to_one处理过的,只有一个dsm,这时候就没办法用上述的方法分成标准的OEM、SYS文件夹了。我们只能对比标准的模板,用BC2去对比替换更新,这样一来工作量就比较大。另外一个方法,就是从其他标准的模板下,把对应的dsm复制一套过去,当然,还有packages.sof,再运行PKGTool,这样一来也能减少点工作量。上面介绍PKGTools的地方有一套VGA的dsm、rgu和sof。

网上有一个sys移植的屏幕录像,大家可以去看看。基本思路就是保留自己的.ROM .VM 和metadata,其他用新核心的文件来对应替换。

[ 本帖最后由 acwan 于 2008-7-11 23:18 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

四、OEM软件集成
   
这是大家比较关心的事情,集成自己惯用的软件,不用每次硬启都要重装软件,何乐而不为。最简单的办法,当然就是拿来主义了。Xbeta上有好多高手分享的OEM包,大家可以选择性地拿来用。如果要自己做OEM包也是可以的。要找这方面的资料应该还是很容易的。把需要集成的OEM包,放到OEM文件夹内。
   
这时候,还需要建立一个和OEMSYS同级的ROM文件夹,里面放一个作为种子的nb0文件(原理前面简单说过了),同时建立一个xip文件夹,在这个文件夹里面放一个boot.rgu文件(后面在讲述xip提取和移植的时候会谈到这个文件的来源)

OEM
SYS的同级目录下,放上BuildOS.exe、pkgcommon.dll和Tools目录,执行后,会扫描你的OEM包,把需要的勾上,但不要集成太多,ROM的空间也是有限的,不然后面封包的时候会出错,界面如下:

[ 本帖最后由 acwan 于 2008-4-6 20:57 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

选好以后,点左上角的绿色小箭头,直至左下角显示Done,就算集成好了。过程中如果遇到出错,提示“文件已存在”,那说明OEM包里面和SYS里面的文件有重复,删除其中一个就可以。完成done后,BuildOS就可以关闭了。
由于ROM里面的模块我们修改过,或者是从其他ROM里面移植过来的,地址会变得很乱,如果就这样直接生成ROM,很容易会造成地址冲突不能使用。这时候,我们需要用另外一个工具――G’reloc。作用就是重排这些模块的地址。用法如下:BuildOS运行后,会生成一个temp文件夹,在里面会有另外一个dump文件夹,改名为sys,在这个文件夹的同级目录中放上G’reloc,运行后,里面的数据都是自动提取的,点一下”Doit!”,等完成后关闭程序,把sys改回DUMP
附件: 您所在的用户组无法下载或查看附件

TOP

五、ROM的重新封装
把种子ROM、之前dump出来的imgfs_raw_data.binBuildImgfs.exemake_imgfs.exececompr_nt.dll,一起放到上述处理过的重新生成的DUMP文件夹同级目录下。在命令提示符下输入:buildimgfs
这个过程和dump的过程差不多,需要等上几分钟,如果你上面集成的OEM包不太多,不至于把ROM的空间撑爆的话,那这个过程应该是很顺利的。完了以后,再执行命令,把ROM封包到我们的“种子”里,命令提示符下输入:
make_imgfs 350.nb0 –nosplit
350.nb0
就是你的种子ROM文件名,如图:


这时候,生成的ROM就可以拿来刷机测试了。

以上过程做成批处理文件,就是一套350的模板了。

[ 本帖最后由 acwan 于 2008-7-11 23:19 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

六、关于XIP的移植:
我看过最详细的教程应该是这篇了:
http://www.diypda.com/viewthread.php?tid=4305&extra=page%3D1
大家自己消化一下吧。上面用到的boot.rgu就是从xip中提取出来的。
具体到I350XIP提取,简化一下,直接用附件350_dumpxip.rar,解压后,把nb0改名350.nb0后放一起,直接运行批处理就可以生成xip.bin了。

七、其他:
上面的过程,只要用批处理文件适当处理,就可以做成I350的定制模板了。其他涉及怎么修改注册表,怎么修改文件路径的,大家也可以参考这篇文章:
http://www.diypda.com/viewthread.php?tid=2905&extra=page%3D1
写这篇文章不是单单为了让大家照葫芦画瓢,希望大家明白了这些基本原理以后,可以做出更适合自己使用的ROM

八、附上述用到的命令的解释:
prepare_imgfs.exe



Splits nk.nba into imgfs_raw_data.bin and imgfs_removed_data.bin.

imgfs_raw_data.bin - contains raw IMGFS data
imgfs_removed_data.bin - contains extra data (something like FAT table).
Usage:

prepare_imgfs.exe nk.nba [-nosplit] [-mpx200] [-acer]

Use "-nosplit" for HTC Wizard and Universal ROMs that don't contain extra
blocks of data. In this case imgfs_removed_data.bin would be empty.

make_imgfs.exe

Reverse of prepare_imgfs. Combines imgfs_raw_data.bin and imgfs_removed_data.bin

into nk.nba file. Use -nosplit if it was specified for prepare_imgfs.exe.
Usage:

make_imgfs.exe nk.nba [-nosplit]

The nk.nba file would be used as a template, its contents would be overwritten.

viewimgfs.exe

Dumps the contents of imgfs_raw_data.bin to "dump" subdirectory. Files are

dumped as is, modules as directories. File time and attributes are preserved.
If RecMod.exe is present in the current directory, all modules are
reconstructed as working DLLs/EXEs and placed in the corresponding subdirectory.
Tool creates dump_MemoryMap.txt with address ranges occupied by modules.
Usage:

viewimgfs.exe imgfs_raw_data.bin


[ 本帖最后由 acwan 于 2008-6-11 08:51 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

需要用到的工具

[ 本帖最后由 acwan 于 2008-4-6 20:44 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

支持啊,沙发啊!谢谢

TOP

支持^^"~大大一定了不少時間心機去做的~~

TOP