双硬盘多系统引导深入探究(原创)

发表于:2007-07-04来源:作者:点击数: 标签:
Linux和Windows 多系统共存时,引导过程相对来说比较复杂。而且容易引起一些错误概念。比如经常看到有的网友这样问:“我要引导XXXLinux,应该用Lilo,Grub,还是NTOSLoader?” 其实常见的Linux引导途径,只有引导软盘,Lilo,Grub,和在MS-DOS环境下用Loa

Linux和Windows多系统共存时,引导过程相对来说比较复杂。而且容易引起一些错误概念。比如经常看到有的网友这样问:“我要引导XXX Linux,应该用Lilo,Grub,还是NT OS Loader?”
其实常见的Linux引导途径,只有引导软盘,Lilo,Grub,和在MS-DOS环境下用Loadin.exe引导。而NT OS Loader是不能够引导Linux的。大家“所谓的”用NT OS Loader引导Linux时,中间都要通过Lilo或者Grub这一步。In another word,如果你的Linux安装时候就没有安装引导程序,而是打算一直用软盘引导的话,你也就无法用NT OS Loader去引导这个Linux。
用NT OS Loader引导Linux的过程应该是这样:NT OS Loader->grub (or lilo) ->Linux。
这个过程是通过如下几个步骤实现的:
1,在MBR或某个分区的引导扇区上安装Grub或者Lilo,使其成功引导Linux。
2,在Linux下用dd命令把被安装的Grub或者Lilo读出来并写在一个文件上,这个步骤相当于给Grub或者Lilo做了个备份,随后即使原来装Grub或者Lilo的地方被清除掉,也可以用留下来的这个文件借助NT OS Loader实现跟以前一模一样的引导过程。
3,修改Boot.ini让NT OS Loader引导刚才读出来的Grub或者Lilo。

至于这个被NT OS Loader 引导起来的Grub能干些什么,完全看你自己的配置,可以通过修改Menu.lst文件让他引导任何受支持的系统或者另外的引导程序。你可以让他引导仅仅一个Linux,并把默认时间设置为0,从而造成NT OS Loader直接引导Linux的假象。也可以让他引导从Linux到Unix,BSD的N个系统,排出长长的一个系统列表。我甚至曾经让NT OS Loader 和 Grub两者之间互相循环引导。
如此看来,NT OS Loader和Grub是平起平坐的,他们之间互相可以引导,但对于系统的支持却是各有自家的本事。NT OS Loader离开了Grub就别想引导Linux/Unix/BSD;而Grub虽说很强,也不可能绕过NT OS Loader对MS的NT4/2000/XP/Server2003直接进行引导。
但是像MS-DOS,Windows9X/Me这样的系统概念就模糊了。说得通俗一点,这类微软的早期系统既可以被NT OS Loader直接引导,也可以被Grub直接引导。如果你机器上只有一个MS-DOS/9X/Me,而没有NT OS Loader时就装了Grub的话,Grub就会直接引导这个系统。而如果你装Grub时已经有NT OS Loader,那么Grub就会通过NT OS Loader来引导这个系统。甚至可以这样:硬盘1上的NT OS Loader -> 硬盘1上的Grub -> 硬盘2上的 Windows9X/Me/MS-DOS。(符号->表示直接引导)

另外还有几点需要注意。
1,Grub理论上可以引导任何相同或不同硬盘上的NT OS Loader,但反之,想用NT OS Loader引导不同硬盘上的Grub却不行。这里不同硬盘上的Grub是指这个Grub在被dd成文件之前安装在跟NT OS Loader不同的硬盘上。
2,Grub和Grub之间可以直接互相引导(不过互相循环引导次数过多会内存溢出而死机,即使中间通过NT OS Loader来间接引导也不能避免,Grub对内存的要求似乎比NT OS Loader高),但NT OS Loader和NT OS Loader之间却不可以。只能通过Grub把两个NT OS Loader连起来。使之可以间接互相引导。而这样连起来的两个NT OS Loader即使互相循环引导次数再多也不会出现错误。
3,同一台机器上的一个Linux可以被不同的N个Grub引导。但一个NT系统却不能被两个NT OS Loader引导。M$可能在后面做了什么,让NT核心的系统安装时候就被绑在了默认的NT OS Loader上(可以是跨硬盘的绑定)。安装一结束,你就只能用这个NT OS Loader来引导他。任何想从别的NT OS Loader引导这个NT系统的尝试,都会被一个找不到文件的错误拒之门外。
4,硬盘1上的NT OS Loader -> 硬盘1上的Grub -> 硬盘2上的 MS-DOS。在用这种引导方式时,假如最后被引导的MS-DOS上装有Windows3.x,那么MS-DOS虽然会正常启动,但Windows3.x却会因提示无法找到文件而无法正常进入。解决办法是在硬盘2中装一个NT OS Loader。就会按如下过程顺利启动:
硬盘1上的NT OS Loader -> 硬盘1上的Grub -> 硬盘2上的 NT OS Loader -> 硬盘2上的 MS-DOS -> 进入Windows3.x。
    不过目前还在用Windows3.x的可能全国也没几个了。各位就当故事听吧。

最后,对于想让Windows和Linux在两块硬盘上并存的网友,给出下列引导建议:
首先,建议把所有的Windows放在一个硬盘,所有Linux放在另一个硬盘。如果不然,下列的某些建议可能无法实现。
1,用Linux多余用Windows的类型
这类可用Grub作主引导程序,这样就不必在意每个引导程序安装的位置了。因为Grub是通吃所有硬盘的。
(1)先把所有Windows装好。
(2)再一个个的装Linux,把带有你想用的Grub版本的Linux放在最后安装。
(3)安装最后一个Linux时就把Grub安装在Linux盘的MBR上。
这样开机后Grub菜单出来,你可以选择:
1、选择Grub菜单中的任何一个Linux系统
2、进入NT OS Loader 菜单选择任何一个Windows系统。


2,用Windows多余用Linux的类型
这类可用NT OS Loader作主引导程序。然而由于NT OS Loader不支持跨硬盘引导其他引导程序,Grub就必须装在Windows盘里。
(1)分区时要在Windows盘里的最后多划出一个分区,分区大小在理论上有512字节就够了,实际上一般习惯分出几M(太小了也不支持)。格式化成FAT和ext均可。
(2)之后就按照“1,”里的顺序安装所有系统。
(3)在完成“1,”之后,进入Linux,进入Grub提示符,用setup (hdx,x) 把Grub安装在Windows盘后面新划出来的那个小分区里。
(4)用dd命令把那个小分区的前512字节读出来存成文件。
(5)把文件添加到NT OS Loader的启动选项中。
(6)把Windows盘设置成主启动硬盘。
这样开机后NT OS Loader菜单出来,你可以选择:
1、选择NT OS Loader菜单中的任何一个Windows系统。
2、进入Grub 菜单选择任何一个Linux系统。


Grub是很灵活的软件,NT OS Loader也不笨。两者虽然互有不足,但如果配合起来使用,不管你有几个硬盘,几个系统,都可以设计出一个快洁完善的引导方案。

文中涉及到的一些具体操作,比如Linux下安装Grub,Linux下dd命令的详细用法,还有Grub、NT OS Loader的配置文件修改方法等等,论坛里到处都有详细操作的文章。我就不在各位大虾面前班门弄斧了。

 robotyan 回复于:2003-06-27 11:03:48
:lol: ,不错,好,值得一看!!

 dasen 回复于:2003-06-27 12:35:46
收了!回去在我的机器上设置.

 bjchenxu 回复于:2003-06-27 12:43:18
支持原创

 mapsunning 回复于:2003-06-28 11:30:40
up

 RedmJ 回复于:2003-06-28 11:38:17
up

 轩辕砍刀 回复于:2003-06-28 11:45:11
up

 love558 回复于:2003-06-30 00:18:11
我什么办法收藏这一页吗?

 ailms 回复于:2003-06-30 08:54:38
想问楼主一个问题,我装的是WINXP和LINUX,用OS LOADER引导
.在出现引导菜单时选择进入linux,出现grub选择菜单,再选进入winxp,又返回一开始的OS LOADER的画面,而不是直接进入XP,有什么办法可以直接进入吗(在OS LOADER 画面出现时不选择XP,而是选择GRUB的windowxp选项)

 lnx3000 回复于:2003-06-30 09:04:03
[quote:b995c7a7e8="ailms"]想问楼主一个问题,我装的是WINXP和LINUX,用OS LOADER引导
.在出现引导菜单时选择进入linux,出现grub选择菜单,再选进入winxp,又返回一开始的OS LOADER的画面,而不是直接进入XP,有什么办法可以直接进入吗(在OS LOADER..........[/quote:b995c7a7e8]     

这是正常的啊?

[quote:b995c7a7e8]在OS LOADER 画面出现时不选择XP,而是选择GRUB的windowxp选项[/quote:b995c7a7e8]
??看不懂

 SickWorm 回复于:2003-06-30 10:04:15
“(1) 分区时要在Windows盘里的最后多划出一个分区,分区大小在理论上有512字节就够了,实际上一般习惯分出几M(太小了也不支持)。格式化成FAT和ext均可。
(2) 之后就按照“1,”里的顺序安装所有系统。
(3) 在完成“1,”之后,进入Linux,进入Grub提示符,用setup (hdx,x) 把Grub安装在Windows盘后面新划出来的那个小分区里。 ”


这里为什么要分出一个小分区,直接把grub装在linux的区里面,然后用dd把那512字节弄出来不行吗??

 ffaatt 回复于:2003-06-30 12:33:26
强!
引导问题看似容易,研究这么透却不容易。

 mercuryknight 回复于:2003-06-30 14:02:38
[quote:52b3310688="SickWorm"]“(1) 分区时要在Windows盘里的最后多划出一个分区,分区大小在理论上有512字节就够了,实际上一般习惯分出几M(太小了也不支持)。格式化成FAT和ext均可。
(2) 之后就按照“1,”里的顺序安装所有系统。
(3?.........[/quote:52b3310688]


理论上应该可以,但我试过很多次用NT OS Loader引导不同硬盘上dd出来的Grub,没成功过。只好认为NT OS Loader只能引导相同硬盘上dd出来的Grub

 SickWorm 回复于:2003-07-01 11:21:51
[quote:88e8e3e6db="mercuryknight"]


理论上应该可以,但我试过很多次用NT OS Loader引导不同硬盘上dd出来的Grub,没成功过。只好认为NT OS Loader只能引导相同硬盘上dd出来的Grub[/quote:88e8e3e6db]     


pf,pf。

 jianjun 回复于:2003-09-04 08:59:12
楼主的帖子确实不错,有理论,有实践,有可读性,有指导意义。
   支持原创!

 ohsnoopy 回复于:2004-03-09 10:40:15
我的RH LINUX9.0是从软盘引导,请问如何从OS LOADER引导,我的MBR显示是已装好的三系统WIN2000,WINXP,WIN2003,请问具体如何操作?

 ohsnoopy 回复于:2004-03-09 12:50:40
未成功!!!!!
BOOT.INI中添加了LINUX的启动项了,OS LOADER中显示的也有,但选择LINUX后就黑屏或者重启!!!!!!!
有的说BOOTLINUX.DAT,有的说BOOTSECT.LNX
简直晕死!!!我都尝试过不行,不知道他们怎么成功的?!!!!1
QQ 78482997

希望高手指教!

 jimke 回复于:2004-08-10 20:58:59
我现在是两块硬盘,主盘上已经装好了windows 200,现在再从盘上安装REDHAT9, 
装好后重启,把引导的GRUB装在从盘中,可正常选择进入两种系统.

但现在,我的从盘另有他用,拆下后,想恢复到原来的由主盘的WIN2000引导(现想只用WIN2000,装LINUX的硬盘格式化了),结果不能引导系统,提示GRUB HARD DISK ERROR 
哪位高手能告诉怎么解决啊!谢谢

 sinboy2002 回复于:2004-10-11 18:11:43
真是豁然开开朗.

 nickdony 回复于:2004-10-11 18:53:21
好象有个问题一直不能让大家满意,也一直没有得到解决,windows不能作为从盘的系统被引导,好象是这样吧?

 jeffreyli 回复于:2004-10-11 20:11:05
不错,,支持原创,, :em02:

 流氓无产者 回复于:2004-10-11 20:31:51
方法正确,但是根本原理有误,有误人子弟之嫌

 langtao 回复于:2004-10-11 20:55:45
支持!

 blueeagle10 回复于:2004-10-11 21:19:38
请问大虾,我现在安装redhat9时把grub装在redhat分区的引导区了,想用xp的引导程序来引导redhat,具体应怎样做呢?现在进不了redhat了,请帮助一下菜鸟,多谢了!!(我的是笔记本电脑,只有一个硬盘)

 神之手 回复于:2004-10-11 21:32:38
不错,还有吗?

 飞天二狭 回复于:2004-10-11 23:55:36
我也是这样做的,而且外置盘还是SCSI的,上面的功能完全可以实现,只是试着把x86 SOLARIS 9 也一同安装进来,并安装到外置盘上,结果糟糕透了,不但没有成功,结果把原来安装好的系统也给破坏了。请问能否将X86 的SOLARIS也加入到grub引导下呢?哪位做成功过呢?

 ocpmi 回复于:2005-05-05 04:20:27
mark

原文转自:http://www.ltesting.net