linux的开机启动过程
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-03-25
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.
启动第一步 加载BIOS
当你打开计算电源,计算机会加载BIOS信息.这是BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等.在此之后,计算机就知道应该去读取哪个硬件设备了.在BIOS将系统的控制权交给硬盘第一个扇区之后,就开始由LINUX来控制系统了.
启动第二步 读取MBR
硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,里面存放了预启动动信息、分区表信息.可分为两部分:第一部分为引导(PRE-BOOT)区,占了446个字节;第二部分分区表,共有66个字节,记录硬盘硬盘时分区信息.预引导区的作用之一是找到标记为活动的分区,并将活动分区的引导区读入内存.
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中.其实被复制到物理内在的内容就是Boot Loader,就是grub
启动第三步 BOOT LOADER
BOOT LOADER 就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适 的状态,以便为最终调用操作系统内核做好一切准备.通常,BOOT LOADER :是严重地依赖于硬件而实现的,不同体系结构的系统存在着不同的BOOT LOADER
系统读取内存中的grub配置信息,并依照此配置信息来启动不同的操作系统.
启动第四步 加载内核
根据grub设定的内核映像所在路径,系统读取内在映像,并进行解压操作.此时屏幕会输出“Uncompreeing Linux"的提示.当解压缩内核完成后,屏幕输出”OK booting the kernel ".
系统将解压后的内核放置在内存中,并调用start_kernel()函数来启动一系列的初始货柜函数并初始化各种设备,完成LINUX核心环境的建立.至此,linux内核已经建立起来了,基于LINUX的程序应该可以正常运行了.start_kenrel()中主要执行了以下操作:
在start_kenrel()结尾,内核通过kenrel_thread()创建出一个系统内核线程,该线程执行的是内核中的init()函数,负责的是下一阶段的启动任务.调用cpues_idle()函数:进入系统主循环体口默认将一直执行default_idle()函数中的指令,即CPU的halt指令,直到就绪队列中存在其他进程需要被高度时才会转向执行其他函数.此时,系统中唯一存在就绪状态的进程就是由kerne_head()创建的init进程(内核线程),内核并不进入default_idle()函数,而是转向init()函数继续启动过程 启动第五步 用户层init依据inittab文件来设定运行等级 内核被加载后第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来初始化工作. 其实/etc/inittab文件最主要的作用就是设定LINUX的运行等级,其设定形式是“:ID:5:INITDEFAULT:",这就表明LINUX需要运行在等级5上.LINUX的运行等级设定如下: 0:关机 1:单用户模式 2:无网络支持的多用户模式 3:有网络支持的多用户模式 4:保留 5:有网络支持有图行化桌面的支持的多用户模式 6:重新引导系统,即重启 启支第六步 init进程执行rc.sysinit 在设定了运行等级后,linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置、启动SWAP分区、设定/proc等等. 线程init的最终完成状态是能够一般的用户程序可以正常地被执行,从而真正完成可供应用程序运行的系统环境. init()函数结束,linux内核的引导部分才结束. 启动第七步 启动内核模块 具体是依据/etc/modules.conf文件来装载内核模块 启动第八步 执行不同运行级别的脚本程序 根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务. 启动第九步 执行/etc/rc.d/rc.local 分别初始化系统的定时器机制,软中断机制以及系统日期时间. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 为特定用户创建监牢 chroot下一篇: 逻辑卷管理器LVM的使用
关于linux的开机启动过程的所有评论