canned_fs_config和fs_config都是用来配置文件系统的选项。但是两者的不同点在于canned_fs_config是一个编译时的选项,而fs_config是运行时的选项。
具体来说,canned_fs_config是在静态编译时生成的一个文件,包含了文件系统中需要预定义的文件或目录的权限、所有者和组。而fs_config则是在运行时读取的文件系统,用于检查文件和目录的权限等信息是否满足安全性要求。
下面是一个示例代码,演示如何使用canned_fs_config和fs_config来配置ext4文件系统:
canned_fs_config:
在Android源代码的源码树中kernel目录下有一个fs_config文件,在编译的时候,会用这个文件生成CannedFsConfig并打包进内核中,这个文件是必须的,编译的时候也会通过制定CONFIG_ANDROID_PARANOID_NETWORK选项,基于这个文件对文件系统的访问做出限制。
下面以一个平板电脑为例,在/opt/tablet目录下,有个db.sqlite3文件,其所有者为系统用户,组为同样的系统用户,权限为-rw-rw-rw-(0666)。
可以在fs_config文件中添加以下条目:
(目录) /opt/tablet 0 0 0755
(文件) /opt/tablet/db.sqlite3 0 0 0666
也可以使用mkbootfs工具(包含在Android源码中)来创建包含canned_fs_config的ramdisk镜像:
$ mkbootfs /path/to/root/folder > ramdisk.img $ mkcramfs ramdisk.img ramdisk.cpio.gz
fs_config:
在运行时,fs_config文件会加载并用于检查系统文件的权限等信息。fs_config文件在system/core/fs_config中,文件名为fs_config,可以在相