使用make_ext4fs制作文件系统时写入文件安全上下文的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/keheinash/article/details/78502973

make_ext4fs是谷歌为了在Android平台上制作ext4文件系统的镜像而开发的工具,也可以用于Linux平台上的镜像打包。安卓平台上,用make_ext4fs制作镜像的过程被封装在源码的脚本中,用户只需在file_context文件定义文件的安全上下文,在编译源码后得到的ext4镜像,其中的文件都会带有预设置的安全上下文。下面主要讲述在Linux上如何在使用make_ext4fs制作镜像时,把镜像中文件的安全上下文一同打包的方法。

如果没有电脑上没有make_ext4fs工具,需要先安装android-tools-fsutils:
这里写图片描述

这里写图片描述

make_ext4fs的使用方法,使用-h选项查看,可以看到有一个-S选项,要求的参数是file_context的路径:
这里写图片描述

为了测试,我们在/home/ubuntu/ext4Dir创建一些文件,并且参照Android上的file_context,在/home/ubuntu/ext4Dir/file_context里为/home/ubuntu/ext4Dir目录下的文件定义安全上下文,然后将/home/ubuntu/ext4Dir制作成ext4的镜像,烧录到其他Linux系统上,检查/home/ubuntu/file_context的定义是否生效:
这里写图片描述
这里写图片描述

使用make_ext4fs制作镜像,但是提示查找不到lost+found的安全上下文:
这里写图片描述

于是在file_context中加上lost+found的定义,再次创建镜像,但是依然提示找不到lost+found目录的安全上下文:
这里写图片描述
这里写图片描述

观察安卓的file_context,发现有不少文件路径使用了正则表达式,因此在file_context下使用正则表达式给整个路径定义默认的安全上下文,这样即使lost+found在镜像制作过程中比较晚被创建也可以继承默认的安全上下文:
这里写图片描述

再次使用make_ext4fs制作镜像,发现还是由于找不到lost+found的安全上下文而导致创建镜像失败:
这里写图片描述

查看安卓源码里利用make_ext4fs制作img的部分,发现使用了-a选项,-a是用于选择挂载点的选项,后面跟上的参数是路径,即要打包的目录会被挂载到-a后跟着的路径上:
这里写图片描述

于是在创建镜像时加上“-a /”选项和参数,并且修改file_context中文件的路径:
这里写图片描述

再次制作文件系统,但是这次提示安卓的相关环境变量没有设置:
这里写图片描述

为了直接验证-a选项是否能帮助解决问题,直接使用编译Android源码后生成的make_ext4fs工具,替换我们自己安装的make_ext4fs进行文件系统的制作,成功制作ext4文件系统:
这里写图片描述
这里写图片描述

使用dd命令,把制作好的文件系统拷贝到U盘上:
这里写图片描述

将U盘挂载到另一个Ubuntu,查看U盘下文件的安全上下文,和file_context进行对比发现成功地在制作镜像时将文件的安全上下文一同写入镜像:
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/keheinash/article/details/78502973