linux启动过程

上电自检POST(Power-on self test),主要负责检测系统外围关键设备(如:CPU、内存、显卡、I/O、键盘鼠标等)是否正常。例如,最常见的是内存松动的情况,BIOS自检阶段会报错,系统就无法启动起来;然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入引导块。我们以硬盘启动为例,BIOS此时去读取硬盘驱动器的第一个扇区(MBR,512字节),然后执行里面的代码。里面存放了预启动信息、分区表信息。其实被复制到物理内存的内容就是Boot Loader, Boot Loader有若干种,其中Grub和Lilo是常见的Loader。Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。我们以Grub为例来讲解吧,系统读取内存中的grub配置信息并根据grub设定的内核映像所在路径,系统读取内核映像,并进行解压缩操作。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,该文件最主要的作用就是设定Linux的运行等级。Linux的运行等级设定如下:

0:关机

1:单用户模式

2:无网络支持的多用户模式

3:有网络支持的多用户模式

4:保留,未使用

5:有网络支持有X-Window支持的多用户模式

6:重新引导系统,即重启

在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,读取网络环境设置文件、测试与载入内存设备/proc、加载内核的相关设置(/etc/sysctl.conf)等等、rc.sysinit所做的事情(不同的Linux发行版,该文件可能有些差异)。当/etc/rc.d/rc.sysinit执行完后,系统就可以顺利工作了,只是还需要启动系统所需要的各种服务,这样主机才可以提供相关的网络和主机功能,因此便会执行/etc/rc.d/rc脚本。该文件定义了服务启动的顺序,而具体的每个运行级别的服务状态是放在/etc/rc.d/rc*.d(*=0~6)目录下,所有的文件均是指向/etc/init.d下相应文件的符号链接。rc.sysinit通过分析/etc/inittab文件来确定系统的启动级别,然后才去执行/etc/rc.d/rc*.d下的文件。执行用户自定义引导程序/etc/rc.d/rc.local。完成了系统所有的启动任务后,linux会启动终端或X-Window来等待用户登录。

http://blog.chinaunix.net/attachment/201209/23/26495963_1348382510SRUx.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值