对Android感兴趣的朋友都知道,Android系统是建立在Linux内核之上的。那么Linux内核和Android什么关系?Linux内核是怎样引导起Android呢?本文进行简单的描述。


     Android虽然建立在Linux内核之上,但是他对内核进行了一些扩展,增加了一些驱动。比如Binder,loger等等驱动。可以拿Android内核代码和其Baseline版本进行对比。可以看到Android对Linux内核的所有扩展。


     熟悉Linux启动的朋友知道,首先Linux引导完成之后,会启动用户态的init进程(pid为0),这个进程在整个系统运行过程中起着非常重要的作用,如果你对init进程不了解请查相关资料。init完成系统的初始化工作,然后进入shell,接收用户的输入。


     Android启动也没有什么神秘的,就是用自己的init进程替换了Linux内核的init进程,完成自己初始化工作(设备,文件系统等等初始化)。然后启动自己的虚拟机,程序等等的东西。Android的init进程的代码位于system/core/init/init.c下面,可以去查看其源码,来了解Android启动详细流程。Android启动流程的资料网上已经比较多,这里就不赘述了。


     可以看到移植Android过程中,调试init非常重要。因为所有和硬件平台相关的东西都这里初始化,所以init进程有可能需要移植或者配置。其他的进程都是和硬件无关的,理论上不需要修改就应该能够运行起来。


     经过上面的描述可以看出,Android的init进程起着一个承上启下的作用。承上——自动由Linux内核调用;启下——初始化Android各种设备和资源,然后启动Android相关的进程,直到引导起整个Android系统。

http://blog.csdn.net/xiaoxiongli/

http://blog.csdn.net/xiaoxiongli/article/details/49682547

http://tiyubisai.com/amdcdh/hgty/


更多相关文章

  1. Android应用程序进程启动过程(前篇)
  2. Android IPC机制(五)用Socket实现跨进程聊天程序
  3. Android系统启动流程(3) —— 解析SystemServer进程启动过程
  4. Android进程间通信(一):AIDL使用详解
  5. Android内核的简单分析
  6. Android Linux 内核介绍 (转)
  7. Android 5.0 Phone初始化分析
  8. Android启动流程分析(二) init进程的启动
  9. Android 5.0 Telephony关键类初始化和相互关系

随机推荐

  1. 同时兼容高低版本的setBackground跟setTe
  2. Android逆向实例笔记—那些搜不到的中文
  3. Android学习笔记(一):基本概念
  4. Android基础 - 对话框和浮动Activity
  5. 安装使用Android-x86打造快速流畅的Aandr
  6. 赵雅智_setImageResource和setImageBitma
  7. 疯狂android讲义(第三版)总结之 2.11 使用
  8. Android界面的.9.png图片显示出错,怎么回
  9. Android DrawerLayout 高仿QQ5.2双向侧滑
  10. Android基于特征码查杀手机病毒