ext4解打包

有的官方包用的是.img.ext4格式,要用Linux解包

以下用Ubuntu做例子讲解打包解包方法

也可以用相同的原理修改EXT4文件系统的.img

 

1.需要:

Ubuntu操作系统

http://www.ubuntu.org.cn/download/desktop

 

解打包工具 - by xiao1u

http://pan.baidu.com/share/link?shareid=237468&uk=2735187226

 

2.准备工作:

解压解打包工具,得到三个文件:make_ext4fs、mkuserimg.sh、simg2img,

把它们跟要修改的 .img.ext4(或.img)文件放置到一个方便的目录下

 

3.修改:

打开终端,输入su ,并按照提示输入su密码,随后cd到放置工具和源文件的目录


3.1.转换源文件为img格式( .img则略过)

使用./simg2img src des命令来转换system.img.ext4格式文件

终端输入:

./simg2img system.img.ext4 system.img

等待一会就可以转换完毕

 

3.2.挂载镜像

新建一个目录,挂载此img到这个目录上使用

终端输入:

sudo mkdir sysmain

新建出一个名为sysmain的目录

继续输入:

mount -o loop system.img sysmain

挂载成功后就可以在资源管理器中管理该img内的文件

 

3.3.修改镜像内容

此时可以进入挂载的目录里查看修改文件

要注意保持文件的原始权限,如果不慎搞错权限有可能导致刷入此镜像后开不了机

发现权限错误又不知道原权限时可以直接改成777然后用户为root

一般来说可以参考同目录下的其他文件

 

比如要将framework-res.apk文件放到framework目录下

终端输入:

sudo cp framework-res.apk sysmain/framework

sudo chown root.2000 sysmain/framework/framework-res.apk

sudo chmod 0644 sysmain/framework/framework-res.apk

其他文件依此类推 一般建议使用终端命令来移动、复制文件

 

3.4.重新打包

完成修改后就要打包,此时用到另外一个命令

首先在看看镜像挂载到目录后镜像分区的大小,例如是 768M

终端输入

chmod 777 ./mkuserimg.sh

./mkuserimg.sh -s sysmain systest.img.ext4 ext4 tmp 768M

随后就重新打包好了

#注意

下划线部分必须对应,如果是非M单位要转换成M

 

如果是打包成.img

终端输入

chmod 777 ./make_ext4fs

./make_ext4fs -l 768M -s -a system system.img ./sysmain

#注意:

此处下划线部分是分区大小

"-a system",是指这个img用于Android,挂载点是/system

使用此参数后会自动根据private/android_filesystem_config.h里定义的权限给镜像中所有文件重新设置权限

如果刷机后发现有文件权限不对,可以修改android_filesystem_config.h添加权限重新编译make_ext4fs

也可以直接不使用 “-a system”参数,保持镜像中文件的默认权限。




第一步:获取终端执行命令的最高权限
打开终端,先输入 su  ,然后输入你的密码(此时输入字符看不见,可不要以为什么都没有输入哦),敲回车,如果成功,就会发现最后的字符由$变成了#,证明你已经获取了最高root权限


第二步:做好准备工作

然后将里面内容解压,得到三个文件:make_ext4fs,mkuserimg.sh,simg2img

为了方便小白制作者,将这三个文件放到《文档》目录下。

然后,启动终端,进入《文档》,如果你是英文版,请把《文档》换成《Document》注意linux下区分大小写

  1. cd 文档

第三步:转换源文件为img格式

然后,我们可以使用./simg2img src des命令来转换system.img.ext4格式文件了

终端输入:
  1. ./simg2img system.img.ext4 system.img
复制代码
(输入./simg2img的意思是,执行当前目录下的这个文件)


等待一会,就可以转换完毕了。

第四步:挂载镜像到指定目录

然后挂载此img到一个目录上,新建一个目录,使用  sudo mkdir sysmain 新建出一个名为sysmain的目录

然后执行命令 
  1. mount -o loop system.img sysmain
成功挂载。然后你就可以进入目录了查看里面的文件了!!!!!

第五步:修改镜像内的文件

这时候可以进入挂载的目录mysys里面查看各个文件,甚至是修改了。不过这时候要注意一点,就是保持文件的原始权限,如果一不小心修改错了,那么你可以将文件权限设置最大的777,然后再修改用户为root既可

小提示:app目录内的文件权限都是644,framework目录也是644,其他目录一般也都是644的,文件夹权限一般都是755
比如,我们要将su文件放入xbin目录下

使用命令

  1. sudo cp su sysmain/xbin
  2. sudo chown root.2000 sysmain/xbin/su
  3. sudo chmod 06755 sysmain/xbin/su
复制代码
执行上面三个命令后,既可修改好权限。其他文件依次类推。

(如果你不知道权限该如何设置,可以使用命令 ls -l sysmain/app 查看文件具体权限,根据其他文件的权限来修改你的文件权限即可)
(当你替换已经存在的文件,无需修改权限,如果放入一个没有存在过的文件,切记修改相应的用户组,使用命令 chown root.root 来修改它的用户和用户组

如果执行命令权限不足,可以在每个命令前加上sudo命令,这样可以以最高权限执行每个命令了

这个就是将app目录设置为权限高,然后你将文件放入。放入后记得一定要再将你放入的文件权限改好。同时恢复app原始权限

一般建议大家使用命令来移动、复制文件,这样不存在权限问题

第六步:打包文件
当你所有文件搞定后,下来需要一个命令来打包了
  1. ./mkuserimg.sh -s sysmain systest.img.ext4 ext4 tmp 512M
复制代码
PS:如果这步提示你没有权限,那就用chmod将这个文件权限设置为777
这里需要注意,tmp是我在当前目录新建立的一个目录,后面的512M是这个镜像打包后占用空间大小。如果你不知道你的镜像包应该多大,你查看你景象挂载到目录后,这个镜像分区的大小。
恩,当你完成以上步骤,新的systest.img.ext4成功生成了,好了,你可以在fastboot模式下刷入了!!!

PS:另一种打包方式
./make_ext4fs -l 512M -s -a system systest.img.img ./sysmain

我来解释下这个命令的参数:
-l 512M"是分区大小,i9100的system分区是512M;
-s就是生成ext4的S模式制作;
"-a system",是指这个img用于Android系统,挂载点是/system,使用这个参数,make_ext4fs会根据private/android_filesystem_config.h里定义好的权限来给文件夹里的所有文件重新设置权限,如果你刷机以后发现有文件权限不对,可以手工修改android_filesystem_config.h来添加权限,重新编译make_ext4fs,也可以不使用 “-a system”参数,这样就会使用文件的默认权限。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值