手把手教你做ROM.docx
《手把手教你做ROM.docx》由会员分享,可在线阅读,更多相关《手把手教你做ROM.docx(49页珍藏版)》请在冰豆网上搜索。
手把手教你做ROM
教程大体分为以下几部分:
1。
ROM基础知识.....................................
2。
ROM制作工具介绍...............................
3。
ROM定制............................................
4。
ROM定制FAQ......................................
5。
DIY及OEM包制作.................................
6。
模板的制作............................................
7。
移植....................................................
第一部分:
ROM基础知识.........................................
A。
名词解释
1.ROM,RAM,FlashMemory
ROM(ReadOnlyMemory)的全名为只读记忆体,是PPC上的硬盘部分用来存储和保存数据。
ROM数据不能随意更新,但是在任何时候都可以读取。
即使是断电,ROM也能够保留数据。
但是资料一但写入后只能用特殊方法或根本无法更改,因此ROM常在嵌入式系统中担任存放作业系统的用途
RAM(RandomAccessMemory)的全名为随机存储记忆体,是PPC上的移动存储部分,用来存储和保存数据的。
它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)
FlashMemory,由于ROM不易更改的特性让更新资料变得相当麻烦,因此就有了FlashMemory的发展,FlashMemory具有ROM不需电力维持资料的好处,又可以在需要的时候任意更改资料,我们常见的FLASHMemory有TF卡(全名:
TransFLash卡),SD卡(全名:
SecureDigitalMemoryCard),CF卡(全名:
CompactFlash卡)等。
2.XIP,IPL,SPL,RADIO
XIP(ExecuteInPlace)中文意:
立即执行。
XIP所起到的作用是让操作系统内核直接在Flash中运行,不需要拷贝到RAM,即指操作系统或应用程序直接从非易失性存储器中执行,这样减少了内核从闪速存储器拷贝到RAM的时间,其采用的非压缩映像也减少了内核自解压的时间,换句话说,XIP直接决定了PPC系统运行和加载程序的时间,也就是直接决定了PPC系统的运行速度。
IPL(全称:
InitialProgramLoader)中文意:
首次装载系统,其负责主板,电源、硬件初始化程序,并把SPL装入RAM,如果IPL损坏,由于不能加载SPL,所以机器将不能装载任何由SPL完成装载的OS系统。
SPL(全称:
SecondProgramLoader)中文意:
第二次装系统,就是负责装载OS操作系统到RAM中,SPL损坏了我们可以烧录机这样的设备来重新写入,或者还可以通过刷入初始的ROM版本来实现重写SPL,我们俗称“寻找原厂ROM救砖”
RADIO,字面理解:
无线电通讯,其负责着PPC作为手机功能的通讯功能方面,包括它的电话和上网功能,事实上,RADIO硬件模块已经在手机出厂时已经内置,我们所刷入的不过是作为软件应用层面的东西,因为软件层面的东西决定了RADIO硬件模块接收和传递信号的频段分配,所以硬件RADIO的称谓已经被弱化,我们把这种RADIO软件层面的东东一律称为RADIO。
3.刷ROM,刷RADIO,解锁,永久解锁
刷ROM,意指将新的ROM刷入PPC,ROM部分包含:
IPL、SPL、OS、EXTROM、RADIO、STORAGE等,目前来说,我们刷入的ROM绝大多数只包含OS部分,OS部分包含两个东东:
XIP、IMGFS,而这两个正是影响系统层面的主要因素,鉴于其他部分,因为涉及到核心层面的重新写入,可另行重写,所以我们在此进行了抛弃,为了省事,也降低了一次性刷入的风险。
刷RADIO,简单的说就是刷入新的RADIO模块的应用软件,不同的地区不同的通讯服务网络,无线通讯基站在接收和发送无线信号上的频段各有不同,那么处于这个地区和这个通讯服务网络之内的RADIO硬件模块,在频段调整上越接近于本地基站,手机的通讯信号就会越好,信号接收和发送就会越完整越快速,信号搜索上也会越稳定,从而使我们的PPC信号强劲又省电,运营商新的RADIO是根据其基站的新的频段来调整的,所以随着时间的推移,当基站有所升级其频段有所调整的时候,新RADIO的刷入就很有必要了。
解锁,随便解释一下吧,PPC机器在出厂的时候对机器内部核心的CID地址段进行了上锁,上锁的原理是基于微软对于开放性的WM系统所提供的一种特权保护机制,该机制对应用程序能够访问的系统资源作了限制,而厂家正是利用这一点实现了对系统ROM的锁定,锁定的目的一方面是为了个不同机型间的区别和独立性,更大的原因是保障厂家对WM系统推陈出新上的独立自主权,锁定被集中在机器CID地址段上,不同CID的ROM相互之间不能进行交互性的替换,如果强行刷入CID不同的ROM,将无法通过CID校验,严重的会出现系统无法修复的现象,由此PPC玩机的"江湖大侠"们便做起了文章,衍生出一种通过CID地址段欺骗的手段来对上锁的CID进行破解,破解过的CID刷入后,再刷入其他不同CID的ROM将极大可能地通过校验(但不是100%都可行)从而将新的ROM写入机器.
永久解锁,江湖又称SuperCID,此种新破解的CID和上面的相比具备更大的优势在于新ROM作刷入操作的时候,如若操作失败,原机系统将不会受到较大损伤,就算造成损伤也很容易被修复,所以我们常称此种解锁能使PPC“拥有不坏之身”。
4.重启,硬启,定屏,假死,死机
重启,人人都懂的问题,和PC重启的机制是一样的,ROM中的数据全部保存完好,但是RAM中的数据全部丢失,正因此,通过重启可以解决RAM中运行不正常的现象,比如系统运行中的死机,比如程序模块找不到等问题,大部分的机器都会在一定时间内做重启操作,不是因为断电,而是由于机器运行一段时间之后会有相当一部分的垃圾缓存在RAM中,这是由于我们频繁操作机器造成的,众所周知,RAM剩余得越少,机器运行可用的运行空间就越小,机器的速度也会越慢,耗电量也会增大,那么重启机器在关机的一瞬间RAM里的所有数据全部丢失,包括系统垃圾,在重新开机之后,系统会重新加载应用程序,这时候RAM是一个相对干净的空间。
重启的方式大家都知道,连我地球人也知道了,通过电源键,通过系统应用程序,通过桶PP。
硬启,和重启一样都需要重新启动机器,所不同的是硬启将丢失所有ROM和RAM中的数据,而重启只丢失RAM,硬启后系统会自动还原为初始状态,所有的设定要重新来做,所有的资料要重新拷贝进去,貌似PC上的一键还原机制;硬启的原理是利用机器自身进行了格式化,所不同的是格式化之后机器ROM里的初始数据将被重新调出,这个初值数据一直都存在于ROM之中,你无法删除,纵使你作了替换修改等操作,貌似已经修改了数据,其实不然,只是被系统暂时隐藏了,那么在实行硬启格式化ROM之后,重启机器初始数据会被调处进行加载。
硬启操作一般大家不常用,除非系统ROM里出现了无法修复的错误导致机器不能正常运行,那就只能通过硬启来修复系统,硬启的方式地球人都知道,按住挂断和接听两个硬按键桶PP,或者1234清除内存。
定屏,顾名思义,就是屏幕定住不动不理会你的操作,PPC中的定屏现象主要指的是在开机三屏(或者两屏)上,正常情况下开机之后随着系统的加载,开机屏幕会逐步跳过直到出现调整的界面,但是因为ROM制作中出现错误或者遗漏,导致新ROM刷入之后开机屏幕跳不过去了,无论你等待多长时间,手机屏幕定格在那不动了,无法进入系统,导致刷机失败,之所以解释定屏是因为在后面的解决疑难杂症里会用到这个词。
假死,又称睡死,非真正的死机现象,假死现象指的是机器表面上运行正常,但是后台的部分应用程序不能被激发,比如在待机模式下电话呼入屏幕无显示无铃声,比如在操作某项程序的时候出现激发暂时性无反应或者反应延时过长。
死机,人人都知道,这个就不说了。
5.三色屏
三色屏,因该模式下屏幕上呈现三种色彩而得名,三色屏模式最直接的作用是用于查看机器IPL值和SPL值,以识别手机是否成功解锁,间接作用是在模式下可以进行刷机操作。
所有的刷机操作必定要在三色屏模式下实现,不论你是直刷还是卡刷;手动进入三色屏的方法是按住相机键捅PP重启手机,至于其他关于三色屏的内容留到后面再讲。
B。
系统原理
微软的WM系统平台和其PC系统平台有着惊人的相似性,而IPL与SPL实质为WM的Bootloader里的两大组成部份,前面说了,IPL负责主板,电源、硬件初始化程序、并把SPL装入RAM的,SPL则是负责装载OS操作系统中的,所以开机启动顺序是IPL>SPL>OS,SPL还提供检测手机硬件、寻找系统启动分区、启动操作系统为系统的基本维护提供操作界面以及检测SD卡等,像我们执行刷机操作的时候,也是SPL在发挥作用,比如连接电脑同步,进入三色等。
在SPL装载OS的时候,前面我们提到OS分区又分为XIP、IMGFS两部分,系统启动时SPL加载OS分区的XIP到RAM执行,XIP就是WINCEXIPKERNEL,是CE核心部分,XIP是为eXecuteInPlace的缩写,在微软的CE定义中,这块区域存放的是以非压缩格式存放,不需加载,由Bootloader直接调用执行。
XIP部分大约3MB,包括nk.exe、device.exe等核心程序,就像PC上的ntoskrnl.exe等。
IMGFS就像一个压缩的GHOST文件,包括了WM的所有系统文件。
CE核心启动后就可以访问IMGFS文件系统上的OS需要的所有文件了,IMGFS是XPR或LZX压缩格式,系统访问上面的文件会自动解压到RAM。
因为普通PE文件调入RAM执行要进行地址重定位,为了提高效率,IMGFS中的文件可以是重定位好的模块形式,这些程序运行就不用再重定位了,直接调入RAM中保留的PagePool(缓冲池)执行。
刷机就是重写OS分区了,用PDOCREAD可以把整个OS分区读成一个NB镜象文件,然后把镜象解开到DUMP文件夹,就是所有ROM的文件了。
文件分2种,一种是普通文件,另一种是XIP(ExecInPlace)模块,这是为了加快OS运行设计的,就是这些文件可以不调入RAM而直接在ROM执行,但因为现在都是NANDROM,所以XIP模块其实还是要调入RAM的PAGEPOOL执行。
但是由于XIP模块有很多地址信息,所以移植OS最难的就是这了。
第一部分DONE!
第二部分:
ROM制作工具介绍..............................
A。
ROM工具简介
ROM文件系统的架构基于WM平台,核心的系统层面的东西实质上我们是编译不了的,ROM制作其实上只是一种组件模块的重新排列组合的过程,先解包,然后添加删除或者替换,再进行打包以及转换,完全是“拿来主义”的做法,除了微软能对系统核心层做改变之外,任何第三方目前尚无能力进行实质性的改动,其中包括部分PPC厂商对基于WM系统层面的UI再造。
正因此,ROM制作的难易程度和整体性能90%取决于ROM制作工具,一个好的制作工具不仅事半功倍,还能最大可能减少制作过程产生的错误和麻烦,当然,对WM平台之下的PPC基本常识的掌握也是必不可少的;否则,只知其然而不知其所以然,在稍有低级错误出现的情况下,在ROM的制作上我们显得非常的脆弱,这也是本人为何出教程出得像教课书一样的原因。
熟手建议飘过文字阶段,文字阶段的“废话”完全是为了照顾新手而生,请别扔砖,谢谢。
PPC在发展,PPC的使用者也在进步,工具越人性化对使用者的操作要求就会越高,反之,工具越傻瓜对操作者的要求也就越低,江湖上于是出现了针对不同机型不同组件以及不同操作步骤的傻瓜式工具,乃至我们经常提到的一键定制模板。
在这里,我只想通过定制ROM组件的方式来介绍ROM定制工具,定制包实在太多,我不可能去一一枚举。
B。
ROM结构及组件模块
上面我们说了定制ROM实质上是对ROM进行解包转换然后对其组件进行添加删除和替换然后再封包转换,那么ROM定制工具包当然就是为了解决这个过程而生了。
我们首先来看看一个完整的ROM在解包后的几个组成部分:
SPL
IPL
OS(OperatingSystem)
EXTROM
RADIO
STORAGE
等
上面的列表是对于一个完整ROM来说的,像这样的结构一般源于官方ROM,而实际上我们所需要进行刷新写入的部分只有操作系统OS部分,其他部分已经被隔离开了。
OS组件:
XIP
SYS
OEM软件包
核心组件及驱动
由上可以看出要做出新的OS需要准备XIP,SYS,OEM软件包,核心组件及驱动这几样材料,而这几样材料都可以是现成的,我们所要做的只是想法通过定制工具将他们打包到一起,做ROM其实就这么简单!
C。
ROM定制工具包的功能
大部分的ROM采用的是NBH或者NBF文件结构,因为只有这样才能在WM平台之下被识别并刷入,但是我们的操作平台却是PC,这就造成了两个平台之间核心层面的矛盾,ROM定制工具就是解决这种矛盾而生的。
ROM工具包要完成的使命有:
转换文件格式
解包文件为PC环境识别
衔接动态数据库
映射文件地址
嵌入功能模块
封包文件
等
上面的这些我们可以不用去管它到底是怎么意思以及怎么在现实,我们只需要了解下定制工具这个大概的功能就行了。
D。
ROM定制包的应用
很多机油曾经也看过很多教程,但是在常试定制ROM上依然未取得较大的进展(当然使用傻瓜工具的除外),鉴于这种情况,我们不妨采取化整为零的方式来一步步地解决问题。
要知道心急是吃不了热豆腐滴!
通过了解其中一种操作的方式来举一反三地对其他操作实现无师自通,比方说,你会解包,那么应该就会打包,你会增加应该也会删减,你会转换过来当然也该能转换过去,无非是点点鼠标,挪挪文件而已,如果你连PC上的基本操作都应付不了,那说这么多算我的错。
下面我们来看看应用的例子:
NBH和NB之间的转换,使用工具:
nbhtool.exe
转换NBH为NB可以使我们一目了然地看清楚.NBH的ROM文件中到底包含了哪几部分,这种转换对整个NBH文件是一种模块的拆分,如图
我们双击打开nbhtool.exe后点一下“NBH转换为NB”,然后点一下中间的“解压NBH文件
弹出文件夹,我们选择要解包的NBH文件的正确路径
找到后点中RUU_Signed.nbh文件,弹出对话框,需要我们选中解包后的文件存放路径,找好后点“确定”
我们可以看见界面下方有文件在快速滚动,最后弹出“完成”的提示窗,说明文件解包成功
然后我们进入已经解包的文件夹看看,发现只有一个NB文件,名为Windows.nb,从文件大小上看这就是我们的OS.nb,说明这个ROM里只包含OS部分。
OS.nb要转换为我们最常见的材料一样需要再解包,我们称这种解包为DUMP(中文意:
堆放,仓储),意思是将OS.nb里的文件一个个地拿出来进行重新转存,同样的,要解开OS,我们需要OSDUMP工具。
DUMPOS.nb文件使用工具:
ROMCMD
ROMCMD是一款ROM制作的小工具,可以对ROM进行简单的解包,重组,和封包的操作,那在这里我们只利用它的DUMPOS功能。
我们打开解压后的ROMCMD文件夹,可以看到OSDUMP.bat这个自动批处理文件
然后我们将刚才转换来的windows.nb文件进行改名为OS.nb,对于大多数的批处理文件,对需要进行操作的文件名已经确定好了,所以如果不改名那这个OSDUMP.bat批处理文件是不认账的,因为它只默认处理文件名为OS.bat的文件。
接下来我们把改名后的OS.nb文件用鼠标拖动到这个OSDUNP.bat文件上面,电脑上就会弹出一个CMD的对话框了,紧接着我们会看到对话框里有文件在快速地滚屏,这表示OS.nb文件正在被解包,这个过程需要3到10分钟的时间,没关系,去喝杯茶或者点根烟。
时间不用太长我们便会看到CMD框最后自动消失了,那代表OSDUMP已经完成了对OS.nb文件的解包了,下面我们打开原来存放OS.nb文件的文件夹察看一下,我们发现文件夹里除原来的OS.nb之外又多出了几个文件:
从上图中我们可以看到多出的3个文件和一个dump文件夹,这4个就是由OS.nb解包而来的,其中有2个以.reg为扩展名的注册表文件,1个是
.txt文本文件,还有1个是dump文件夹。
这里还是解释一下,2个reg文件是原OS的注册表文件,user.reg是对应手机注册表里的User这一大项的,用于存放用户自定义的注册表项,而default.reg则是对应手机中的ROOT这一大项的,用于存放系统核心文件的注册表项,1个dump_MemoryMap.txt文件是用来记录原OS文件的地址段的,最后的Dump文件夹是我们OS里的所有文件,当然这其中是不包括XIP的。
从上面我们可以了解到,OS文件的原理不仅仅是将文件压缩到一起,它还把所有文件进行有机的排列组合,使各个文件之间互相衔接,以方便我们刷入机器以后能自由的调用,就像小孩在幼儿园一样,不仅仅是将小朋友(所有文件)放进去就行了,还要为他们编排座位和床位(地址段),还要记录他们的名字他们的性格以及特长等(注册表),然后才能更好地对他们进行管理。
好了,言归正传,我们通过DUMPOS文件得到了这么些东西,但是如果在这个基础上对OS进行修改却不是个容易事情,如果要删除或者更改哪几个文件,那就不仅仅只能挪动文件就行,还得改动他们的注册表,重组地址段,这个工程有点艰难,因为改动一旦出错那刷入机器之后就会出问题了,所以,我们的工作还得继续
再继续处理这些文件之前,我们差点忘记了还有一个重要的事没做,那就是提取XIP.
下载能我们需要用到提取XIP的工具RomMaster,我们需要把OS.nb放进该文件夹:
把OS.nb拖动到BuildXIP.bin.bat上,当然你也可以运行命令“RomMaster-w5OS.NB-x-oxip.bin”,程序执行后我们就会得到xip.bin
下面,我们需要把得到的xip.bin文件转换为文件的形式,我们使用DUMP命令,把xip.bin拖动到dumprom.bat上滚屏后就得到XIP文件
XIP部分已经出来了,接上面的工程,我们需要分解出SYS和OEM部分,上面的步骤我们已经DUMP出了OS.nb文件并得到了dump文件夹,这里面包含了SYS和OEM部分,余下的工作我们需要把它拆分为SYS和OEM。
在这里我们需要使用package_tool工具,打开package_tool文件夹
我们双击上图中最后的一个应用程序PKGTool.exe就会打开如下程序界面
然后我们再点“File—Open”,寻找先前的dump文件夹的路径,找到dump文件夹,再点“确定”,我们可以看到软件界面上有文件在执行,点完“确定”后,我们再点“Tools—BuildPackages等处理完成之后,我们进入dump文件夹看看
至此,一个完整的ROM被分解完成。
这里需要说明一下,并不是每个ROM组成部分都是相同的,分解后得到的组件也并非都是齐全的,所以过程中可能会出现无法分解或组合的问题,根据每个ROM及每个工具的不同而异,此部分主要解释的是ROM编辑工具的用法,并非步骤性的东西。
至于ROM的打包和制作过程,下部分具体一起讲吧
第二部分DONE!
第三部分:
ROM定制
本来说稍写得详细点,把每个定制步骤拆开来写,以方便其他机型的暂时无定制包可用的朋友,后来想想算了,本来就是写给初学者看的,谈到深一点的东西,熟手老手都可以做我的老师,时间关系,方便机油能尽快看到这个所谓的教程,所以直接把一键定制拿出来给大家理一理,请见谅,呵呵!
A。
准备工作
PC端需要安装两个支持平台软件,一个是VC(Microsoft Visual C++),一个是NETCF(2.0和3.5都可,一般机器都已自带),PC端的XP,2000,98,VISTA都支持,其他平台未知。
安装成功后需要下载一套定制工具和OEM模板,定制工具现在最前卫的为myBUILDOS,貌似“独立小桥”在07年11月底发布的,这套工具可以说是完全抛弃了DOS环境操作,全Windows操作模式,人性化程度高,定制ROM只需要运行一个批处理然后按提示点“下一步”就可完成整个制作过程,所以被称为一键傻瓜制作,在这个制作工具之下,完全不用担心被如此多的步骤搞得眼花缭乱,头昏脑胀。
因原始的myBUILDOS工具是没有根据机型进行调整的,所以建议大家针对自己的机型下载对应的myBUILDOS工具,以免定制出的ROM不是自己机型的,搞得欲哭无泪。
工具下载完了,成形的材料还需要OEM包,OEM包是集成到ROM里的一些插件和软件,是必须的,如果定制包里没有OEM包或者OEM包里存在错误,那定制程序会报错,定制会进行不下去,这是myBUILDOS已经规定好的。
另外还需要SYS和XIP部分,这也是必须的,系统核心的部分没有,定制程序也会报错不让进行下去。
貌似说了通废话,下面我们来看看一个完整的定制包里有哪些东西:
工具包
OEM
SYS
XIP
看上图,很清楚地能看到整个定制包的结构,4个文件夹和4个文件,4个文件夹中没有XIP,因为XIP是放在ROM文件夹中的,注意文件夹的名称一定要是这样的,如果改名或者名称里多个符号少个字母都是不行的,XIP的名称建议大家直接写为“XIP”三个字母,当然也可以写为“XIP_ELF"或者“XIP_ELFIN”,主要看你是加强版的XIP还是普通版的了,SYS是通用的,不论定制加强的还是普通的。
另外4个文件看文件名大家应该可以猜到有2个是批处理文件,分别对应ELF机型(普通S1)和ELFIN机型(加强S1),另外两个是分别针对ELF和ELFIN的匹配文件。
好了,现在开工,找齐SYS,XIP,OEM包,放到正确的位置(XIP放到ROM文件夹里),我们可以开始定制了。
B。
开始定制
如果你是定制加强版的,并且XIP也是加强版的,那么双击批处理文件ELFIN_BuildNB.bat
这里面有一些是必选的,而多部分是备选的,必选的部分前面必须要都打上勾,备选的部分根据你的需要打勾,需要集成进去的就打勾,在这里,必选项除了在后面标出来的外,字体包和输入法也是必选内容,如果必选的忘记选了,定制出来的ROM刷进机器后就会进不了系统或者进入系统后部分重要的功能用不了,比如电话功能。
把所有必选择的打上勾,备选的根据自己的需要打勾,然后我们就点击一下图中的那个三角符号(见图中红圈),代表生成ROM文件
这部分就介绍到这里,后面我们会具体说明一下在这种定制模式下会出现哪些常见的问题,以及如何定制我们喜欢的界面,如何DIY自己喜欢的系统,又是如何制作OEM软件包供我们使用,尽量地做到万事不求人,岂不快哉!
第三部分DONE!
第四部分:
ROM定制FAQ
ROM定制过程中会出现各种各样的问题,不胜枚举,在此本人只结合自己曾经遇到过的问题,以及根据自身浅薄的经验给出的分析和解决方法,希望给大家能带来点启发.
A。
开始运行Buildos导致的报错
具体表现在下图
报错原因大致有以下几点:
1。
缺少必要组件导致的报错
比如:
缺少SYS文件夹,缺少OEM文件夹,