最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

ROM的提取和RFS文件的解包打包

IT圈 admin 74浏览 0评论

2023年12月14日发(作者:豆开朗)

ROM的提取和RFS文件的解包打包

本讲的主要目的:

1)简单介绍Odin刷机包ROM的结构,为文件提取和以后定制ROM做准备。

2)ROM文件的提取,主要是apk文件的提取,介绍提取方法和几个常用软件。

3)RFS文件的解包和打包。这是定制ROM的基础和必备的步骤。

1. ROM结构介绍

1) Odin刷机包ROM结构

I897和I909的Odin ROM通常以压缩包形式传播。文件形式为 .rar或 .zip。不管是哪一类,都可以在Windows下用WinRAR,或WinZIP,或7-zip进行解压缩。解压后得到TAR文件包(刷机包)。

在通常的ROM中,除了PIT文件外,所有刷机文件都打包在一个TAR文件中(例如:),也有的刷机包由三个TAR文件组成(,和)。不管是哪一种,它们所包含的刷机文件内容是相同的,只是ROM打包方式不同而已。无论是哪一类TAR包,解开后都会得到下列文件:

手机上的/system 目录下的内容

其它附加的内容 对应于 /dbdata 目录

引导区的内容

所谓的第二引导区

对应 /mnt/.lfs 下的内容

zImage 内核(kernel)

modem 基带(PHONE)

2) 与目录/system

在这些刷机文件中,我们最关心的是。这个RFS文件包含了手机上/system 目录下的内容。我曾经在机锋论坛的其它帖子中(介绍PIT文件/?tid=391650&page=1&extra=#pid4631210)介绍过,/system的可用空间是固定的276.3MB。所以的大小通常都在276MB左右,是ROM的主要部分。我们在上一讲中用到的apk文件都在这个刷机文件里。用镜像解包软件MagicISO打开文件后,看到的内容见下面截图。

有几个文件夹是我们熟悉的:/app,/fonts,/framework,/lib和/usr。/app里就是手机的所有apk应用程序,/fonts里是各种字体的文件,/lib存放各种库文件,/framework是主题文件的文件夹,最后,我们要修改触摸键的定义就是要修改/usr/keylayout下的文件。

3) 文件夹/app和/framework

下面来看看两个重要的文件夹:/app和/framework。

a) 文件夹/app /app对应于手机上的文件夹/system/app,里面存放的是ROM集成的所有apk应用程序(不包含三星框架文件和)。在MagicISO窗口点击app,进入/app目录,看到下列所有apk文件,见截图。

b) 文件夹/ framework

/framework对应于手机上的文件夹/system/framework,里面存放的是ROM与主题有关的文件,包括三星框架文件和。在MagicISO窗口点击framework,进入/framework目录,看到两个框架apk文件,还有java文件。见截图如下。要修改主题,进行美化,就要与这些文件打交道。

2. ROM的提取

这一节介绍如何从ROM中提取文件。最常用的就是提取apk文件。在论坛中经常看到求救帖子:“大侠,救命哇,我把给删掉了,手机出错。。。”。我说,你完全可以自救,不必在论坛里跪求他人或在线等。出路很简单:就是自己先做备份或有手段去提取文件。另外,如果你掌握了文件的提取方法,你就可以从其它ROM中方便地移植你喜欢的应用程序和功能了。例如,移植输入法,更换主题或桌面,等等。

所谓ROM的提取或从ROM中“提取”文件,实际上就是要对文件进行解包,把里面要用的文件复制出来。是镜像文件,用了三星自定义的格式。RFS是Robust File System的缩写。在刷机包里还有和,都是同类镜像文件。对它们的解包打包方法是相同的。下面来介绍几种常用解包方法。

1) 直接从卡刷ROM包提取

如果你的ROM是“卡刷”包,直接提取就好啦,不需要解包。卡刷包是zip格式的压缩文件。用WinRAR或WinZip直接解压ROM文件就得到所有的原文件。一个典型的ROM打开后有三个文件夹:

META-INF 签名文件和刷机脚本文件

system 这就是内的所有内容

updates 存放内核和基带

进入/system/app目录,一切apk程序都在这里,对应于内的内容和手机的/system目录。刷机就是把/system下的内容复制到规定的分区(见第二讲:卡刷或CWM刷机教程/?tid=390708&extra=page%3D1)。

2) 用RE管理器从手机里提取,复制到SD卡

还有一种ROM的提取方法,不需要其它软件。用RE管理器,利用它的“多选”-“全选”-“复制”功能,一次把多个文件复制到手机的SD卡上。然后,进入“大容量存储”把文件拷贝到计算机里。这也是做备份的一种常用方法。 3) 利用91手机助手从手机提取

还有一种不需要对ROM解包就可以提取到文件的途径。如果你是91手机助手的使用者,你一定熟悉它。打开91手机助手的文件管理,想提取那个就提取那个。把文件直接拖出来放到你的计算机里就行了。

4) MagicISO/UltraISO/WinImage软件

由于是镜像文件,你可以用某些镜像解包软件来打开刷机文件。常用的软件有MagicISO和UltraISO。论坛里有介绍和下载链接。我在上一节的例子中就是用到MagicISO。类似的软件有很多,你们可能各有利器。最近,也用过WinImage,结果相同。

注意:这些软件只能用于解包提取文件之用,不能进行RFS打包操作。

5) 在Linux下通过对的解包

在Linux环境下,通过对进行解包操作是提取ROM的高级手段。在下一节详细叙述。

3. RFS的解包和打包

先强调一下,我们这一节讲的RFS文件的解包和打包不是为了提取文件之用。我们的目的并不仅仅停留在提取ROM文件上的层面上。更重要的是,我们不但要对能解包,我们需要对包内的内容进行修改后还要能够再打包成RFS文件格式。其最终目的是为了定制自己的ROM刷机包。从技术上讲,RFS文件的打包只能在Linux系统下进行。我们在这一节就介绍如何在Linux系统下对RFS文件的解包和打包。

1) 在计算机的Linux系统下

假定计算机已经安装了Linux操作系统和配置了java环境。我个人用的是Ubuntu 10.04,目前最新版本是11.04。下面是对的解包和RFS打包过程。在Linux下主要使用mount和umount两个命令,要求具有超级用户权限。操作步骤如下:

a)先创建一个子目录:/home/sunny/Work

b)把复制到/home/sunny/Work这个子目录

c)再在Work之下创建一个子目录System

d)在用户终端/home/sunny/Work输入

$ su

Password:XXXXXXXX(你的Root口令)

输入“Password”后,获得超级用户权限,提示符变成

root@ubuntu:/home/sunny/Work#

e)在超级用户终端/home/sunny/Work# 输入下列命令,挂载 RFS文件 为一个磁盘:

# mount –o loop System

进入“磁盘”System目录,你就可以看到解包后的所有内容。像对待正常文件夹一样,你可以用“文件夹”浏览器查看 System文件夹里面的内容,但是不能删除和添加文件。

f)在超级用户终端,你可以用rm和cp命令任意删除和添加应用程序。你也可以把文件从System目录复制出来(提取文件)。由于/home/sunny/Work/System是挂载的磁盘,修改System下的内容就是在修改的内容。所有美化、修改、编辑工作都在此进行。

g)修改好/System的内容后,在超级用户终端执行下面的语句卸载该“磁盘” ,这个操作等价于“打包”过程。为此,首先退到目录/home/sunny/Work,输入下列命令:

# umount System

h)卸载System“磁盘”后,我们就得到修改好了的。/home/sunny/Work 目录下的就是修改和打包后可用的文件了。System目录什么都没有了(空目录)。

i)关于的打包。在以上的操作过程中,好像没有“打包”操作,怎么就得到新的文件了呢?事实上,在这个操作过程中根本就没有被“解开”,是通过挂载磁盘完成的,修改工作也是在“磁盘”上做的。因而也就没有“打包”过程。这与制作Motorola XT502 NB0刷机包的过程不同。玩习惯了XT502的NB0刷机包,还一直想着如何打包呢。

2) 利用手机操作系统

我们Android手机的操作系统实际上就是Linux系统,是简化的Linux系统。你可以在该Linux系统中做很多事情,像在计算机的Linux系统中一样。我们可以利用它来实现RFS文件的“打包”,从而获得RFS文件(例如:)。我们在上一节不是用它来“解包”提取过文件了吗?

这里,我们利用手机并结合Windows系统来完成的“打包”操作,或称提取。要求手机获得Root权限。步骤如下:

a)在Windows下安装ADB驱动(ADB工具包已经在第一讲给出)。

b)用USB数据线把手机连接计算机。

c)手机要在“设置”-“应用程序”-“开发”下勾“USB测试”

d)在DOS下输入(假定ADB安装在C:/ADB/目录内):

C:ADB> adb shell

$ su

# dd if=dev/block/stl9 of=/sdcard/ bs=4096

几分钟之后,再次出现“#”提示符。输入:

# exit

$ exit

在SD卡上产生了打包好的文件,大小为278M。

e)把文件从SD卡拷贝到计算机,待用。用MagicISO打开检查一下,是不是你要的内容。

f)如果要提取其它和文件就用下列命令:

dd if=/dev/block/stl10 of=/sdcard/ bs=4096 dd if=/dev/block/stl11 of=/sdcard/ bs=4096

注意:用了某些优化内核时,所提取出来的RFS文件无法用MagicISO或UltraISO打开。需要选取合适的内核。

2023年12月14日发(作者:豆开朗)

ROM的提取和RFS文件的解包打包

本讲的主要目的:

1)简单介绍Odin刷机包ROM的结构,为文件提取和以后定制ROM做准备。

2)ROM文件的提取,主要是apk文件的提取,介绍提取方法和几个常用软件。

3)RFS文件的解包和打包。这是定制ROM的基础和必备的步骤。

1. ROM结构介绍

1) Odin刷机包ROM结构

I897和I909的Odin ROM通常以压缩包形式传播。文件形式为 .rar或 .zip。不管是哪一类,都可以在Windows下用WinRAR,或WinZIP,或7-zip进行解压缩。解压后得到TAR文件包(刷机包)。

在通常的ROM中,除了PIT文件外,所有刷机文件都打包在一个TAR文件中(例如:),也有的刷机包由三个TAR文件组成(,和)。不管是哪一种,它们所包含的刷机文件内容是相同的,只是ROM打包方式不同而已。无论是哪一类TAR包,解开后都会得到下列文件:

手机上的/system 目录下的内容

其它附加的内容 对应于 /dbdata 目录

引导区的内容

所谓的第二引导区

对应 /mnt/.lfs 下的内容

zImage 内核(kernel)

modem 基带(PHONE)

2) 与目录/system

在这些刷机文件中,我们最关心的是。这个RFS文件包含了手机上/system 目录下的内容。我曾经在机锋论坛的其它帖子中(介绍PIT文件/?tid=391650&page=1&extra=#pid4631210)介绍过,/system的可用空间是固定的276.3MB。所以的大小通常都在276MB左右,是ROM的主要部分。我们在上一讲中用到的apk文件都在这个刷机文件里。用镜像解包软件MagicISO打开文件后,看到的内容见下面截图。

有几个文件夹是我们熟悉的:/app,/fonts,/framework,/lib和/usr。/app里就是手机的所有apk应用程序,/fonts里是各种字体的文件,/lib存放各种库文件,/framework是主题文件的文件夹,最后,我们要修改触摸键的定义就是要修改/usr/keylayout下的文件。

3) 文件夹/app和/framework

下面来看看两个重要的文件夹:/app和/framework。

a) 文件夹/app /app对应于手机上的文件夹/system/app,里面存放的是ROM集成的所有apk应用程序(不包含三星框架文件和)。在MagicISO窗口点击app,进入/app目录,看到下列所有apk文件,见截图。

b) 文件夹/ framework

/framework对应于手机上的文件夹/system/framework,里面存放的是ROM与主题有关的文件,包括三星框架文件和。在MagicISO窗口点击framework,进入/framework目录,看到两个框架apk文件,还有java文件。见截图如下。要修改主题,进行美化,就要与这些文件打交道。

2. ROM的提取

这一节介绍如何从ROM中提取文件。最常用的就是提取apk文件。在论坛中经常看到求救帖子:“大侠,救命哇,我把给删掉了,手机出错。。。”。我说,你完全可以自救,不必在论坛里跪求他人或在线等。出路很简单:就是自己先做备份或有手段去提取文件。另外,如果你掌握了文件的提取方法,你就可以从其它ROM中方便地移植你喜欢的应用程序和功能了。例如,移植输入法,更换主题或桌面,等等。

所谓ROM的提取或从ROM中“提取”文件,实际上就是要对文件进行解包,把里面要用的文件复制出来。是镜像文件,用了三星自定义的格式。RFS是Robust File System的缩写。在刷机包里还有和,都是同类镜像文件。对它们的解包打包方法是相同的。下面来介绍几种常用解包方法。

1) 直接从卡刷ROM包提取

如果你的ROM是“卡刷”包,直接提取就好啦,不需要解包。卡刷包是zip格式的压缩文件。用WinRAR或WinZip直接解压ROM文件就得到所有的原文件。一个典型的ROM打开后有三个文件夹:

META-INF 签名文件和刷机脚本文件

system 这就是内的所有内容

updates 存放内核和基带

进入/system/app目录,一切apk程序都在这里,对应于内的内容和手机的/system目录。刷机就是把/system下的内容复制到规定的分区(见第二讲:卡刷或CWM刷机教程/?tid=390708&extra=page%3D1)。

2) 用RE管理器从手机里提取,复制到SD卡

还有一种ROM的提取方法,不需要其它软件。用RE管理器,利用它的“多选”-“全选”-“复制”功能,一次把多个文件复制到手机的SD卡上。然后,进入“大容量存储”把文件拷贝到计算机里。这也是做备份的一种常用方法。 3) 利用91手机助手从手机提取

还有一种不需要对ROM解包就可以提取到文件的途径。如果你是91手机助手的使用者,你一定熟悉它。打开91手机助手的文件管理,想提取那个就提取那个。把文件直接拖出来放到你的计算机里就行了。

4) MagicISO/UltraISO/WinImage软件

由于是镜像文件,你可以用某些镜像解包软件来打开刷机文件。常用的软件有MagicISO和UltraISO。论坛里有介绍和下载链接。我在上一节的例子中就是用到MagicISO。类似的软件有很多,你们可能各有利器。最近,也用过WinImage,结果相同。

注意:这些软件只能用于解包提取文件之用,不能进行RFS打包操作。

5) 在Linux下通过对的解包

在Linux环境下,通过对进行解包操作是提取ROM的高级手段。在下一节详细叙述。

3. RFS的解包和打包

先强调一下,我们这一节讲的RFS文件的解包和打包不是为了提取文件之用。我们的目的并不仅仅停留在提取ROM文件上的层面上。更重要的是,我们不但要对能解包,我们需要对包内的内容进行修改后还要能够再打包成RFS文件格式。其最终目的是为了定制自己的ROM刷机包。从技术上讲,RFS文件的打包只能在Linux系统下进行。我们在这一节就介绍如何在Linux系统下对RFS文件的解包和打包。

1) 在计算机的Linux系统下

假定计算机已经安装了Linux操作系统和配置了java环境。我个人用的是Ubuntu 10.04,目前最新版本是11.04。下面是对的解包和RFS打包过程。在Linux下主要使用mount和umount两个命令,要求具有超级用户权限。操作步骤如下:

a)先创建一个子目录:/home/sunny/Work

b)把复制到/home/sunny/Work这个子目录

c)再在Work之下创建一个子目录System

d)在用户终端/home/sunny/Work输入

$ su

Password:XXXXXXXX(你的Root口令)

输入“Password”后,获得超级用户权限,提示符变成

root@ubuntu:/home/sunny/Work#

e)在超级用户终端/home/sunny/Work# 输入下列命令,挂载 RFS文件 为一个磁盘:

# mount –o loop System

进入“磁盘”System目录,你就可以看到解包后的所有内容。像对待正常文件夹一样,你可以用“文件夹”浏览器查看 System文件夹里面的内容,但是不能删除和添加文件。

f)在超级用户终端,你可以用rm和cp命令任意删除和添加应用程序。你也可以把文件从System目录复制出来(提取文件)。由于/home/sunny/Work/System是挂载的磁盘,修改System下的内容就是在修改的内容。所有美化、修改、编辑工作都在此进行。

g)修改好/System的内容后,在超级用户终端执行下面的语句卸载该“磁盘” ,这个操作等价于“打包”过程。为此,首先退到目录/home/sunny/Work,输入下列命令:

# umount System

h)卸载System“磁盘”后,我们就得到修改好了的。/home/sunny/Work 目录下的就是修改和打包后可用的文件了。System目录什么都没有了(空目录)。

i)关于的打包。在以上的操作过程中,好像没有“打包”操作,怎么就得到新的文件了呢?事实上,在这个操作过程中根本就没有被“解开”,是通过挂载磁盘完成的,修改工作也是在“磁盘”上做的。因而也就没有“打包”过程。这与制作Motorola XT502 NB0刷机包的过程不同。玩习惯了XT502的NB0刷机包,还一直想着如何打包呢。

2) 利用手机操作系统

我们Android手机的操作系统实际上就是Linux系统,是简化的Linux系统。你可以在该Linux系统中做很多事情,像在计算机的Linux系统中一样。我们可以利用它来实现RFS文件的“打包”,从而获得RFS文件(例如:)。我们在上一节不是用它来“解包”提取过文件了吗?

这里,我们利用手机并结合Windows系统来完成的“打包”操作,或称提取。要求手机获得Root权限。步骤如下:

a)在Windows下安装ADB驱动(ADB工具包已经在第一讲给出)。

b)用USB数据线把手机连接计算机。

c)手机要在“设置”-“应用程序”-“开发”下勾“USB测试”

d)在DOS下输入(假定ADB安装在C:/ADB/目录内):

C:ADB> adb shell

$ su

# dd if=dev/block/stl9 of=/sdcard/ bs=4096

几分钟之后,再次出现“#”提示符。输入:

# exit

$ exit

在SD卡上产生了打包好的文件,大小为278M。

e)把文件从SD卡拷贝到计算机,待用。用MagicISO打开检查一下,是不是你要的内容。

f)如果要提取其它和文件就用下列命令:

dd if=/dev/block/stl10 of=/sdcard/ bs=4096 dd if=/dev/block/stl11 of=/sdcard/ bs=4096

注意:用了某些优化内核时,所提取出来的RFS文件无法用MagicISO或UltraISO打开。需要选取合适的内核。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论