第4章 linux系统初始化.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 linux系统初始化

第4章 系统初始化 当你想要运行程序时,你需要把程序的文件名敲入shell――或者更为流行的,在如GNOME或者KDE等之类桌面环境中点击相应的图标――这样就能将其装载进内核并运行。但是,首先必须有其它的软件来装载并运行内核;这通常是诸如LOADLIN或者LILO之类的内核引导程序。更进一步,我们还需要其它的软件来装载运行内核引导程序――称之“内核引导程序的引导程序”――而且看起来似乎运行内核引导程序的引导程序也需要内核引导程序的引导程序的引导程序,等等,这个过程是无限的。 这个无限循环的过程必然最终在某个地方终止,这就是硬件。因此,在最低的层次上,启动系统的第一步是从硬件中获得帮助。该硬件总是运行一些短小的内置程序――软件,但是这些软件是被固化在只读存储器中,存储在已知地址中。因此,在这种情况下就不需要软件引导程序了――它能够运行更大更复杂的程序,直到内核自身装载成功为止。按照这种方式,系统自己的引导过程(bootstrap)会引发系统的启动,当然这只是术语“系统引导(booting)”的一个比喻。虽然不同体系结构的引导过程的具体细节差异很大,但是它们的原则都基本相同。 前面的工作都完成以后,内核就已经成功装载了。随后内核可以初始化自身以及系统的其它部分。 本章首先将简单介绍基于x86 PC机的典型自启动方式,接着回顾一下每一步工作在什么时机发生,最后我们还要介绍的是内核的相应部分。 引导PC机 本节简要介绍x86 PC是如何引导的。本节的目的不是让你精通PC是怎样引导的――这超出了本书的范围――而是向你展示特定体系结构一般的引导方式,为下文中的内核初始化进行铺垫。 首先,机器中的每个CPU都要自行初始化,接着可能要用几分之一秒的时间来执行自测试。在多处理器的系统中,这个过程会更复杂些――但是实际上也并不多。在双处理器的Pentium系统中,一个CPU总是作为主CPU存在,另外一个CPU则是辅CPU。主CPU执行启动过程中的剩余工作,随后内核才会激活辅CPU。在多处理器的Pentium Pro系统中,CPU必须根据Intel定义的算法“抢夺标志”――来动态决定由哪个CPU启动系统。取得标志的CPU启动系统,随后内核激活其它的CPU。无论是哪种情况,启动程序的剩余部分只与一个CPU有关。这样,在随后的一段时间内,我们可以认为该系统中只有一个CPU是可用的,而不考虑其它的CPU,或者说这些CPU被暂时隐藏了。另一方面,内核还需要明确的激活所有其它的CPU――这一点你可以在本章后续部分看到。 接下来, CPU从0xfffffff0单元中取得指令并执行,这个地址非常接近于32位CPU的最后可用的地址。因为大多数PC都没有4GB的RAM,所以通常在这个地址上并没有实际内存的。内存硬件可以虚拟使用它。对那些确实有4GB内存的机器来说,它们也只是仅仅损失了供BIOS使用的顶端地址空间末尾的少量内存(实际上BIOS在这里只保留了64K的空间――这种损失在4GB的机器中是可以忽略的)。 该地址单元中存储的指令是一条跳转指令,这条指令跳转到基本输入输出(BIOS)代码的首部。BIOS内置在主板中,它主要负责控制系统的启动。请注意CPU实际上并不真正关心BIOS是否存在,这样就使得在诸如用户定制的嵌入系统之类的非PC体系结构的计算机中使用Intel的CPU成为可能。CPU执行在目标地址中发现的任何指令,在这里使用跳转指令转移到BIOS只是PC体系结构的一部分。(实际上,跳转指令自己是BIOS的一部分,但是这不是考虑这个问题的最方便的方法。) BIOS使用内置的规则来选择启动设备。通常情况下,这些规则是可以改变的,方法是在启动过程开始时按下一个键(例如,在我的系统中是Delete键)并通过一些菜单选项浏览选择。但是,通常的过程是BIOS首先试图从软盘启动,如果失败了,就再试图从主硬盘上启动。如果又失败了,就再试图从CD-ROM上启动。为了使问题更具体,这里讨论的情况假定是最普通的,也就是启动设备是硬盘。 从这种启动设备上启动,BIOS读取第一个扇区的信息――首512个字节――称之为主引导记录(MBR)。接下来发生的内容有赖于Linux是怎样在系统上安装的。为使讨论形象具体,我们假定LILO是内核的载入程序。在典型的设置中,BIOS检测MBR中的关键数字(为了确认该数据段的确是MBR)并在MBR中检测引导扇区的位置。这一扇区包含了LILO的开始部分,然后BIOS将其装入内存,开始执行。 注意我们现在已经实现了从硬件和内置软件的范围到实际软件范围的转变,从有形范围到无形范围,也就是说从你可以接触的部分到不可接触的部分。 下面就是LILO的责任了。它把自己其余的部分装载进来,在磁盘上找到配置数据,这些数据指明从什么地方可以得到内核,启动时要通过什么选项

文档评论(0)

aining + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档