make_ext4fs用于Android平台上制作ext4文件系统的镜像。用法举例:
make_ext4fs -l 512M -s -a system system.ext4img system
之后再使用simg2img制作镜像。
有一个问题是,使用这样制作的镜像,system分区文件的权限都是预定的,即使先修改system目录文件权限后在制作镜像,烧入设备后,其权限仍未改变。关键问题在make_ext4fs工具,在制作ext4fs时更改了权限,其依据为system/core/private/android_ilesystem_config.h所定义的权限。
查询make_ext4fs的参数含义,可以了解到这一点。
-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”参数,这样就会使用文件的默认权限。
如果不使用-a参数,则可。
----------------------------------------------------------------------------------------------------------------------
制作ext4文件系统需要使用make_ext4fs命令,例如:
#make_ext4fs -s -l 314572800 -a root -L linux ./rootfs_qt.img ./root
执行之后即会将root文件打包成 rootfs_qt.img 文件系统镜像。
下载:make_ext4fs。
-------------
关于各参数的含义
命令行下执行make_ext4fs即可看到使用方式:
root@DingMZ:~# make_ext4fs
Expected filename after options
make_ext4fs [ -l <len> ] [ -j <journal size> ] [ -b <block_size> ]
[ -g <blocks per group> ] [ -i <inodes> ] [ -I <inode size> ]
[ -L <label> ] [ -f ] [ -a <android mountpoint> ]
[ -z | -s ] [ -J ]
<filename> [<directory>]
-------------------------------------------------------------------
-s 就是生成ext4的S模式制作;
-l 314572800 是分区大小;
-a root 是指这个img用于Linux系统(若为-a system即表示为android系统,挂载点即是/system。使用这个参数,make_ext4fs会根据private/android_filesystem_config.h里定义好的权限来给文件夹里的所有文件重新设置权限,如果你刷机以后发现有文件权限不对,可以手工修改android_filesystem_config.h来添加权限,重新编译make_ext4fs,也可以不使用 “-a system”参数,这样就会使用文件的默认权限)。
./rootfs_qt.img 表示在当前目录下生成镜像文件。
./root 指定源路径。