• 2004-04-07

    引导在哪里?

    Tag:向下走

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/131229.html

    操作系统讲什么?快翻开你那本落满灰尘的操作系统教材看看。
    我的答案来自给了Linus开创世纪动力的《Operating Systems: Design and Implementation》(中文版《操作系统:设计与实现》)。除了前面的引言和后面的代码,书中讲到了进程、输入/输出系统、存储器管理、文件系统。

    不知道你有没有想过这样一个问题,操作系统如何开始自己的旅程。
    想当年,我兴致勃勃的准备以“好好学习,天天向上”的态度认认真真的学学操作系统。结果没有几天,我就被这个问题捆住了,久久不得解脱。

    当我通过各种渠道对操作系统的启动过程有了些许的认识时,另一个问题又冒了出来。既然启动是操作系统必不可少的一部分,那为什么各种操作系统教材对它却如此不屑。
    我能想到的答案只有平台差异。不是吗?大家有着各自的机器结构、有着各自的汇编。胆敢涉足此处,千差万别的细节足以让所谓的权威论断碰得头破血流。

    如果不是听说了Multiboot Specification,我一定会坚持认为自己得到就是标准答案。

    在Multiboot Specification出现之前,几乎每个OS都拥有自己的boot loader。也许你知道Boot loader要占据你可爱的硬盘上唯一的MBR(Master Boot Record,主引导扇区),如果每个OS要有自己的boot loader的话,那结果只能是只有一个操作系统可以启动。想像现在这样既装Linux又装Windows显然是不现实的。

    如果能够制订一套游戏规则,大家按照统一的方式启动,上面的问题也就迎刃而解了。在众多自由操作系统开发者的共同努力之下,Multiboot Specification应运而生。
    可能Multiboot Specification现在还只是在你眼前闪亮的新名词。如果我请出GRUB和LILO两个大名鼎鼎的名字,不知能否让你产生一丝亲切感。它们两个就是遵循Multiboot Specification的boot loader,Multiboot Specification的制订者之一就是GRUB的创始人Erich Boleyn。正是GRUB和LILO这样的boot loader的存在,我们才能过上Linux和Windows和平共处的生活。这样的boot loader替我们完成了本来要由我们自己的工作,对于我们的PC而言,这些工作可能加载内核、切换至保护模式、设置内核参数等等。

    回头看看我先前的问题。
    Multiboot Specification的出现,使得大家可以共享一个boot loader,于是boot loader变不再是操作系统的一部分了。
    这是由于这个原因,后来的开发者可以将更多的把精力集中在操作系统内核的开发上,至于那些繁琐的引导细节,我们就当它不存在吧!
    也许有人要说,不自己开发boot loader,我如何掌控全局?
    即便自己开发boot loader,加载MBR的过程依然由机器完成,我们不可能100%的掌控全局,支持不自己开发boot loader的另外一个理由就是众所周知的“不要重新发明轮子”。自己学习当然例外。

    这就是开放的力量,没有开放,累傻小子去吧!
    说到开放,不得不再说微软几句。尝试过Linux和Windows共存的朋友一定体会过重装Windows找不到Linux的悲惨。原因很简单,Windows的boot loader不符合Multiboot Specification,一旦它抢占了MBR这块高地,其它系统就只能忍气吞声了。
    微软霸道,无处不在!

    分享到:

    历史上的今天:

    舒舒服服 2005-04-07
    引用地址:

    评论

  • "几乎每个OS都拥有自己的boot loader...Boot loader要占据你可爱的硬盘上唯一的MBR"

    -- in the good old days, IPL in the MBR just finds the active primary partition, and load its bootrec-- you may have different versions of IPL, but they will do much the same thing (unless you install multiboot OS loader like GRUB on the MBR).


    "尝试过Linux和Windows共存的朋友一定体会过重装Windows找不到Linux的悲惨"

    -- in fact this is not the fault of Windows. unlike widespread rumors, Windows will setup a pretty standard MBR. the bad thing is that it just do this without asking for permission. so, if you have a non-standard MBR (e.g. you "hook" the MBR with some multiboot/recovery software) it would be gone. if GRUB is installed to some partition *instead of* to MBR, everything will be alright.
  • Multiboot Specification is only a spec, not an industry standard. MS is free to support or not to support it..



    BTW, maybe you will also be intrested in what happens when a machine power on. Just a JMP, same the OS boot.
    回复Mike说:
    多谢提醒!我确实对OS比较感兴趣,希望可以得到您的指点。
    2004-04-08 19:18:41