《手把手教你做平板电脑12-Linux引导过程.docx》由会员分享,可在线阅读,更多相关《手把手教你做平板电脑12-Linux引导过程.docx(5页珍藏版)》请在第一文库网上搜索。
1、疯壳.嵌入式平板开发严禁复制Linux引导过程疯壳嵌入式平板开发详情地址:https:fengke.club/GeekMcrt/views/offline/end/oid视频地址:https:/fengke.club/GeekMart/su f5W0Cuz3p.ispLinux引导过程Linux内核与Android系统linux内核有什么区别?什么是引导装载程序?什么是Zygote?什么是init.rc?什么是系统服务?第一节Android启动步骤图1第二节 引导程序一 Boot Loader源代码目录:$(dir)rk3128-sourceu-boot第三节内核一 KernelAndroid
2、内核就是Linuxo内核启动时:设置硬件,挂载文件系统,执行第一个应用程序inito第四节Init进程init是第一个进程,可以说它是root进程或者所有进程的父进程。init进程有两个责任,一是挂载目录,比如/sys、/dev、/proc,二是运行init.rc脚本。对于init.rc文件,Android中有特定的格式以及规则。在Android中,我们叫做Android初始化语言。init.rc 位于目 :$(dir)rk3128-sourcedevicerockchiprksdkAndroid初始化语言由四大类型的声明组成,即Actions (动作)、Commands (命令)、Servi
3、ces (服务)、以及 Options (选项)。Action (动作):动作是以命令流程命名的,有一个触发器决定动作是否发生。语法:on Service是init加载的和是退出重启的(可选)程序。Service具有如下格式:service *Options (选项)选项是对服务的描述,它们影响init进程如何以及何时启动服务。来看看默认的init.rc文件。这里只列出了主要的事件以及服务。Table图2Action/Service描述,.设置init进程以及它创建的子进程的优先级,设置init进程的安全环on early-init境on init设置全局环境,为cpu accounting创
4、建cgroup(资源控制)挂载点on fson post-fson post-fs-dataon bootservice servicemanager挂载mtd分区改变系统目录的访问权限service zygote启动zygote作为应用进程改变/da ta目录以及它的子目录的访问权限基本网络的初始化,内存管理等等启动系统管理器管理所有的本地服务,比如位置、音频、Shared preference.在这个阶段你可以在设备的屏幕上看到“android” logo 了。第五节Zygote在Java中,不同的虚拟机实例会为不同的应用分配不同的内存。但如果Android系统为每一个应用启动不同的Dal
5、vik虚拟机实例,就会消耗大量的内存以及时间。因此,为了克服这个问题,Android系统创造了“ Zygote,Zygote让Dalvik虚拟机共享代码、低内存占用以及最小的启动时间成为可能。第六节系统服务或服务完成了上面几步之后,运行环境请求Zygote运行系统服务。系统服务同时使用native以及java编写,系统服务可以认为是一个进程,系统服务包含了所有的System ServicesoZygote创建新的进程去启动系统服务,可以在Zygote In it类的 st artSy stem Server”方法中找到源代码。第七节引导完成一旦系统服务在内存中跑起来了,Android就完成了引导过程。在这个时候“ACTION_BOOT_COMPLETED开机启动广播就会发出去。第八节实验init.rc 中增加一条启动参数 setprop fengke.test 100第九节实验现象系统启动后用getprop fengke.test来看是否这个值已经写入图3shellrk312x:/ $ getprop fengke.test100shellrk312x:/ $