Linux的启动过程详解
Linux的启动流程(/etc/inittab) 1. 从BIOS到KERNEL BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动 BIOS自检 当电脑开机的时候,电脑会进入BIOS,BIOS的工作主要是侦测电脑的周边配套设备是否工作正常,如CPU的类型、速度、缓存等 主板类型 内存的速度,容量 硬盘的大小,类型和工作模式 风扇速度等 主要是为了检查这些设备在开机的时候是否能通过检测,如果能通过检测,说明电脑可以正常的工作. ----------------------------------------- 一、载入启动程序 BIOS自检完成后,BIOS会根据用户设置的启动顺序来由那个设备来启动电脑的操作系统,这个设备一般是硬盘. 也就是进入到硬盘的MBR区域(引导扇区),这个区域中的有512个字节的大小,其中前446个字节中保存的程序是选择启动分区,也就是电脑由那个硬盘分区来载入开机的程序.那么在这个446个字节的空间中保存的就是启动程序,然后由这个小程序来加载存储在其他位置的操作系统,也就是启动grub程序. 当找到启动设备(硬盘)时,第一阶段所用的boot loader(存放在引导扇区)被装载到RAM中并被执行.这里的boot loader在大小上小于一个扇区的大小,也就是512字节,而它的任务,就是加载第二阶段的boot loader. 当负责第二阶段的boot loader位于内存中并被执行时,通常会显示一个一闪而过的屏幕,然后linux以及可选的初始化内存盘(一种临时的根文件系统,如果想得到具体的介绍,请访问http://likunarmstrong.bokee.com/5502266.html)会被装载到存储器中.当系统镜像被加载时,第二阶段的boot loader将把控制权转交给内核镜像,与此同时,内核开始自解压并初始化.在这个阶段,第二阶段的boot loader会检查系统的硬件,枚举那些附加的硬件设备,挂载根设备,之后加载需要的内核模块.完成之后,第一个用户空间程序(init)开始执行,更高层次的系统初始化开始. 这就是从表面上看,linux的启动过程.好了,现在,让我们更进一步,更深入地探索linux启动过程中的一些细节.
二、 系统的启动 系统启动的阶段,依赖于linux在哪个硬件设备上启动.在嵌入式系统中,当系统被打开或者重新启动的时候,就要使用启动加载的环境.这方面的例子包括U -BOOT,RedBoot,和Lucent推出的MicroMonitor.嵌入式平台通常是绑定了启动监视器的.这些程序位于目标硬件上flash存储器的特定位置,提供了将linux内核镜像下载到flash存储器的方法,并在接下来的过程中执行它.除了拥有存储和启动linux镜像的功能外,这些启动监视器还能进行一定程度上的系统检测和硬件初始化.在一个嵌入式的目标板中,这些启动监视器通常覆盖了第一阶段与第二阶段boot loader的功能. /************************************************************************************************/ 小知识:如何查看你的MBR内容.如果你希望查看你MBR的具体内容,请用以下命令: # dd if=/dev/hda of=mbr.bin bs=512 count=1 # od -xa mbr.bin 需要以root身份运行的dd命令,读取你的第一个集成电子驱动器或者IDE驱动器的前512字节,并将他们写入 mbr.bim文件.od命令则是以十六进制和ASCII码形式打印出这个二进制文件 /************************************************************************************************/ 在个人电脑中,linux的启动是从0xFFFF0地址开始的.BIOS的第一步动作就是进行上电自检(POST).POST的工作是检查硬件设备.BIOS的第二步动作就是枚举本地设备并初始化. BIOS功能使用上的不同,它由两个部分组成: |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |