ROM文件结构

前面我们对如何修改WebOS ROM有了一个大致的了解,但是要想更好的定制ROM,熟悉ROM的文件结构还是有必要的。

webOS的ROM被叫做webOS Doctor,虽然不同版本的webOS Doctor内容不同,但大致结构上是一样的。

webOS Doctor是一个jar文件,它是一个可执行的java压缩包。你可以把它改名为zip就可以直接用解压缩工具将它解压缩(当然不改名也可以解压缩)。

解压缩之后,我们得到了3个目录。它们分别是META-INF、com和resources。

其中META-INF从名字上看我们就知道他是这个jar包的元信息。原版的webOS Doctor的这个目录下有三个文件:JARKEY.RSA、JARKEY.SF和MANIFEST.MF。这三个文件包含了这个jar文件的数字签名信息和启动信息。数字签名是用来验证这个jar包是否被修改过的。如果我们要修改webOS Doctor,就需要把数字签名去掉,只保留启动信息。去掉数字签名并不会影响刷机程序的正常运行,因为数字签名不改变jar中的其它文件。

而com目录下是刷机程序的可执行文件,都是一些java的class程序,我们通常修改webOS Doctor时,是不去修改这个目录下的东西的。所以我们可以不去管它。

resources下面是刷机程序的资源。其中那些png是刷机程序里的图片,不用管它(如果你愿意也可以替换它们)。那些html是最终用户许可协议,如果你愿意的话,可以把它汉化。messages*.properties是刷机程序中的一些信息,可以按照这个格式写一份汉化版,这样刷机时选择中文,就会显示中文信息。但是要想选择中文,还需要修改一下languagePicker.properties,修改这个才能让你在刷机开始时选择语言。这些都改完了,刷机程序就可以彻底汉化了。

然后NovacomInstaller.pkg.tar.gz是Mac OS X上的驱动程序,NovacomInstaller_x64.msi和NovacomInstaller_x86.msi是Windows上的驱动程序,分别对于x64和x86系统。这些都不用管它。

recoverytool.config这个是非常重要的一个文件。

前面四行是跟版本信息有关的,可以根据喜好改。

BaseBuild是基础包,它指向webOS.tar这个文件,你可以修改成你自己喜欢的名字,但实在没这个必要。

CustomizationBuild这个是定制包,att的版本这个包名是att.tar,o2等欧洲版本这个包名是wr.tar,verizon版本这个报名是verizon.tar或verizon-world.tar。其实这个包名叫啥都行,可以自己改。

ForceModemUpdate决定是否升级MODEM模块,默认为true,改成false就不刷MODEM了。

SoftwareUpdateSite应该是指软件升级的站点,我们能看到的就是production这个选项,其它选项是什么我就不知道了。

在接下来的三项(AppSubmssion、LibCoreSubmssion、WcpSubmssion)是ROM中软件包的数量,这个不用管它。

DeviceType这个是机型,这个跟webOS.tar中的那个xml是对应的。不要乱改。除非你知道自己在做什么。

ApprovalBuildName是指这个ROM的编译版本,后面那一堆看似乱码的东西是可以解码的,例如Veer ATT 2.1.2的ROM中,这个值解码之后是:ps.palmws.com 'Release Build Name 1.3.2 (SDK935KRY93455)'。跟这个目录下的ps.palmws.com文件和其内容相对应。

ApprovalCharlieHash是指这个ROM的运营商,同样可解码。例如Veer ATT 2.1.2的ROM中,这个值解码之后是:./carrier_NAB.txt 'ATT'。

ApprovalMikeHash是指这个ROM的机型,同样可解码。例如Veer ATT 2.1.2的ROM中,这个值解码之后是:./model_Nova_ATT_Broadway.txt 'P160UNA'。

最后我们讲两个最重要的文件,那就是webOS.tar和另一个<carrier>.tar文件(<carrier>表示att、wr、verizon等)。关于<carrier>.tar我们下次再谈。这次先来详解一下webOS.tar。

webOS.tar是刷机的基本包。它里面包含了整个系统的内容。

其中,boot-<model>.bin是启动文件(其中<model>表示设备制式,例如pre/pre+是castle,pixi/pixi+是pixie,pre2是roadrunner,veer是broadway,pre3是mantaray,touchpad是topaz),它负责载入安装镜像nova-installer-image-<model>.uImage。

*umts*.tar,*cdma*.tar这些是MODEM模块。

*.tga是一些系统的图片。如果你想美好它们的话,可以对它们进行修改和替换。

上面这些文件我们通常不做修改。除非在跨运营商或跨机型移植ROM时,才会替换这些文件。跨运营商移植是比较常见的,替换MODEM模块之后再稍做些修改就可以了。跨机型移植难度较大,不知道是否有人真的尝试过,因为跨机型移植不是替换几个文件就能搞定的。

定制ROM时修改最多的是这三个文件:nova-cust-image-<model>.rootfs.tar.gz,installer.xml和<model>.xml。

nova-cust-image-<model>.rootfs.tar.gz这个里面就是我们手机上运行的系统的根分区的主要内容的压缩包。刷机最关键的部分就是把它来写入到手机的根分区。

installer.xml是里面是刷机的基本配置信息,我们通常不对它修改,最多就是修改ModemUpdater这个,去掉它就不更新MODEM了。

<model>.xml这个文件是非常重要的,里面包含了文件系统的分区信息,哪些数据写入到哪儿,键盘配置等等信息。这个文件我们通常也不会去修改它。最常见的修改就是键盘布局和对分区的调整的修改(例如增加分区,调整某些分区大小等)。而直接用MetaDoctor的选项来对该文件作这些修改更安全一些。

我们再回到nova-cust-image-<model>.rootfs.tar.gz这个文件的讨论上来。

nova-cust-image-<model>.rootfs.tar.gz是对根文件系统做的tar归档文件,然后用gzip进行了压缩。我们可以直接用tar命令将它展开。更方便的方法是借助MetaDoctor中的unpack-doctor或者unpack-rootfs。推荐使用unpack-doctor,这个更好用一些。

解压之后,我们就可以看到系统的大部分文件了。这里说大部分的意思是,有些系统文件不是在这里面直接包含的,而是在另一个<carrier>.tar中安装的,还有一些是在刷机之后第一次启动过程中动态生成的。我们先不管这么多。

在rootfs的根目录下,有一个md5sums.gz文件,解压之后里面是一个名为md5sums的文本文件。该文件记录了这个rootfs中包含的所有文件的md5sum值,如果你对rootfs里的任何文件作了修改,一定要更新md5sums中对应的md5sum值,否则刷机到82%时,刷机程序会提示你设备无法重启。

当然系统验证并不是简单的只看这个md5sums.gz文件。实际上这个rootfs下的内容基本上都是系统预安装好的包(ipk),而这些包的信息保存在/usr/lib/ipkg目录下。

这个目录下,status是保存了包的安装状态。

lists目录下有三个文件,oe-all,oe-<arch>,oe-<model>。其中<arch>是指构架,例如armv7,armv6,i386。<model>是指机型,上面已经介绍了,这里不再重复。

其中oe-all是可以完全移植到其它机器上的包,oe-<arch>是可以移植到相同构架机器上的包,而oe-<model>最为严格,只有相同的机型才能够移植。例如,如果你打算把pre3的系统移植到veer上来,pre3的oe-all和oe-armv7这两个里面的包应该都是可以顺利的那到veer上来的,而oe-mantaray里面的包则不能移植到veer上来,而应该保留veer上原有的oe-broadway的这些包,但这种杂交系统的做法是否真的不影响兼容性我倒是未曾作过验证和尝试。有兴趣并有能力的同学可以试试看。

info目录下就是每个包的控制文件了。其中:

*.control文件是每个包的基本信息文件。

*.list里面记录了每个包中都包含了哪些文件。

*.preinst是每个包安装之前要执行的脚本文件。这种脚本很少。

*postinst是每个包安装之后要执行的脚本文件。

*.prerm是每个包卸载之前要执行的脚本文件。

*.postrm是每个包卸载之后要执行的脚本文件。

*.md5sums是每个包的验证文件,在系统刷机之后,刷机程序也会来验证这些*.md5sums中记录的md5散列值,所以刷机之后的验证是一个双重的验证,因此要手工修改rootfs又要做到能够通过验证确实是非常不容易的,这也是目前国内的一些ROM定制团队定制的ROM无法通过刷机之后的验证,到82%就提示无法启动的主要原因。

几乎所有的文件都可以归入包中,有少数不在包中的文件也都是由预先安装的包因已经执行过postinst脚本所生成的。

所以,我们可以认为这个rootfs.tar.gz就是一组预先安装好的包的集合。搞清楚这个结构,我们后面修改ROM就容易多了。

标签: Palm, WebOS, HP, ROM

« 上一篇 | 下一篇 »

只显示10条记录相关文章

发表评论

评论 (必须):