(Tiny210Source)启动分析Tiny210的入口:/linuxrc,该程序并不开源,从符号表信息推测其加入触摸屏校准的功能,最终调用Android的/sbin/init。:保姆(打扫卫生),父亲(制造儿子)谁找她:她干爹(内核或者switch_root切换)代码阅读指数:★★★★★重点阅读函数:*main入口*(注意这里默认的service不指定class属性,则默认的classname为"default",)*service_start启动服务思考:**,以On开头的"ACTION",以service开头的"Service"。具体请参考Android源码system\core\init\“ACTION”,定义启动顺序的流程(early-init,XXXXX这里省略后面详细说init,early-fs,fs,post-fs,early-boot,boot)。它的触发是被动的,,如前面所述,可以理解为信号触发及回调。基本格式:on<action><command><command><command>*以service打头的"SERVICE",顾名思义,服务服务,为别人服务,是属于预先定义,后被调用的。其格式如下:service<name><command><option><option><option>例如ueventd的启动预先定义ueventd服务:serviceueventd/sbin/ueventdcritical#critical表示关键服务,如果服务在4分钟内重启超过4次,将重启进入恢复模式启动ueventd服务onearly-,最多支持32个,在运行程序execve时,作为第三个参数传入symlink链接实际调用symlink函数oldpathnewpathmkdir建立文件夹:mkdir<path>[mode][owner][group]mount挂载文件系统:mount<type><device><path><flags...><options>write往指定文件输出内容:write<file><content>chown改变指定文件的所有者,组ID可选chown<file><uid><gid>chmod改变制定文件的权限chmod0777<file>ifup设置某个网络端口属性为up(|=IFF_UP;)hostname设置hostname,即write_file("/proc/sys/kernel/hostname",args[1])domainname设置域名,即write_file("/proc/sys/kernel/domainname",args[1]);setrlimit设置系统资源,例如设置调度优先级等,,具体的Service跟/。,init严格按照该流程启动程序。注:蓝色,只在代码中定义的ACTIONACTION说明early-init启动ueventdwait_for_coldboot_done等待ueventd初次初始化设备节点,并进入循环property_init初始化property,读取/??console_init在FBCONSOLE上打印提示消息,可以是565格式的图片(/),也可以是默认的Android提示..set_init_properties处理/proc/cmdline的参数(import_kernel_nv),增加至property中。(这里可以传入工厂参数儿进入工厂测试模式)init设置环境变量,建立必要的文件系统结构,建立cgroup(一种可设置进程的C
Android 启动流程分析 来自淘豆网m.daumloan.com转载请标明出处.