《手把手教你做平板电脑12Linux引导过程.docx》由会员分享,可在线阅读,更多相关《手把手教你做平板电脑12Linux引导过程.docx(5页珍藏版)》请在第一文库网上搜索。
1、1inux引导过程疯壳嵌入式平板开发详情地址:https:fenke.dub/GeekMart/views/Off1ine/android视频地址:https:/fengke.c1ub/GeekMart/suf5W0Cuz3p.jsp1inUX引导过程1inux内核与Android系统Iinux内核有什么区别?什么是引导装载程序?什么是Zygote?什么是init.rc?什么是系统服务?第一节AndrOid启动步骤DemonZygoteDaIvikVMManagersRuntimeServiceManager图1第二节引导程序一Boot1oader源代码目录:S(dir)rk3128-sour
2、ceu-boot第三节内核Kerne1Android内核就是1inuxo内核启动时,设置硬件,挂载文件系统,执行第一个应用程序inito第四节Init进程init是第一个进程,可以说它是root进程或者所有进程的父进程。init进程有两个责任,一是挂载目录,比如/sys、/dev、/proc,二是运行init.rc脚本。对于init.rc文件,AndrOid中有特定的格式以及规则。在AndrOid中,我们叫做Android初始化语言。init.rc位于目$(dir)rk3128-sourcedevicerockchiprksdkAndrOid初始化语言由四大类型的声明组成,即Actions(动
3、作)、Commands(命令)、Services(服务)、以及Options(选项)。Action(动作):动作是以命令流程命名的,有一个触发器决定动作是否发生。语法:onSerViCe是init加载的和是退出重启的(可选)程序。SerViCe具有如下格式:service*Options(选项)选项是对服务的描述,它们影响init进程如何以及何时启动服务。来看看默认的intrc文件。这里只列出了主要的事件以及服务。Tab1e图2Action/Service描述,.设置ini陋程以及它创建的子进程的优先级,设置init进程的安全环onear1y-nt境oninit设置全局环境,为CPUaccou
4、nting创建cgroup(资源控制)挂载点onfs挂载mtd分区onpost-fs改变系统目录的访问权限onpost-fs-data改变/data目录以及它的子目录的访问权限onboot基本网络的初始化,内存管理等等serviceserviceman启动系统管理器管理所有的本地服务,比如位置、音频、Sharedpragereference.servicezygote启动zygote作为应用进程在这个阶段你可以在设备的屏幕上看到“android1og。了。第五节Zygote在JaVa中,不同的虚拟机实例会为不同的应用分配不同的内存。但如果Android系统为每一个应用启动不同的Da1vik虚拟
5、机实例,就会消耗大量的内存以及时间。因此,为了克服这个问题,Android系统创造了“Zygote,ZygOte让Da1vik虚拟机共享代码、低内存占用以及最小的启动时间成为可能。第六节系统服务或服务完成了上面几步之后,运行环境请求Zygote运行系统服务。系统服务同时使用native以及java编写,系统服务可以认为是一个进程,系统服务包含了所有的SystemServicesoZygote创建新的进程去启动系统服务,可以在ZygOteInit类的StartSyStemSerVer”方法中找到源代码。第七节引导完成一旦系统服务在内存中跑起来了,Android就完成了引导过程。在这个时候“ACTI0N_B00T_C0MP1ETED”开机启动广播就会发出去。第八节实验init.rc中增加一条启动参数setpropfengke.test100第九节实验现象系统启动后用getpropfengke.test来看是否这个值己经写入图3she1!Srk312x:/$getpropfengke.test100she1iark312x:/5