linux 系统初始化可以分为两个部分: 内核初始化和系统初始化。操作系统是用户和计算机硬件之间的桥梁。操作系统管理整个系统的所有的硬件资源,并向用户应用程序提供接口,在操作系统初始化的时候,系统进行硬件自检,加载驱动并且设置软件环境;(http://blog.csdn.net/haishengflying/article/details/7862781)
1、嵌入式linux启动第-步 ——加载bios
计算机会首先加载bios信息:bios中包括cpu的相关信息,设备启动的顺序信息,硬盘信息,内存信息,时钟信息,内存信息,等;
2、读取mbr
硬盘第0磁道第一个扇区被称为mbr(Master Boot Record),即主引导记录,大小为512,里面存放了预启动信息、分区表信息。系统找到bios所制定的硬盘的msr后就会将其复制到物理内存中。被复制到物理内存中的内容就是boot loader ,而具体到电脑,就是lilo或者grub。
3、boot loader
boot loader 就是操作系统内核运行之前的一段小程序,通过这段小程序,我们可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件带到一个合适的状态,以便为最终调用操作系统内核做好准备。系统读取内存中的grub配置信息(一般为menu.list或者 grup.list),并依照此配置文件信息来启动不同的操作系统
4、加载内核
根据grub设定的内核影像所在的路径,系统读取内存影像,并进行解压操作。此时屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK,booting the kernel ”,系统将解压后的内核放置在内存中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成linux核心环境的建立。
5、用户层init依据inittab文件来设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件初始化工作,其实/etc/inittab文件最主要的作用就是设定linux的运行等级,其设定形式是“:id :initdefault:",这就表明linux需要运行在等级5上,Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持的x-window支持的多用户模式
6:重新引导系统,即重启
7:启动第六步——init进程执行rc.sysinit
设定运行等级后,linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,他的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等
原文地址:http://www.cnblogs.com/zl1990/p/3825647.html