[
置顶
] Android
根文件系统启动过程
分类: 人阅读 评论收藏 举报
在 系统启动时,内核引导参数上一般都会设置“ !这样的话,如果内核成功
挂载了这个文件系统之后,首先运行的就是这个根目录下的 程序。这个程序所了什么
呢? 我们只有 "#$%("&#'($')))
程序源码在 官方源码的 中, 在 * 里。我们的分析就从
开始。
:
()安装 $+,%-./ 信号。(如果父进程不等待子进程结束,子进程将成为僵尸进程
(01)从而占用系统资源。因此需要对 $+,%-./ 信号做出处理,回收僵尸进程的资
源,避免造成不必要的资源浪费。)
()对 '( 进行清零。
222何为 '(,请看 &333*0'*&3456*&
(4)为 7 建立必要的文件夹,并挂载适当的分区。
222(7)
2222222
2222222(
222
22227
2创建' 和( 节点。
2()解析*,将所有服务和操作信息加入链表。
28从 中提取信息内核启动参数!并保存到全局变量。
(6)先从上一步获得的全局变量中获取信息硬件信息和版本号,如果没有则从'
7 中提取!并保存到全局变量。
()根据硬件信息选择一个*硬件*,并解析,将服务和操作信息加入链表。
222在 , 的 ( 根目录下有两个*硬件*:*7&* 和 *'*, 程序
会根据上一步获得的硬件信息选择一个解析。
(5)执行链表中带有“ 触发的的命令。
()遍历 文件夹,是内核产生设备添加事件(为了自动产生设备节点。
()初始化属性系统,并导入初始化属性文件。
()从属性系统中得到 *1'1,若为 ,則初始化 (& 監聽。
(4)打開 !如果 中沒有指定 則打開默認的
()讀取*(一張 8壓縮的位圖),如果成功則在&71 顯示
.!如果失敗則將 設為 9:;9 模式并打開!輸出文本“</"=+/ 字樣。
()判斷 中的參數,并设置属性系统中的参数
22222222、 如果 1 為
222222227!設置 *7 值為
222222227!設置 *7 值為
22222222其他的設 *7 值為
222222、如果有 参数,則設置 *,否則為>>