file-type

Android 启动流程分析:init.c 和 init.rc 的实现机理

下载需积分: 48 | 172KB | 更新于2024-07-30 | 72 浏览量 | 62 下载量 举报 收藏
download 立即下载
Android 启动流程详解(init.c 和 init.rc 分析) Android 启动流程是 Android 系统的核心组件之一,init.c 和 init.rc 是启动流程的关键文件。本文将深入分析 init.c 和 init.rc 文件,详细解释 Android 启动流程的实现机理。 一、init.c 文件分析 init.c 文件是 Android 启动流程的入口文件,负责初始化 Android 系统的基本环境。main 函数是 init.c 文件的入口点,main 函数的主要任务是: 1. 安装 SIGCHLD 信号处理函数 sigchld_handler,以处理僵尸进程的资源回收。 2. 清除 umask,以确保文件权限的正确设置。 3. 创建基本文件系统 setup,包括建立 /dev、/proc、/sys 文件夹,并挂载 tmpfs、devpts、proc、sysfs 文件系统。 init.c 文件的主要函数调用流程为: 1. sigaction(SIGCHLD, &act, 0):安装 SIGCHLD 信号处理函数 sigchld_handler。 2. umask(0):清除 umask,以确保文件权限的正确设置。 3. mkdir() 和 mount():创建基本文件系统 setup,包括建立 /dev、/proc、/sys 文件夹,并挂载 tmpfs、devpts、proc、sysfs 文件系统。 二、init.rc 文件分析 init.rc 文件是 Android 启动流程的配置文件,用于定义系统服务的启动顺序和参数。init.rc 文件的主要内容包括: 1. 服务定义:定义系统服务的名称、参数和启动顺序。 2. 服务启动:根据服务定义,启动相应的系统服务。 init.rc 文件的语法规则为: 1. 服务定义语法:service <name> <pathname> [<argument>]*。 2. 服务启动语法:start <service_name>。 三、Android 启动流程详解 Android 启动流程可以分为三个阶段: 1. init.c 阶段:init.c 文件负责初始化 Android 系统的基本环境,包括安装 SIGCHLD 信号处理函数、清除 umask 和创建基本文件系统 setup。 2. init.rc 阶段:init.rc 文件负责定义系统服务的启动顺序和参数,并启动相应的系统服务。 3. 系统服务阶段:系统服务启动后,开始提供相应的服务,例如网络服务、文件系统服务等。 四、结论 Android 启动流程是 Android 系统的核心组件之一,init.c 和 init.rc 文件是启动流程的关键文件。通过分析 init.c 和 init.rc 文件,我们可以深入了解 Android 启动流程的实现机理,并更好地掌握 Android 系统的启动机制。

相关推荐

filetype

1.2.14\AirtestIDE\airtest\core\android\static\adb\windows\adb.exe -P 5037 -s f19e7fbe shell ls [21:51:10][ERROR]<airtest.core.api> Traceback (most recent call last): File "airtest\core\android\adb.py", line 374, in shell File "airtest\core\android\adb.py", line 332, in raw_shell File "airtest\core\android\adb.py", line 197, in cmd airtest.core.error.AdbError: stdout[b'acct\r\napex\r\nbin\r\nbugreports\r\ncache\r\ncharger\r\nconfig\r\ncust\r\nd\r\ndata\r\ndebug_ramdisk\r\ndefault.prop\r\ndev\r\netc\r\nlost+found\r\nmnt\r\nodm\r\noem\r\nproc\r\nproduct\r\nproduct_services\r\nres\r\nsbin\r\nsdcard\r\nstorage\r\nsys\r\nsystem\r\nvendor\r\n'] stderr[b'ls: ./init.zygote64_32.rc: Permission denied\r\nls: ./init.rc: Permission denied\r\nls: ./init.usb.rc: Permission denied\r\nls: ./ueventd.rc: Permission denied\r\nls: ./init.zygote32.rc: Permission denied\r\nls: ./init.recovery.hardware.rc: Permission denied\r\nls: ./init: Permission denied\r\nls: ./init.miui.google_revenue_share_v2.rc: Permission denied\r\nls: ./init.miui.cust.rc: Permission denied\r\nls: ./init.environ.rc: Permission denied\r\nls: ./init.miui.post_boot.sh: Permission denied\r\nls: ./init.miui.qadaemon.rc: Permission denied\r\nls: ./verity_key: Permission denied\r\nls: ./init.recovery.qcom.rc: Permission denied\r\nls: ./init.miui.rc: Permission denied\r\nls: ./init.usb.configfs.rc: Permission denied\r\nls: ./init.exaid.hardware.rc: Permission denied\r\nls: ./init.miui.google_revenue_share.rc: Permission denied\r\nls: ./init.miui.nativedebug.rc: Permission denied\r\nls: ./init.miui.early_boot.sh: Permission denied\r\nls: ./metadata: Permission denied\r\n'] During handling of the above exception, another exception occurred:

hjy026
  • 粉丝: 0
上传资源 快速赚钱