当前位置: 首页 > news >正文

Android14 init.rc中on boot阶段操作4

Android14 init.rc中on early-init, init, late-init, early-fs, post-fs阶段详解1

Android14 init.rc的on late-fs, post-fs-data阶段主要操作详解2

Android14 init.rc中启动Zygote详解3

Android14 init.rc中on boot阶段操作4


1 on boot和低内存设备的启动优化

仅在ro.config.low_ram=true 的设备上执行(如 1GB RAM 以下),目的是优化把内存与I/O的平衡,防止脏页堆积导致OOM。

  • dirty_expire_centisecs=200:脏页最长保留 2 秒(默认 30 秒),尽早写回磁盘。
  • dirty_background_ratio=5:当脏页占内存 5% 时,后台开始回写(默认 10% 或 20%)
on boot && property:ro.config.low_ram=truewrite /proc/sys/vm/dirty_expire_centisecs 200write /proc/sys/vm/dirty_background_ratio  5

2. on boot阶段

2.1 基础网络初始化

on boot
        ifup lo # 启用本地回环接口 (lo)
        hostname localhost # 设置主机名
        domainname localdomain # 设置域名

  • lo接口是进程间通信(http)的基础。

2.2 内存管理优化

write /proc/sys/vm/overcommit_memory 1

write /proc/sys/vm/min_free_order_shift 4

  • overcommit_memory:控制Linux内核在分配内存时是否允许“内存过量承诺(overcommit),即是否允许进程申请的内存总量超过实际可用的物理内存+Swap。
  • overcommit_memory 的取值:

    含义
    0 (默认)启发式过量分配(Heuristic)<br>内核根据当前内存压力、swap 空间等估算是否允许分配。有一定风险,但平衡性能与安全。
    1总是允许过量分配(Always)<br>无论内存是否足够,一律允许 malloc() 成功。仅当真正访问内存时才分配物理页。
    2禁止过量分配(Never)<br>严格检查:申请内存总量不能超过 swap + RAM * overcommit_ratio。最安全,但易导致 malloc() 失败。
  • min_free_order_shift:控制内核在内存回收(reclaim)或直接回收(direct reclaim) 时,需要保留的最小连续空闲内存块大小。
  • 内存页按“阶(order)”管理:order=0 是 1 页(4KB),order=1 是 2 页(8KB),order=n 是 2^n 页。取值4表示至少保留 2^4 = 16 个连续页,共 64KB 的连续物理内存。

2.3 ZRAM写回管理

chown root system /sys/block/zram0/idle

chmod 0664 /sys/block/zram0/idle

chown root system /sys/block/zram0/writeback

chmod 0664 /sys/block/zram0/writeback

  • ZRAM:将内存压缩作为交换空间,提升低内存设备性能。
  • writeback:将 ZRAM 中的数据写回物理存储(如 eMMC),释放内存。

2.4 F2FS文件系统调优

  • F2FS(Flash-Friendly File System)是 Android 推荐的闪存优化文件系统。
  • 创建符号链接

mkdir /dev/sys/fs/by-name 0755 system system

symlink /sys/fs/f2fs/${dev.mnt.dev.data} /dev/sys/fs/by-name/userdata

  • F2FS参数调优

write /dev/sys/fs/by-name/userdata/cp_interval 200 # 检查点间隔 200 秒

write /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time 50 # GC 紧急模式休眠 50ms

write /dev/sys/fs/by-name/userdata/iostat_period_ms 1000 # I/O 统计周期 1 秒

write /dev/sys/fs/by-name/userdata/iostat_enable 1 # 启用 I/O 统计

write /dev/sys/fs/by-name/userdata/seq_file_ra_mul 16 # 顺序读预读乘数 16x

  •  限制 TRIM 操作大小

write /dev/sys/block/by-name/userdata/queue/discard_max_bytes 134217728 # 128MB

write /dev/sys/block/by-name/rootdisk/queue/discard_max_bytes 134217728

  • TRIM/Discard:通知 SSD 删除无效数据,提升写入性能。
  • 限制为 128MB:避免单次 TRIM 操作过长,导致 I/O 卡顿。

2.5 硬件设备权限配置

2.5.1 CPU频率调节

chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate
chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate
chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_slack
chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_slack
chown system system /sys/devices/system/cpu/cpufreq/interactive/boost
chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boost

  • 允许 system 用户调整 CPU 频率策略(如 timer_ratehispeed_freqboost 等)。
  • 实现 动态性能调节(如触控加速、应用启动加速)

2.5.2 Vibrator

chown system system /sys/class/leds/vibrator/trigger
chown system system /sys/class/leds/vibrator/activate
chown system system /sys/class/leds/vibrator/brightness
chown system system /sys/class/leds/vibrator/duration
chown system system /sys/class/leds/vibrator/state

2.5.3 背光和LED

chown system system /sys/class/leds/keyboard-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness
chown system system /sys/class/leds/button-backlight/brightness
chown system system /sys/class/leds/status_blue/breath
chown system system /sys/class/leds/status_red/trigger
chown system system /sys/class/leds/status_green/trigger
chown system system /sys/class/leds/status_blue/trigger
chown system system /sys/class/leds/red/device/grpfreq

  • 控制屏幕/键盘/状态灯的亮度。

2.6 诊断分区(Diag)挂载

mkdir /mnt/diag

mount ext4 /dev/block/bootdevice/by-name/diag /mnt/diag noatime

chown system system /mnt/diag

chmod 0777 /mnt/diag mkdir /mnt/diag/HD001 ... HD005 0777 system system

restorecon /mnt/diag/*

  • diag 分区:厂商用于存储 调试日志、崩溃转储、诊断数据。
  • noatime:挂载时不更新文件访问时间,减少写入,提升性能。
  • 创建 HD001-HD005 目录:可能是历史遗留或特定诊断工具使用。
  • restorecon:恢复 SELinux 安全上下文,确保安全策略生效。

2.7 启动class为hal和core的services

class_start hal

class_start core

2.8 总结

模块关键操作目的
低内存优化调整 dirty_* 参数防止 OOM,保障流畅性
网络基础启用 lo,设主机名提供基本网络能力
内存管理overcommitmin_free_order优化内存分配与碎片
ZRAM开放 writeback 权限支持智能内存压缩
F2FS 调优cp_intervaldiscard_maxra_mul提升性能、降低功耗、减少卡顿
硬件控制chown CPU、LED、Vibrator、TCP允许系统服务动态调节硬件
诊断分区挂载 diag,创建目录支持厂商调试与故障诊断
网络优化tcp_def_init_rwnd=60加速应用首次加载
服务启动class_start halcore启动 HAL 与核心服务,迈向开机完成


文章转载自:

http://WWrVfrN4.mwrsg.cn
http://f1wz8C8N.mwrsg.cn
http://DNShIWKO.mwrsg.cn
http://64bQOS9T.mwrsg.cn
http://6C1G478J.mwrsg.cn
http://cDJVYlVv.mwrsg.cn
http://5IOaLoX9.mwrsg.cn
http://tVyT6SOU.mwrsg.cn
http://p7eIjTRy.mwrsg.cn
http://6j3LEibm.mwrsg.cn
http://pwB8F3Aa.mwrsg.cn
http://RO8NbatG.mwrsg.cn
http://9zbOnzhD.mwrsg.cn
http://krygd7JO.mwrsg.cn
http://7awDqEZb.mwrsg.cn
http://IbF2WguC.mwrsg.cn
http://mMGe3pGf.mwrsg.cn
http://skFNN7ha.mwrsg.cn
http://gYVHir8c.mwrsg.cn
http://TwAxOKCo.mwrsg.cn
http://UcB40wzB.mwrsg.cn
http://A3JHpQJV.mwrsg.cn
http://79nPLyog.mwrsg.cn
http://6VJYde5E.mwrsg.cn
http://bKqX5eSL.mwrsg.cn
http://XW7gpwNd.mwrsg.cn
http://0WJHs4Kb.mwrsg.cn
http://lkw89lJp.mwrsg.cn
http://bLztY5Pd.mwrsg.cn
http://kK3orOAP.mwrsg.cn
http://www.dtcms.com/a/374343.html

相关文章:

  • PYQT5界面类继承以及软件功能开发小记
  • 【机器学习】吴恩达机器学习笔记
  • UE5 性能优化(1) 模型合并,材质合并
  • Selenium4+Pytest自动化测试框架实战
  • 基于RK3568多网多串(6网+6串+2光)1U/2U机架式服务器在储能与电力的应用
  • 【Python】运动路线记录GPX文件的操作API函数,以及相关GUI界面(支持复制、拼接、数据生成、修改,SRT字幕生成等功能)
  • 西嘎嘎学习 - C++vector容器 - Day 7
  • 第三章:Python基本语法规则详解(二)
  • Next系统总结学习(一)
  • 备考系统分析师-专栏介绍和目录
  • 【rk3229/rk3228a android7.1 LPDDR EMMC EMCP 批量sdk】
  • Kali 自带工具 dirb:Web 路径扫描与 edusrc 挖掘利器
  • 【系统分析师】第2章-基础知识:数学与工程基础(核心总结)
  • 房屋安全鉴定机构评价
  • JAVA:io字符流FileReader和FileWriter基础
  • 从零深入理解嵌入式OTA升级:Bootloader、IAP与升级流程全解析
  • 7.0 热电偶的工作原理
  • GPT(Generative Pre-trained Transformer)模型架构与损失函数介绍
  • 【51单片机】【protues仿真】基于51单片机公交报站系统
  • linux常用命令(2)——系统管理
  • Yarn介绍与HA搭建
  • 记个笔记:Cocos打包安卓使用安卓通信模块
  • 基于Python的云原生TodoList Demo 项目,验证云原生核心特性
  • 2025年- H121-Lc28. 找出字符串中第一个匹配项的下标(数组)--Java版
  • 【底层机制】auto 关键字的底层实现机制
  • 【代码随想录算法训练营——Day6(Day5周日休息)】哈希表——242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和
  • leedcode 算法刷题第二八天
  • KafKa教程
  • 如何在 Ubuntu 22.04 中安装 Docker 引擎和 Linux 版 Docker Desktop 桌面软件
  • 基于RK3568/RK3588+全隔离串口+多电力协议接入电力网关机,用于新能源光伏风能等电站监测运维