开门见山:
1、嵌入式linux启动第一步----Boot Loader
Boot Loader在这里我就不细说了,详细分析起来的话有很多内容,网上也有很多讲解很详细的文章。这段小程序中我们可以初始化硬件设备、建立内存空间的映射图,将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
2、嵌入式linux启动第二步----加载内核
假如你是从u-boot启动的话,可能会有很多方式来实现内核的加载。系统读取内存映像,并进行解压缩操作,此时屏幕一般会有一些供调试用的打印信息。内核解压好之后,系统将解压后的内核放在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此Linux内核已经建立起来了,也就是说核心的任务调度、多用户什么的功能都齐全了。可能有人会问我们在Boot Loader里面不是已经初始化了硬件了么?怎么还要初始化设备。这里原因说不好,Boot Loader里面确实是初始化了一些硬件设备,但是那些初始化只是临时的,系统起来之后的初始化会覆盖掉。你可以理解为Boot Loader里面初始化算是游击、土八路,真正系统起来才是正规军。
3、嵌入式linux启动第三步----用户层init依据inittab文件来设定运行等级
内核加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“xxx1:xxx2:xxx3:xxx4”其中xxx1是指入口标识符,xxx2是指init所处的运行等级,xxx3是指action,描述process的运行方式,xxx4是指process。
运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
4、嵌入式linux启动第四步----init进程执行rc.sysinit
在设定了运行等级之后,Linux系统执行的第一个用户文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。
5、嵌入式linux启动第五步----启动内核模块
依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
6、嵌入式linux启动第六步----执行不同运行级别的脚本程序
根据不同的级别设置,运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
7、嵌入式linux启动第七步----执行/etc/rc.d/rc.local
这是linux留给用户进行个性化的地方。可以把想设置和启动的东西放到这里。
8、嵌入式linux启动第八步----执行/bin/login程序,进入登陆状态
阅读(5218) | 评论(0) | 转发(0) |