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 指定源路径。