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

Android14 init.rc各个阶段的主要操作

1. on early-init

类别关键操作目标
 安全加固禁用 sysrq、modprobe,设置 SELinux降低攻击面
内存/Cgroups创建 app/system cgroup,设置 swappiness为 LMKD 和进程调度做准备
文件系统创建 linkerconfig、/dev/net、fscklogs搭建基本运行环境
资源限制设置 nice、nofile、memlock防止资源滥用
APEX 初始化启动 apexd-bootstrap,更新链接器配置加载系统模块(如 SSL)
调试支持挂载 tracefs,创建 selftest 目录支持性能分析和自检
守护进程start ueventd处理设备热插拔事件
on early-init...//设置adb_keys的SELinux,防止adb被滥用restorecon /adb_keys	//确保OTA后处理脚本的SElinux权限restorecon /postinstall...//设置进程优先级从19到-20setrlimit nice 40 40	start ueventd//初始化APEXexec_start apexd-bootstrap	mount tracefs tracefs /sys/kernel/tracing gid=3012# create sys dirctorymkdir /dev/sys 0755 system system...

2. on init

on init阶段主要完成三件事:建调度组cgroups,初始化Binder IPC机制和启动基石服务。

2.1 建调度组cgroups

建调度组cgroups,为任务优先级调度提供底层支持。

  • 创建CPU调度性能层级stune(scheduler tuning nodes):包含foreground和foreground/tasks, background和background/tasks, top-app和top-app/tasks, rt和rt/tasks和rt/cgroup.procs, audio-app和audio-app/tasks, tasks, cgroup.procs。
    mkdir /dev/stune/foreground
    chown system system /dev/stune/foreground
    chmod 0664 /dev/stune/foreground/tasks
  • CPU利用率层接cpuctl(cpu utilization clamping):包括foreground, background, top-app, rt, system, system-background, dex2oa, tasks,cgroup.procs等
    mkdir /dev/cpuctl/foreground
    mkdir /dev/cpuctl/system-backgroundchown system system /dev/cpuctl/foreground
    chown system system /dev/cpuctl/system-backgroundchmod 0664 /dev/cpuctl/foreground/tasks
    chmod 0664 /dev/cpuctl/system-background/tasks
  • 磁盘I/O调度层级blkio:blackground,tasks, background/tasks,cgroup.procs,background/cgroup.procs。
    mkdir /dev/blkio/background
    chown system system /dev/blkio/background
    chmod 0664 /dev/blkio/background/tasks
    write /dev/blkio/background/blkio.weight 200
  • CPU核绑定cpuset:foreground,blackground,system-background,restricted,top-app,camera-daemon,audio-app
    mkdir /dev/cpuset/foreground
    copy /dev/cpuset/cpus /dev/cpuset/foreground/cpus
    copy /dev/cpuset/mems /dev/cpuset/foreground/memschown system system /dev/cpuset
    chown system system /dev/cpuset/foregroundchmod 0775 /dev/cpuset/system-background
    chmod 0664 /dev/cpuset/foreground/tasks

2.2 初始化Binder IPC机制

# Mount binderfs
mkdir /dev/binderfs
mount binder binder /dev/binderfs stats=global
chmod 0755 /dev/binderfssymlink /dev/binderfs/binder /dev/binder
symlink /dev/binderfs/hwbinder /dev/hwbinder
symlink /dev/binderfs/vndbinder /dev/vndbinderchmod 0666 /dev/binderfs/hwbinder
chmod 0666 /dev/binderfs/binder
chmod 0666 /dev/binderfs/vndbinder

2.3 启动基石服务

启动的服务包括:logd, lmkd, servicemanager, hwservicemanager, vndservicemangaer。

start logd      # 日志守护进程,必须最早启动
start lmkd      # 低内存杀手,监控内存压力
start servicemanager     # Binder 服务注册中心
start hwservicemanager   # HAL 服务注册中心
start vndservicemanager  # Vendor 服务注册中心
类别关键操作目标
资源调度

创建 stunecpuctlblkio、cpuset group

为nnapi-hal, camera-daemon创建stune和cpuctl group

为 AMS、LMKD 提供调度基础
IPC 通信挂载 binderfs,创建 /dev/binder 符号链接支持 Binder 通信
文件系统挂载 configfsbpfpstore,创建 /mnt/* 目录搭建存储与调试环境
安全加固设置 ASLR、mmap_min_addr、禁用 ICMP 重定向提升系统安全性
内核调优调整调度延迟、唤醒粒度、panic 行为优化性能与稳定性
 服务启动启动 logdlmkdservicemanager 等为后续 Zygote 启动铺路

2.4 其他操作

on init...# prepare directories for pass_through processmkdir /mnt/pass_through 0700 root rootmkdir /mnt/pass_through/0/emulated/0 0710 root media_rwmkdir /mnt/runtime 0700 root rootmkdir /mnt/runtime/full 0755 root root#挂载虚拟文件系统mount configfs none /configmount bpf bpf /sys/fs/bpf

http://www.dtcms.com/a/362263.html

相关文章:

  • authentication port-control auto 和 dot1x port-control auto
  • Shell 编程:正则表达式与文本处理器
  • 软考-操作系统-错题收集(1)进程P的页面变换
  • 分布式一致性算法相关
  • 【Audio】切换至静音或振动模式时媒体音自动置 0
  • 基于SpringBoot+MYSQL开发的师生成果管理系统
  • 解锁Git仓库瘦身秘籍,git-sizer真香警告
  • Next.js渲染模式:SSR、SSG与ISR揭秘
  • Python实现点云渲染可视化杂记(直接、彩虹渐变、柱状、饼状和T-SNE赋色)
  • The Algorithmic Foundations of Differential Privacy - 2
  • 8Lane V-by-One HS LVDS FMC Card
  • 【开题答辩全过程】以 智慧药店管理系统的实现与设计为例,包含答辩的问题和答案
  • 基于单片机智能空调/温度控制系统
  • GaussDB 集群故障cm_ctl: can‘t connect to cm_server
  • API安全厂商F5首发后量子加密方案,为企业后量子时代加固防线
  • Java中方法的参数传递
  • TFT屏幕:STM32硬件SPI+DMA+队列自动传输
  • 【无标题】训练、推理适用的数据类型
  • C++ 学习与 CLion 使用:(五)数据类型,包括整型、实型、字符型、转义字符、字符串、布尔型
  • 椭圆曲线的数学基础
  • 【算法专题训练】17、双向链表
  • openEuler2403部署Redis8集群
  • AI推理方法演进:Chain-of-Thought、Tree-of-Thought与Graph-of-Thought技术对比分析
  • Spring 控制器参数注解
  • LangGraph 边(Edge)机制完全指南
  • Java 不支持在非静态内部类中声明静态 Static declarations in inner classes are not supported异常处理
  • 2025我“生发”了『折行』|『内注』|『终端正偿』|『中文负偿』四大“邪术”(前二造福python代码阅读者;后二助力所有艺术人)
  • nrf52840 解锁
  • 2025年09月01日Github流行趋势
  • 数据结构初阶:详解栈和队列(下)——队列