最新消息:

请问GRUB是什么?怎么区分各个分区?怎么在menu.lst里确定该用(hd0,1)还是(hd1,0)?

grubdos 大步 3961浏览 0评论

请问GRUB是什么?怎么区分各个分区?怎么在menu.lst里确定该用(hd0,1)还是(hd1,0)?
:idea:
GRUB是一个引导程序,它被安装在MBR(Master Boot Record即“主引导记录”)用于在启动时告诉电脑该启动哪一个OS(Operation System即“操作系统”),具体请看这里:
http://zh.wikipedia.org/w/index.php?tit ... iant=zh-cn
包括windows在内,每一个OS都需要引导才能启动,windows的引导程序是MS的ntload(NT内核的系统,如XP,Vista),安装XP 时会自动安装(不需要也不会询问你是否愿意),它只会寻找已被激活的主分区并把控制权交给这个分区的引导区(不是MBR)。而GRUB就要强大得多了,它不但可以完成ntload的动作(即引导windows),而且可以引导linux、Mac OS,solaris,free BSD等等,而且可以在出错时报错,并提供简单的用户交互(命令行)。当然由于都要安装到MBR,所以GRUB不能和ntload共存于同一块硬盘(grub4dos除外)。

GRUB会将BIOS检测到的所有硬盘编号,从0开始计数,0,1,2,3……,所以就是hd0,hd1,hd2,hd3……,hd就是hard disk即硬盘(SATA和IDE硬盘都是hd)。
那么到底那一块硬盘对应hdx呢?
首先,如果你是单硬盘的话,不用想了,只会是hd0。那么如果有两块或更多的硬盘呢?你可以这样:在开机检测出现BIOS画面时,等到全部硬盘的数据出现时,立即按下“Pause”键(我的位于“Page Up”键的上方),这时启动过程会暂停,然后仔细看看吧。比如我有四块硬盘————两块IDE的,分别是40G、160G,还有两块SATA的,分别是 80G和320G。BIOS检测顺序是这样:IDE40,IDE160,SATA320,SATA80,所以GRUB表示为:IDE40(hd0),IDE160(hd1),SATA320(hd2),SATA80(hd3),就这样啦,赶快记下吧!
注意:这里有一个变数:启动盘顺序。
还是上面的例子,因为我的GRUB安装在SATA320的MBR,并且平时就是用这块硬盘启动电脑,所以这时候SATA320中的GRUB认为我的硬盘应该这样编号:SATA320(hd0),IDE40(hd1),IDE160(hd2),SATA80(hd3)
呵呵,明白了吧!GRUB编号的原则是这样的:
1.多快硬盘的顺序完全照抄BIOS检测结果;
2.启动盘一定是hd0(不管BIOS如何),其他硬盘依次按BIOS检测结果重排。
3.不管IDE还是SATA,一律认作IDE硬盘!即不使用类似(sd0,0)这样的编号,这个和linux的方式不同喔!
好了,搞清楚硬盘顺序再来看看硬盘分区是怎么编号的。
大家知道同一块硬盘最多只能共存四个主分区,所以对于hd0硬盘,依次是(hd0,0)、(hd0,1)、(hd0,2)、(hd0,3),这是只分出四个主分区的情况,这个编号永远固定不变;
不过这样的话,你就无法使用更多的分区了,所以通常应该牺牲掉一个主分区(通常是最后一个)把它转换为扩展分区(extend),以便在其中再细分出更多的逻辑分区(logic,注意和卖鼠标那个公司没关系啊)。
扩展分区可能是(hd0,0~3)其中的任何一个,这个编号永远不会在menu.lst中被使用,原因自己想想喽。
逻辑分区一律从(hd0,4)开始编号(因为0~3被主分区占据了),依次为(hd0,4)、(hd0,5)、(hd0,6)、(hd0,7)……
ok,对于大多数人来说,两个以上的主分区根本没用,所以惯常的做法是————一个主分区、一个扩展分区、若干个逻辑分区。所以,惯常会使用在同一块硬盘上的编号是:(hd0,0)、(hd0,4)、(hd0,5)、(hd0,6)……。以此类推,第二硬盘是 (hd1,0)、(hd1,4)、(hd1,5)、(hd1,6)……。
-------------------------------------------
题外话————这种方式好不好?
好!极好!非常好!好到没法说,没法说!
为啥?你用windows XP时用过双硬盘吗?添加过新硬盘吗?
有 过经验的人都知道,windows XP中经常会出现“盘符交错”的麻烦。如果你使用双硬盘并且都各自拥有一个已激活的主分区的话,嘿嘿,你确定你的“D盘”是第一硬盘的第二分区吗?不一定喔,它有可能是第二硬盘的第一分区!而你的第一硬盘的第二分区可能是“E盘”!第二硬盘的第二分区确可能又是“F盘”!……,我倒……
以上情况好像vista里已经得到改善了,在XP里并不是没有解决的方法,另外可能有人根本不在乎。
不过我很在乎,这个搞法我会发疯的!因为我经常把某个硬盘拆下装上,在两台计算机之间换来换去,你说能不发疯?以前在D盘的文件突然变成在E盘了,文件找找也就找到了,可是我装程序经常装到D盘、E盘(为了备份方便),咋整?再装一遍?那你自己整去吧,我可没那闲心!
还有,我的四块硬盘呢?服务器上几百块硬盘呢?不信你不发疯!
咋样?GRUB这个搞法是不是非常好!
-------------------------------------------
更加题外的话————linux的编号方法。
呵呵,这个简单了,严格按照BIOS检测结果,第一硬盘是sda,第二硬盘是sdb,第三硬盘是sdc……,而不管哪个是启动盘。
具体来说,我用第三硬盘启动的系统,GRUB认为它是(hd0),而linux依然认为它是sdc,明白?
另外,自8.04开始,所有硬盘都编号为“sdxx”,即不管IDE还是SATA,一律认作SCIS硬盘

转载请注明:大步's Blog » 请问GRUB是什么?怎么区分各个分区?怎么在menu.lst里确定该用(hd0,1)还是(hd1,0)?

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
SiteMap