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中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=true
write /proc/sys/vm/dirty_expire_centisecs 200
write /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_rate
,hispeed_freq
,boost
等)。 - 实现 动态性能调节(如触控加速、应用启动加速)
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 ,设主机名 |
提供基本网络能力 |
内存管理 | overcommit , min_free_order |
优化内存分配与碎片 |
ZRAM | 开放 writeback 权限 |
支持智能内存压缩 |
F2FS 调优 | cp_interval , discard_max , ra_mul |
提升性能、降低功耗、减少卡顿 |
硬件控制 | chown CPU、LED、Vibrator、TCP |
允许系统服务动态调节硬件 |
诊断分区 | 挂载 diag ,创建目录 |
支持厂商调试与故障诊断 |
网络优化 | tcp_def_init_rwnd=60 |
加速应用首次加载 |
服务启动 | class_start hal , core |
启动 HAL 与核心服务,迈向开机完成 |