@
kile #3 下面是我的看法:
如果说的是 /data 的话,Android 开机时候 init 会在 /data 内放置很多内容,毕竟 /data 才是可以持久化数据的地方,可以看到 init.rc 的 post-fs-data 有不少的 mkdir 操作,为了完整的 context 有必要重置这部分。
然后 /data/data 和 /data/user 这部分可以看具体的实现是跳过了这两个文件夹的 reset ,官方说法是:
This method helps in identifying paths that refer to users' app data. Labeling for app data is
based on seapp_contexts and seinfo assignments rather than file_contexts and is managed by
installd rather than by init.
对应源码:
https://cs.android.com/android/platform/superproject/+/master:external/selinux/libselinux/src/android/android_platform.c;drc=master;l=1147文档是在这里:
https://source.android.com/security/selinux/implement?hl=zh-cn这部分不是很懂,但是应该不是由 init 进程进行处理的。
检查源码之后可以发现类似的操作最早在 5.0 就引入了:
https://cs.android.com/android/_/android/platform/system/core/+/refs/tags/android-5.0.0_r1:rootdir/init.rc;drc=7e58899bcfd83152581867b05bb012c5c4ec4b46;l=322可能的是为了方便就直接一把梭直接 restorecon /data ,在 android 的 issue 发现有针对 /data 下目录的优化:
https://issuetracker.google.com/issues/124858106至于 /data/media/0 这个目录还没有找到有反应的,可能大家比较少在内置储存卡放大量文件 or 少用 WeChat 这样的聊天工具 or 没人在意开机速度。也没看见有类似的反馈就一直没处理这个路径。