Board logo

标题: 求教grub的配置 [打印本页]

作者: unix     时间: 2006-5-17 09:31    标题: 求教grub的配置

我用ghost在c盘克隆一个win98系统(fat32)(老爷机,实属无奈),之后又在d盘上用ghost克隆了一个win2000(ntfs)系统,只能引导windows98。然后安装了grub for dos,在menu.lst中写引导信息,内容如下:
title windows 98
root (hd0,0)
chainloader +1

title windows 2000
root (hd0,1)
chainloader +1
结果还是只能启动win98,无法启动win2000,请问下我的menu.lst内容错在什么地方,不胜感激!

[ Last edited by unix on 2006-5-17 at 09:44 ]
作者: fujianabc     时间: 2006-5-17 10:38
d盘是不是主分区?
作者: unix     时间: 2006-5-17 11:05
d盘不是主分区,是逻辑分区,c盘是主分区。
作者: unix     时间: 2006-5-17 13:55
为什么没有从可以帮一帮我?
作者: fujianabc     时间: 2006-5-17 14:00
逻辑分区不能直接启动win2000的,把他转成主分区再说。
作者: tinybit     时间: 2006-5-17 15:22
你克隆来克隆去的,倒是很方便。但是克隆的结果,就是操作系统失去引导能力。虽然文件没有丢失,但是,微软的操作系统都是从主分区启动的,从逻辑分区可不容易启动成功,但是…………

你可以试试 GRUB4DOS 的启动能力:

find --set-root /ntldr
chainloader /ntldr
boot

幸运的话,这有可能会启动你的逻辑盘上的 NT 系统。

类似的,以下命令应该也有可能启动逻辑盘上的 DOS/Win9x 系统:

find --set-root /io.sys
chainloader /io.sys
boot

应该使用较新版本的 GRUB4DOS(0.4.1或者更新的),否则,无此功能。
作者: asbai     时间: 2006-5-17 16:32
还有一个问题,你的w2k映像如果当时是从第一分区抓出来的,你现在把他恢复到第二分区,即使这个分区是主分区也不见得能正常运行。windows是认安装分区的。

同理把98和2k的分区倒过来也有问题,而且98还有一个额外的问题:不支持在启动硬盘上出现多余一个的主分区。

这个问题可以用SPFDisk(这是一个开源,免费的boot manager+fdisk)解决:
  1. 将2k装到第一分区(主)
  2. 将98装到第二分区(主)
  3. 剩余的空间做扩展分区,里面分逻辑分区
  4. 运行SPFDisk,SPFDisk用全中文TUI菜单操作
  5. 建立第一个开机选单 Windows2000,从第一分区启动
  6. 建立第二个开机选单 Windows 98,从第二分区启动
  7. 在进阶设定中关闭 Windows2000 自动隐藏同类分区功能
  8. 安装到MBR

这样98启动时,SPFDisk就会自动隐藏 W2k所在分区,貌似98是唯一的一个主分区。2k启动时自己是在第一主分区,2k允许多主分区,所以无妨。

若为保险起见,第7步完成后可以在手动设置一下启动98时隐藏2k的分区,这就万无一失了。

SPFDisk在这里下载:http://spfdisk.sourceforge.net/

当然用grub4dos也可以实现类似功能,同样需要把它安装到MBR(因为第一分区有时会被隐藏,所以不能把它安装到ntldr下!),并把grub目录放置在第二分区中(第二分区永远不会被隐藏,可以安心放置)。其余步骤逻辑与前文一致,不过改由grub命令完成。
作者: fujianabc     时间: 2006-5-17 17:55


  Quote:
Originally posted by tinybit at 2006-5-17 03:22 PM:
你克隆来克隆去的,倒是很方便。但是克隆的结果,就是操作系统失去引导能力。虽然文件没有丢失,但是,微软的操作系统都是从主分区启动的,从 ...

不点,你直接用grub虽能加载ntldr,但我曾经试过,ntldr不会搜寻逻辑分区下的boot.ini的,因此这样还是不行的。
作者: 不得不爱     时间: 2006-5-17 19:08
WIN2000GHOST文件是怎么来的?
作者: tinybit     时间: 2006-5-17 19:19
那就只好再加上磁盘仿真这一招了,这样使用方法,应当不会再有失败了(如果失败,可以报告 BUG)。我们的 map 可以把逻辑分区仿真为一个(含有MBR的)硬盘,因此,实际上也就是把逻辑分区当作主分区来用了。注意,第一个逻辑分区应当是 (hd0,4) 而不是 (hd0,1),后者是第二个主分区。楼主似乎已经把这个搞错了,因此楼主的菜单项目可以先更正一下试试再说。

map (hd0,4)+1 (hd0)
map --hook
find --set-root /ntldr
chainloader /ntldr
boot

如果仅仅是因为 NTLDR 启动后不能从逻辑盘找到 BOOT.INI 文件,那么也没必要仿真,而是可以直接把 D: 盘上的 BOOT.INI 拷贝一份到 C: 盘即可。

[ Last edited by tinybit on 2006-5-18 at 07:38 ]
作者: asbai     时间: 2006-5-17 21:35
磁盘仿真显然会影响文件系统的IO效率,不宜作为日常系统的基础应用。
作者: unix     时间: 2006-5-18 09:40
首先要感谢楼上的所有朋友,问题自己已经解决,实际上我把这个问题给复杂化了。昨天晚上,到朋友的家里去了一趟,看了一下他的计算机,他的和我一样是多系统,(98 Xp RedhatLinux UbuntuLinux),首先查了下分区属性,朋友的计算机也是98在C盘,XP在D盘,用PQ分析发现,C盘是主引导活动分区,D盘是逻辑分区。由此可以推测,我的计算机也不需要改变分区属性,只需要改动的是硬盘的MBR,单纯地将boot.ini ntldr ntdetect.com bootfont.bin pagefile.sys拷到C盘是不行的,用grub启动不成功的原因也正基于此。首先要改动MBR,手头又没有win2000的安装盘,只有XP的安装盘,xp和引导是否和2000的引导一样了,报着试的态度,将XP的安装盘来引导系统,出现安装信息,拷贝安装文件,只到重新启动,此时从光驱中拿出光盘,从硬盘启动,出现XP和98的引导菜单,进入98,找到boot.ini,将引导菜单中的multi(0)disk(0)rdisk(0)partition(2)\WINDOWS替换成winnt,保存重启,引导成功。
再次感谢楼上的所有朋友,感谢大家对我帮助!喜欢DOS联盟这个温暖的大家庭!


另外qwe1234567兄弟,win2000的ghost系统来自于系统之家。www.xtzj.com
作者: zjnbwdj     时间: 2006-5-18 11:04


  Quote:
Originally posted by fujianabc at 2006-5-17 14:00:
逻辑分区不能直接启动win2000的,把他转成主分区再说。

是这样的吗?我的2000在逻辑分区却用的好好的.
作者: fujianabc     时间: 2006-5-18 11:11


  Quote:
Originally posted by zjnbwdj at 2006-5-18 11:04 AM:


是这样的吗?我的2000在逻辑分区却用的好好的.

我说的是逻辑分区不能做2000/xp的启动分区,但是逻辑分区可以作为2000/xp的系统分区。
作者: 不得不爱     时间: 2006-5-23 13:24
其实要写WINNT系列的引导扇区可以用echo y|bootpart winnt boot:c:就可以了,没有不要去假安装1次!
作者: shuxingsheng     时间: 2006-12-28 10:56
root (hd0,1)改为root (hd0,4)