对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体系。