新机器不舍得刷机,所以一直在找一个比较透明的修改工具来自己定义系统。在 morotolafans上有帖子介绍用 telnet 后用 dd 命令导出 cramfs 后,用 mount -o loop ..挂到linux下可以修改的方法。但是我导出后,在 cygwin 下用 cramfsck 命令打开竟然报 CRC Error 的错误,很是郁闷,经过研究才发现 MOTO 的 cramfs 的 CRC 跟linux自己生成的值一样,只不过存在 cramfs 的 super 区域时,4 个字节的顺序是反的。于是对 cygwin 的 cramfs 代码做了些修改。并分别编译了 cygwin 和 xscale-linux 的两个版本。
测试中,新手慎用。
cygwin下中文问题基本解决
1。cramfsck 是用来检查和解压 cramfs 格式文件的。解出所有文件的用法如:
$ cramfsch -v -x 目录 文件.cramfs
这个版本增加了对 MOTO 的 CRC 识别,并加了“-f”参数,可以强制跳过CRC校验或部分错误。由于手机上的SD卡文件系统为FAT,文件的隶属用户和组都是 ezx , cramfs 的文件 uid:gid 全部都是 60001:97 (行货 E680i.C5.ABP.)。该命令在手机上解文件时会报 lchown() 的错误,于是我增加了个 "-o" 开关,默认情况下,解压时不去设置文件的隶属用户和组。如果想使用加上 “-o” 参数就可以了。
2。mkcramfs 是用来制作 cramfs 文件的。我增加了3个参数"-u UID"用来指定用户ID ,“-g GIU”用来指定组ID,“-c”用来输出MOTO 格式的 CRC 。增加 -u 和 -g 参数是针对在手机上解出的cramfs 的。默认情况下,可以用 mkcramfs -u 60001 -g 97 形式去创建手机上用的 cramfs ,-c 参数我暂时还不确认,不知道是不是只有 E680i 的 cramfs 用这样的 CRC。有过刷机经验的朋友应该都见过刷机过成中显示的 CRC Checksum 错误,红灯,刷机失败吧,我考虑他们的破解包 cg36 都是在 linux 下用 mount 做的,这个 CRC 值保留了 linux 的格式。有时间刷机刷着玩的朋友不访有空帮我验证一下。
3。cygwin的版本为了处理中文,在解/压时对包里的 UTF-8 字符集的文件名做了转换,默认转成"gbk"了,如果你用Win9x,没装GBK支持,可以试试“-l gb2312”,繁体windos可以试试“-l big5”。
4。下载包里,xscale-linux下的文件可以复制到手机上,用telnet 和 qconsole 下运行,用的时候最好在SD卡上,并且注意一下你SD卡上是否有足够的空间。cramfs里的东西是用zlib压缩的,解开后容量可能要翻倍。
5。cygwin 下的两个.exe是用在 cygwin 系统下的。编译这个版本是给用 cygwin 的朋友用的,因为 cygwin 下的 mount 不支持 -o loop
6。剩下的文件都是源程序及相关文件了,跟程序运行没关系,如果你对的我可执行代码不放心,可以自己去编译。编译手机上的版本需要交叉编译器,我前几天又帖子写了。
http://club.ccmove.com/topicdisplay.asp?Page=1&TopicID=397292
7。这个工具应该跟 flashkit 配合使用会比较方便。关于 flashkit 我就不说了,免的又被人说是抄袭,flashkit 用法见 http://club.ccmove.com/topicdisplay.asp?Page=1&TopicID=257967
8。cramfsck 支持从块设备上读,所以不需要先用dd去读了,可以直接用:
# ./cramfsck -v /dev/roflash2
9。手机上的SD卡和diska都是FAT的,不支持 symlink,所以在手机上解 cg35 包会出错退出,可以加 “-f”参数,不中断继续解后面的文件。好像只有手机上的/ezxlocal下支持 symlink ,可惜这只有 2M 的空,不实用。 不知道能不能把SD卡格式化成 ext2 或者 ext3,这样应该能可以支持 symlink 。。。
测试中,新手慎用。
cygwin下中文问题基本解决
1。cramfsck 是用来检查和解压 cramfs 格式文件的。解出所有文件的用法如:
$ cramfsch -v -x 目录 文件.cramfs
这个版本增加了对 MOTO 的 CRC 识别,并加了“-f”参数,可以强制跳过CRC校验或部分错误。由于手机上的SD卡文件系统为FAT,文件的隶属用户和组都是 ezx , cramfs 的文件 uid:gid 全部都是 60001:97 (行货 E680i.C5.ABP.)。该命令在手机上解文件时会报 lchown() 的错误,于是我增加了个 "-o" 开关,默认情况下,解压时不去设置文件的隶属用户和组。如果想使用加上 “-o” 参数就可以了。
2。mkcramfs 是用来制作 cramfs 文件的。我增加了3个参数"-u UID"用来指定用户ID ,“-g GIU”用来指定组ID,“-c”用来输出MOTO 格式的 CRC 。增加 -u 和 -g 参数是针对在手机上解出的cramfs 的。默认情况下,可以用 mkcramfs -u 60001 -g 97 形式去创建手机上用的 cramfs ,-c 参数我暂时还不确认,不知道是不是只有 E680i 的 cramfs 用这样的 CRC。有过刷机经验的朋友应该都见过刷机过成中显示的 CRC Checksum 错误,红灯,刷机失败吧,我考虑他们的破解包 cg36 都是在 linux 下用 mount 做的,这个 CRC 值保留了 linux 的格式。有时间刷机刷着玩的朋友不访有空帮我验证一下。
3。cygwin的版本为了处理中文,在解/压时对包里的 UTF-8 字符集的文件名做了转换,默认转成"gbk"了,如果你用Win9x,没装GBK支持,可以试试“-l gb2312”,繁体windos可以试试“-l big5”。
4。下载包里,xscale-linux下的文件可以复制到手机上,用telnet 和 qconsole 下运行,用的时候最好在SD卡上,并且注意一下你SD卡上是否有足够的空间。cramfs里的东西是用zlib压缩的,解开后容量可能要翻倍。
5。cygwin 下的两个.exe是用在 cygwin 系统下的。编译这个版本是给用 cygwin 的朋友用的,因为 cygwin 下的 mount 不支持 -o loop
6。剩下的文件都是源程序及相关文件了,跟程序运行没关系,如果你对的我可执行代码不放心,可以自己去编译。编译手机上的版本需要交叉编译器,我前几天又帖子写了。
http://club.ccmove.com/topicdisplay.asp?Page=1&TopicID=397292
7。这个工具应该跟 flashkit 配合使用会比较方便。关于 flashkit 我就不说了,免的又被人说是抄袭,flashkit 用法见 http://club.ccmove.com/topicdisplay.asp?Page=1&TopicID=257967
8。cramfsck 支持从块设备上读,所以不需要先用dd去读了,可以直接用:
# ./cramfsck -v /dev/roflash2
9。手机上的SD卡和diska都是FAT的,不支持 symlink,所以在手机上解 cg35 包会出错退出,可以加 “-f”参数,不中断继续解后面的文件。好像只有手机上的/ezxlocal下支持 symlink ,可惜这只有 2M 的空,不实用。 不知道能不能把SD卡格式化成 ext2 或者 ext3,这样应该能可以支持 symlink 。。。