基于android2.3.5系统:Linux如何启动Andriod的守护进程init
来源:互联网 发布:深入浅出node 编辑:程序博客网 时间:2024/06/01 10:48
***************************************************************************************************************************
作者:EasyWave 时间:2013.07.28
类别:Android系统源码分析 声明:转载,请保留链接
注意:如有错误,欢迎指正。这些是我学习的日志文章......
***************************************************************************************************************************
一):Linux是如何Andriod的呢
我们都知道在Linux系统启动文件系统的时候,一般会在Linux内核中指定command line,如下所示:
从图片中我们可以看到,在linux内核的配置中,有个Boot options的选项,进入之后,我们可以看到有这样的一行命令:
console=ttySAC0 root=/dev/mtdblock2 rootfstype=cramfs init=/linuxrc
这行非常重要,要想成功的启动Andriod系统,最需要关注的是init=/linuxrc,这个在后面详细的讲解,现在我们来看看内核启动之后,都会干些什么事情呢,具体的情参考我的另一篇博文:MACHINE_START and MACHINE_END Macro define 这里面详细的介绍了Linux是如何启动的,这里我们只关注这个函数:static noinline int init_post(void)如下所示:
我们可以看到,内核启动后,会自动的去找前面指定的init=/linuxrc,如果找不到的话,那么他就会去找下面的/sbin/init、/etc/init等等。而在andriod的文件系统中正好是在根目录下有个linuxrc文件,如何看到呢,我们可以通过命令解压ramdisk.img,步骤如下[以OK6410的Andriod系统为例]:
在命令行输入命令: cp ramdisk.img ramdisk.img.gz
之后创建一个文件夹,如:mkdir test,然后复制ramdisk.img.gz到新建的test文件中,之后采用命令:gunzip ramdisk.img.gz进行解压,最后才采用如下的命令:
cpio -i -F ramdisk.img 就将文件系统解压出来了,如下所示:
我们可以在test文件夹中看到一个linuxrc的文件,如下所示:
最后,我们打开linuxrc文件看看里面的内容,如下所示:
看到最后一行/init的吗,不错,Linux内核是通过command line来加载linuxrc,进而linuxrc中加载了/init的Andriod的守护进程init。
- 基于android2.3.5系统:Linux如何启动Andriod的守护进程init
- 基于android2.3.5系统:Andriod与Linux交叉编译工具[一]
- 基于android2.3.5系统:Andriod与Linux交叉编译工具[二]
- 基于Android2.3.5系统:Android init.rc文件浅析
- Linux 守护进程的启动方法
- Linux 守护进程的启动方法
- Linux守护进程的启动方法
- Linux 守护进程的启动方法
- Linux 守护进程的启动方法
- Linux 守护进程的启动方法
- Linux启动中init进程的处理
- Linux守护进程(init.d和xinetd)
- Linux守护进程(init.d和xinetd)
- Linux守护进程(init.d和xinetd)
- Linux守护进程(init.d和xinetd)
- Linux守护进程(init.d和xinetd)
- Linux守护进程(init.d和xinetd)
- Linux守护进程(init.d和xinetd)
- 《Robust java》学习-第一章异常简介
- acm反思1
- 1014
- arm学习经验总结
- JSP内置对象
- 基于android2.3.5系统:Linux如何启动Andriod的守护进程init
- what is the location of the directory of c header files that match your running kernel -SLES11.2
- sgu 1348 Goat in the Garden 2【点到线段的距离】
- Java以UTF-8编码读写文件
- 微软SQLHelper.cs类 中文版
- 站在用户的良好体验角度考虑设计
- Kenel要实现用户所需要运行的正确结果,必须要管理的事项
- linux中查看线程的三种方法
- Union和Union All的区别