|

楼主 |
发表于 2009-3-17 16:51:37
|
显示全部楼层
Post by lvchaxj;1962266
唉,解释一下吧。
首先:mbr是硬盘的第0磁道,也就是0~512B。里面分三部分,第一部分也就是你所谓的引导位置,其实是一段可执行程序,由BIOS自检完后调用执行。第二部分是硬盘分区表,第三部分是一个魔数,也就是你说的0x55AA。
其次:由grub装到mbr第一部分0~446B的是GRUB stage 1,它可以调用GRUB stage 1.5 或者 GRUB stage 2,执行到GRUB stage 2时,它会show一个框出来,让你选择boot哪个os。这个就由配置文件决定了。
再次:当你选择了需要boot的os后,GRUB会加载适当的内核或者加载另外的boot loader。
所以,看看你上面的若干错误,512KB??0磁道损坏了:如果是stage1坏了,请问你如何去调用stage1.5/2?又怎样来引导kernel?如果是分区表坏了,你怎么知道/boot分区在硬盘的什么地方?还有,/boot单独分区的意义,最好还是先google一下,就我而言,我觉得最大的好处就是就算格了/,只要/boot还在,grub还能用。
套用你的一段话:做技术最怕的就是想当然。有些重要的概念还是搞清楚为好......
我这边有什么错误,也请你指出来好了。
哈哈。有点意思。
0磁道坏可也通过很多方式调用INT13H。然后做到引导。比如光盘、软盘、有些主板的bios提供了INT13H编程接口可做扩展启动等等。
我阐述基本没有什么错误,除了512字节问题,确实单凭记忆有些出入。这方面的知识很还是l++的时候研究过,估计应该也有10年了。主要是没有按照白皮书的阐述而已。表达方式不同。相比兄台翻阅了很多资料。
你很完美。没有错误。
我是菜鸟。对不起让您费心了。^_^
希望您继续批判。
我也好多学点东西。
另外请高手多写教程。原创些菜鸟们看得懂的文章,并分享。作为高手请指点菜鸟,让菜鸟进步。 |
|