深入理解linux的启动过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深入理解linux的启动过程
来源: ChinaUnix博客日期:2006.08.26 12:00(共有0条评论) 我要评论
自LUPA
//htm_data/233/0608/20516.html
链接:
//developerworks/linux/library/l-linuxboot/?ca=dgr-lnxw02LinuxBoot
x系统的启动过程是由很多步骤组成的,但是,无论你是启动一个标准的x86桌面计算机,还是一个嵌入式PowerPC的目标板,大程是惊人得相似的。这篇文章,探索了linux从最初的启动准备到用户空间中某个程序被开启之间的启动过程,跟随这个流程,你还能许多与启动有关的知识,例如,boot loaders,内核解压缩,初始化内存盘,以及其他一些linux启动的部分。
早的时候,启动一个计算机意味着去喂那些包含启动程序的纸带,或者通过手工使用前面板那密密麻麻的地址/数据/控制开关来加载但是,简化这个流程并非必须的。
们首先从一个较高的高度上来对linux的启动做一个全面的分析,然后,我们会回顾一下,在每一个独立的过程中,发生了什么事情中的参考源代码将帮助你在内核树中不至于迷失方向,并能继续深入挖掘下去。
章:概述
将是对启动过程的整体回顾:
统一开始被启动,或者重新启动时,处理器将在众所周知的位置执行代码。在个人电脑上,这个位置处于基本输入输出系统中,也就说的BIOS,它是被存储在主板上的闪存中的。在嵌入式系统中,中央处理器(CPU)则将复位区域激活,来开始执行flash或者ROM 的程序。在其它情况中,基本的过程是一样的。由于个人电脑提供了众多灵活的可选设备,BIOS必须确定,由哪一个设备来执行启动下来的文章中我们将涉及这方面的更多的内容。
到启动设备时,第一阶段所用的boot loader被装载到RAM中并被执行。这里的boot loader在大小上小于一个扇区的大小,也字节,而它的任务,就是加载第二阶段的boot loader。
责第二阶段的boot loader位于内存中并被执行时,通常会显示一个一闪而过的屏幕,然后linux以及可选的初始化内存盘(一种临件系统,如果想得到具体的介绍,请访问
//5502266.html
装载到存储器中。当系统镜像被加载时,第二阶段的boot loader将把控制权转交给内核镜像,与此同时,内核开始自解压并初始化阶段,第二阶段的boot loader会检查系统的硬件,枚举那些附加的硬件设备,挂载根设备,之后加载需要的内核模块。完成之后,户空间程序(init)开始执行,更高层次的系统初始化开始。
是从表面上看,linux的启动过程。好了,现在,让我们更进一步,更深入地探索linux启动过程中的一些细节。
章:系统的启动
启动的阶段,依赖于linux在哪个硬件设备上启动。在嵌入式系统中,当系统被打开或者重新启动的时候,就要使用启动加载的环境的例子包括U-BOOT,RedBoot,和Lucent推出的MicroMonitor。嵌入式平台通常是绑定了启动监视器的。这些程序位于目标硬
存储器的特定位置,提供了将linux内核镜像下载到flash存储器的方法,并在接下来的过程中执行它。除了拥有存储和启动linux 能外,这些启动监视器还能进行一定程度上的系统检测和硬件初始化。在一个嵌入式的目标板中,这些启动监视器通常覆盖了第一阶段段boot loader的功能。
*******************************************************************************************识:如何查看你的MBR内容。如果你希望查看你MBR的具体内容,请用以下命令:
d if=/dev/hda of=mbr.bin bs=512 count=1
d -xa mbr.bin
以root身份运行的dd命令,读取你的第一个集成电子驱动器或者IDE驱动器的前512字节,并将他们写入
.bim文件。od命令则是以十六进制和ASCII码形式打印出这个二进制文件
*******************************************************************************************人电脑中,linux的启动是从0xFFFF0地址开始的。BIOS的第一步动作就是进行上电自检(POST)。POST的工作是检查硬件设的第二步动作就是枚举本地设备并初始化。
BIOS功能使用上的不同,它由两个部分组成:POST码runtime服务。POST完成后,它将从存储器中被清除,但是BIOS run 会被保留,用于目标操作系统。
启动操作系统,BIOS的runtime服务将搜索那些激活状态的或是可引导启动的设备,搜索的顺序则由CMOS设置决定(也就是我谓的在BIOS中设置的启动顺序)。一个软驱,一台光驱,一个硬盘上的分区,网络上的设备甚至一个usb 闪存盘都可以作为一个启
,linux通常是从硬盘启动的。硬盘上的MBR(主启动记录)包含有基本的boot loader,它是一个512字节大小的扇区,位于磁个扇区(0磁头0磁道1扇区)。当MBR被装载到RAM中后,BIOS就会将控制权转交给MBR。
章第一阶段boot loader
MBR中的主boot loader是一个512字节的镜像,其中不仅包含了程序代码,还包含了一个小的分区表,如图2所示。最初的4主boot loader,它里面就包含有可执行代码以及错误消息文本。接下来的64字节是分区表,其中包含有四个分区的各自的记录(一6字节)。MBR通过特殊数字0xAA55(译者注:在电子界中AA55确实是具有
的数字,想知道为什么么?将它展开成二进制形式,看看有什么规律)作为两个字节的结束标志。0x55AA同时也是MBR有效的校验:MBR剖析
oot loader的工作是寻找并加载第二boot loader。它通过分析分区表,找出激活分区来完成这个任务,当它找到一个激活分区时,扫描剩下的分区表中的分区,以便确认他们都是未激活的。确认完毕后,激活分区的启动记录从设备中被读到RAM,并被执行。
章第二阶段boot loader
次作用,或者说是第二boot loader,可以更加形象得被称为内核加载程序。这个阶段的任务就是加载linux内核,以及可选的初始。
*****************************************************************/
识:GRUB阶段的boot loaders