V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
amrnxcdt
V2EX  ›  分享创造

尝试修复 andoid 开机缓慢的脚本

  •  
  •   amrnxcdt · 2022-03-07 21:11:57 +08:00 · 1519 次点击
    这是一个创建于 1024 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前文:Android 开机时重设 selinux 规则导致系统开机非常慢

    尝试手动补丁修改了系统的 init.rc 文件,发现开机速度大幅度提升了。

    从抓取的日志上看开机原本需要 200s 以上才能到启动 Boot completed ,现在只需要 30s 左右即可。

    具体文件和说明丢 github:https://github.com/Seshiria/init_accelerator

    一句话说明:直接修改 init.rc 文件跳过 /data/media/0 (用户的内置储存)的 selinux context reset ,这样在用户很多文件的情况下,加速开机。

    4 条回复    2022-03-09 21:59:31 +08:00
    SupperMary
        1
    SupperMary  
       2022-03-08 11:30:52 +08:00
    github 是私有状态吗,点进去 404 了
    amrnxcdt
        2
    amrnxcdt  
    OP
       2022-03-08 11:42:12 +08:00
    @SupperMary #1 默认是私人的,忘了公开,现在可以了。
    kile
        3
    kile  
       2022-03-08 16:06:57 +08:00
    我不理解为什么谷歌不跳过,必须强制 selinux context reset 的意义在哪
    amrnxcdt
        4
    amrnxcdt  
    OP
       2022-03-09 21:59:31 +08:00   ❤️ 1
    @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 没人在意开机速度。也没看见有类似的反馈就一直没处理这个路径。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1144 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:35 · PVG 02:35 · LAX 10:35 · JFK 13:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.