OSBuilder制作rom教程.docx
《OSBuilder制作rom教程.docx》由会员分享,可在线阅读,更多相关《OSBuilder制作rom教程.docx(17页珍藏版)》请在冰豆网上搜索。
OSBuilder制作rom教程
OSBuilder制作rom教程
自从我摸索学会用OSBuilder做rom以来,就不想用其他工具了,这个工具真的很方便,基本上你做rom要修改的东西都可以在里面实现,而且速度快,稳定。
看了它生成的xip的map,排列好整齐。
这么好的工具,可是现在用的人还不多,教程也没见有,所以我就抛砖引玉做个教程出来,由于是自己边摸索边写,可能有些地方说得不好,就请大家多多指正了。
整个教程预计分为六部分的内容:
1、OSBuilder的模板文件夹结构
2、OEM和SYS里面的模块处理
3、合成ROM模板的创建
4、Xip的移植
5、Imgfs和rom的合成
6、对rom进行的最后处理
OSBuilder的优点:
1、基本上所有做rom的工具都整合在里面,不用你到处找工具了。
2、功能多,移植xip,修改pp,移除时间锁,imgfs压缩可以随意采用xpr或者lzx格式来压缩。
3、方便做多个核心的rom,把多个核心的sys和xip数据放到不同文件夹下面,合成的时候可以随意选择任意一个核心来合成,oem等文件共用。
4、做rom的时候不用花费很大的内存,就是采用lzx压缩,所占用的内存也是一两百兆而已,在比较旧的机子上面做rom也没问题。
OSBuilder的模板文件夹结构:
其实和MyBuildOS的结构差不多的,只是要移植xip的话,就加多个Donor文件夹,如下:
/ROM
XIP
boot.rgu
os.nb.payload
xip.bin
/OEM
OEMDrivers
OEMAPPS
OEM_Lang_0804
.
.
.
/SYS
.ROM
.VM
AdobeFlash
AdobeFlash_LANG_0804
AdobeFlashCodecs
AUTOUPDATE
.
.
.
/Donor
MSXIPKernel
MSXIPKernelLTK
1、Donor文件夹
用来存放你要移植的新核心xip文件,可以是一个xip.bin文件,也可以是MSXIPKernel文件夹形式,用于移植xip。
2、OEM文件夹
用于存放你的oem文件
3、ROM文件夹
和MyBuildOS的一样,存放有xip文件夹,以及xip文件夹里面的boot.rgu文件。
还有你自己rom的os.nb.payload文件也放这里(不一定是这个文件名,扩展名是nb0或者payload即可),就是OSBuilder生成rom的时候要用到它做模板。
生成的tpl模板也要放这里才能自动打开应用。
移植xip也要从里面提取个xip来移植,或者放个你机子的xip在这里用于移植xip。
4、SYS文件夹
这个不用说了吧,就是放你想要移植的sys在里面。
除了这四个文件夹,其他的就自己随意建来用啦,比如说我自己建立一个tools文件夹用于存放其它一些工具,建立一个Flash文件夹存放生成的rom等等。
5、如果你要搞多个核心的话,那么可以这样做:
(1)、每个核心xip可以在Donor下面再建立以核心数字为名称的文件夹,在这个核心文件夹里面再放置相应xip.bin或者MSXIPKernel文件夹,如:
\DONOR\21057\
\DONOR\23128\
.
(1)、SYS文件夹下面以SYS_XXXXX的形式建立文件夹(XXXXX为核心名),把相应核心SYS的内容放到里面去。
如:
\SYS\SYS_21057\
\SYS\SYS_23128\
.
比如我做了四个核心的模板,那么打开OSBuilder的时候就可以选择这四个不同的核心来做ROM了,如图:
还有一个Configurations文件夹,是保存默认配置的时候自动生成的,所以不用管它啦。
OEM和SYS里面的模块处理。
建立好文件夹的结构后,把所需的文件都放好处理好(比如说sys文件夹里面删除微软的老三样输入法,修改注册表,把Custsat.dll从SQM移到Redist文件夹等),就可以打开OSBuilder,在文件菜单里面选择“打开文件夹”,OSBuilder就会自动搜索这个文件夹,然后在左边显示出oem文件夹里面的模块,右边显示在你这个文件夹里面找到模板的信息,如下图:
左边的窗口里面显示的oem模块是在OEM文件夹里面的并且里面有option.xml这个文件的oem包,如果在OEM文件夹里面,你放有没有option.xml的文件夹,那么这个文件夹默认就是整合进它所生成的imgfs里面,并且最终会整合到rom里。
如果你想对这些没有option.xml文件的oem模块也进行选择,那么你就必须单击工具栏第五个图标——“显示/隐藏其它组件”。
单击这个图标后,会在中间增加一个窗口,显示OEM和SYS文件夹里面没有option.xml的组件,如下图:
在左边的窗口里面选择相应的分组,然后在中间窗口里面相应的模块上面按鼠标右键,会出现一个右键菜单,第一个菜单选项就是将所点的模块移动到左边你选择的分组里面。
点选它以后,这个模块就显示在左边的窗口里面,做rom的话就可以选取整不整合这个模块了。
SYS文件夹里面的内容也是这样处理,在左边的窗口里面新建一个根分组SYS(貌似不知道汉化出错还是啥的问题,直接点击工具栏第三个按钮来创建根分组的话,这个根分组不能创建新的分组,所以推荐大家在其他分组下面创建一个新分组后,再把这个新分组移动到根目录就OK了)。
然后在SYS分组下创建新的模块分组,可以参考MyBuildOS里面的分组名称来建立,然后把中间窗口的模块移动到左边窗口相应的分组里面,如下图:
这个步骤是比较麻烦,不过你做了一次后,把这个配置进行保存,以后做的话就直接可以载入这个配置就行了。
不用每次都做的,最多某些核心有少数差异的话,可以调整个别东西就OK啦。
保存配置和载入配置的命令就在工具栏第一个按钮里面。
另外如果你做多个核心的话,可以选择保存为这个核心的默认配置,以后每次打开这个核心,都会自动载入这个配置,非常方便。
通过这样对OEM和SYS文件夹里面的模块进行处理,那么我们合成的时候就可以在左边窗口里面选择你要的模块进行合成了,就和MyBuildOS里面进行的选择一样。
合成ROM模板的创建
这个模板是指你合成ROM的时候,里面的XIP啊imgfs分区啊是什么样格式的,那么OSBuilder在合成Imgfs.bin和Rom的时候就根据这个模板来做。
各种机型的rom的格式各不相同,那么OSBuilder是如何合成各种机型的ROM的呢?
其实呢,OSBuilder只是合成一个标准的rom,你还要自己对这个rom进行处理才能形成真正能刷到你手机上的ROM。
这个标准的ROM是啥样子的呢?
我们在分解你自己的手机ROM的时候,一般都要先把你手机特殊的ROM格式转换成可以直接提取xip和imgfs的格式,很多机型用osnbtool–sp处理一下,有的机型要用两次osnbtool–sp才能形成一个直接用osnbtool–d来提取xip和imgfs的rom,这个rom一般就是标准的rom了,你把这个rom放到OSBuilder模板文件夹的ROM\目录下,在OSBuilder打开这个文件夹的时候,就会自动找到这个rom,并且认出这个模板的结构,把它显示在OSBuilder的右边窗口里面,如下图:
我在ROM文件夹下面放了个OS.nb.payload文件。
但是这个文件是我分解手机rom的时候得到的,我在合成rom的时候我想做一些修改咋办?
比如说我想把原来imgfs的压缩格式由XPR改为LZX方式,或者改一下PP值。
那么这就可以以原来这个模板为基础重新创建一个模板,这个创建模板的工具就在OSBuilder里面内置有的,点击工具栏的第七个图标,里面就有一大堆OSBuilder自带的工具了。
如下图:
选择“创建模板”后,会出来一个TPLBuilder工具窗口,点击它的“文件”菜单,选择“打开”,然后选取你放在ROM文件夹里面的那个ROM模板。
就如下图:
里面的功能如下:
1、可以对UL分区进行处理,有的机子可以把这个分区去掉或者改为零长度,那么就可以多给rom空出几M的空间。
貌似以前就在xbeta论坛里面看到个一个手工处理UL分区的教程帖子,那个步骤烦啊,当初我还兴致勃勃搞了一下我的M9手机呢,谁知道我的M9不能去掉UL分区的,白搞了,现在就简单啦,点一下鼠标就OK。
2、可以选择xip文件,也就是你合成的时候,用你已经搞好的xip来合成。
不过我一般都是用OSBuilder来自动移植xip的。
3、IMGFS的压缩方式,你可以选择用XPR或者LZX压缩。
说道LZX压缩,大家可能都试过,可是不成功,为啥呢,最大的原因就是原来我们用imgfsfromdump.exe这个工具在用lzx压缩imgfs的时候要占很大很大的内存,一般都要2G以上,而32位程序一般又只能处理2g内存,所以呢,没压缩完就崩溃了,现在用OSBuilder来压缩lzx的imgfs,我看过了,一般就是占一百多M的内存,再也不用担心压缩不成功了。
4、设置PP值,它里面有个“设置PP=0xFFFFFFFF”的选项,选择它的话,有人说就是不要PP,相当于PP=0的情况。
不选择它,那么就可以随意设置PP等于多少M了,是不是很方便啊。
:
)
如果创建了TPL模板,那么以后打开的时候会自动采用这个TPL模板而不是原来那个标准的rom了,不过我发现个问题,如果创建了多个TPL模板的话,OSBuilder只会自动打开按照文件名排序最前面的那个TPL模板,你要选择它打开哪个模板,只能修改这个模板的文件名使它排列在前面才可以。
Xip的移植
Xip的移植要先准备好你机子的xip.bin放到ROM文件夹里面,不过一般都不用,因为OSBuilder可以直接从你准备的TPL模板里面提取xip,要移植的新核心xip放到Donor文件夹的版本数字文件夹下面,这个在前面已经讲得很清楚了,不清楚的话再复习一下前面的内容。
点击“设置”菜单,在设置窗口里面有个“xip移植”选项卡。
如下图:
在这个xip移植选项卡里面,我们可以选择合成时xip是如何来的。
可以是移植得到的新xip,也可以是对原来已经存在的xip进行重建。
1、移植:
如果我们选择移植xip的话,那么就必须选择自己手机的OEMXIP和你要移植的新的xip(OSBuilder称这个XIP为MSXIP)是从哪里获得的。
(1)、OEMXIP
有三个选项,一般来说,我都是选择第一个:
从模板提取xip,它就会自动从你的模板里面提取xip出来。
第二个“ROM文件夹的XIP.bin”就要你在ROM文件夹里面预先放置一个你手机的XIP.bin。
第三个选项“ROM\XIP文件夹的组件”就是你在ROM文件夹里面预先放置MSXIPKernel类型的文件夹形式的组件。
(2)、MSXIP
从上面的图我们可以看到,我们要移植的新核心的xip来源有两个,也就是现在我们经常遇到的,一个是xip.bin形式的,另外一个就是现在常用的有MSXIPKernel文件夹的形式,如果选择了“DONOR文件夹的组件”的选项,那么下面MSXIPKernel和MSXIPKernelLTK这两个选项就要打上钩,不过执行的时候如果显示找不到MSXIPKernelLTK这个组件的话就把这个组件的钩去掉就没问题了。
2、重建:
重建XIP的话,我们就可以从选项里面选择我们手机的OEMXIP的来源,可以是模板里面提取的,可以是原来搞出来的xip.bin,还可以是MSXIPKernel文件夹的形式的组件。
3、一些选项的说明:
(1)、删除文件、模块和组件。
在这里我们可以选择我们合成xip的时候删掉那些不需要的文件,你看哪个比较养眼就咔嚓掉吧。
:
)
(2)、替换cecompr.dll选项:
因为有些机子自带的cecompr.dll不支持lzx压缩,如果你的imgfs想用lzx来压缩的话,那么就必须要把cecompr.dll替换成支持lzx压缩的,你可以找一个支持lzx压缩的cecompr.dll放到ROM文件夹里面,然后选择它,合成时候就会自动帮你把cecompr.dll换掉的啦。
(3)、结束是运行cmd文件:
就是在合成xip后如果你还要用一些专用工具对xip.bin进行处理的话,那么在这里选择你用来处理的cmd批处理命令,合成xip后会自动调用运行这个cmd批处理了。
(4)、其它选项:
基本上你看哪个顺眼就钩哪个吧,不过,貌似你的xip如果要经过SRPX压缩的话,那么限制就多一些,你可以默认就行了。
Imgfs和rom的合成
在设置的窗口里面,有个“生成Dump和ROM”的选项卡,如下:
虽然说这个选项卡里面选择的东西比较多,看得眼花缭乱,不过重要的也没几个。
下面解说一下这些选项吧:
(1)、如果文件或模块发现有重复名称的。
这个选项就是大家一看应该就懂了,不用我费心了。
如果不理解,请自行咨询你的小学语文老师。
(2)、合并所有组件为一个组件。
这个就是和以前用的工具all_packages_to_one一样的功能,把所有的dsm和rgu都整合了,经过这样处理后,别人dump你的rom,只会打包成一个组件,这个组件的名称你还可以自己设定。
(3)、在装配时使用XIP。
虽说我们刚才设定了xip移植的内容,可是合成rom的时候可以不用他重建或者移植的生成的xip,可以是直接采用模板里面的xip,或者ROM文件夹下面的XIP.bin文件,当然,我喜欢移植/重新生成的xip。
(4)、如果没有找到.VM或.ROM
这个工具比较牛B的功能,移植SYS的时候,不但原机的packages.cif和packages.sof不要,连.VM和.ROM都可以不用,直接根据xip数据帮你创建。
(5)、如果可能,删除dll的间距
这个嘛,一般我都是钩上的,让dll排列整齐点,好看啊。
(6)、使用自带引擎来重排模块和生成分区文件
这个必须钩上,否则下面的所有选项都无法选择了,反正我用自带引擎来重排和生成分区文件的话,毫无问题。
(7)、分配根据
里面有两个选择:
当前e32_vbase和packages.cif,随意你选一个吧,反正我选哪一个都没问题。
(8)、生成imgfs分区
生成imgfs分区的时候可以根据你模板文件来生成,或者在rom文件夹里面放一个imgfs.bin文件来根据它来生成。
(9)、使用自带引擎来生成ROM文件。
这个自带引擎生成的rom文件就是标准的rom。
它下面有个:
FAT32分区设置按钮,按进去后是个设置FAT32分区的对话框,如图:
这个可能要根据不同的手机来选择了,目前我的M9手机就选第一个。
原来我曾经选择过第三个,不过生成的rom添加Extra数据的时候就出错。
所以大家不妨先试试第一个看看有没有问题,没有问题就选他了。
(10)、在结束时运行cmd文件
由于OSBuilder生成的rom是标准的rom,那么要用来刷机的话还要对这个rom进行处理才行,我们在这里选择处理的批处理文件,那么生成rom后会自动处理,然后直接生成可以刷机的rom,就不用我们又要再次手动运行处理的cmd文件了。
当我们把这些内容都设置好以后,那么我们点击工具栏上面的“执行”按钮后就可以生成rom了,每一部分内容完成后都有10秒钟的暂停,你不管它的话,10秒钟后它自动就执行,在最后生成的rom的时候,还有15秒的暂停,供你对一些选项最后进行一下调整,比如说调整pp的大小,生成的文件名等。
默认生成的rom文件名就是ROM.nb0,你要做最后处理的话就要处理这个ROM.nb0这个文件。
对rom进行的最后处理
上面说了,OSBuilder生成的rom是一个标准的rom,需要处理成适合自己手机的rom才能刷机用。
那么如何进行处理呢,各个手机的rom格式都不相同,只能根据你自己手机生成rom的批处理来自己做一个cmd文件来用了,你可以打开你原来合成rom的批处理文件,找到原来写入imgfs分区的那个一个命令,然后把后面的命令拷贝过去再整理一下就行啦。
以我的M9为例,原来合成rom的批处理:
mybuildos.exe
tools\EXTReloc.exe-WM61-lEXTReloc.log-dtemp\dump-noImL
cdtemp
copy..\合成必须文件\*.*
..\tools\ImgfsFromDump.exeimgfs_raw_data.binimgfs.bin
..\Tools\ImgfsToNb.exeimgfs.binOS.nb.payload.payloadOS.nb.payload.payload.bigstorage
renOS.nb.payload.payloadOS.nb.payload.payload.old
renOS.nb.payload.payload.bigstorageOS.nb.payload.payload
..\Tools\NBMerge.exe-data512-extra8OS.nb.payload
DELOS.nb.payload.payload/q
RENOS.nb.payload.payload.oldOS.nb.payload.payload
..\Tools\NBMerge.exe-data16640-extra12OS.nb-conservative
DELOS.nb.payload/q
COPY/BHeader.bin+OS.nbOS.New.bin
..\Tools\Rev14.exeOS.New.binNANDFLASH.new.bin
DELOS.New.bin/q
delOS.nb/q
copy/BNANDFLASH.new.bin+Footer.bin..\flash\NANDFLASH.new.bin
delNANDFLASH.new.bin/q
:
end
PAUSE
在这么多的命令里面,看到
..\Tools\ImgfsToNb.exeimgfs.binOS.nb.payload.payloadOS.nb.payload.payload.bigstorage
这一行没?
这就是写入imgfs分区的命令,执行完这条命令后,生成一个OS.nb.payload.payload.bigstorage文件,然后接下来就把这个文件名改为OS.nb.payload.payload再进行处理,那么我们要做的就是先把OSBuilder生成的rom拷贝一个成为OS.nb.payload.payload,然后就用后面的命令进行处理,最后我搞的cmd批处理内容如下:
cdTemp
copy/y..\合成必须文件\*.*
copy/yROM.nb0OS.nb.payload.payload
..\Tools\NBMerge.exe-data512-extra8OS.nb.payload
DELOS.nb.payload.payload/q
..\Tools\NBMerge.exe-data16640-extra12OS.nb-conservative
DELOS.nb.payload/q
COPY/BHeader.bin+OS.nbOS.New.bin
..\Tools\Rev14.exeOS.New.binNANDFLASH.new.bin
DELOS.New.bin/q
delOS.nb/q
copy/BNANDFLASH.new.bin+Footer.bin..\Flash\NANDFLASH.bin
delNANDFLASH.new.bin/q
:
end
PAUSE
看到不,把写入imgfs分区这行命令后面的命令照搬过来就行了。
当然,这个批处理是以前的,都比较复杂,用osnbtool工具处理的话就比较简单了,就是如下的内容:
cdTemp
copy/y..\合成必须文件\*.*
..\tools\osnbtool-extrarom.nb0
..\tools\osnbtool-2binrom.nb0.exa
..\Tools\Rev14.exerom.nb0.exa.BINNANDFLASH.new.bin
delrom.nb0.EXA
delrom.nb0.exa.BIN
copy/BNANDFLASH.new.bin+Footer.bin..\Flash\NANDFLASH.bin
delNANDFLASH.new.bin/q
Pause
有关OSBuilder合成rom的教程就暂时讲到这里,由于我也是自己摸索着做,如果哪些地方有错漏,大家不妨指正一下,共同讨论提高。