LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 735|回复: 8

RH Linux9不能正常引导了,求助

[复制链接]
发表于 2005-1-21 21:26:43 | 显示全部楼层 |阅读模式
各位大哥,
      本人有两个硬盘,80G,30G
      需要实现:win98+win2k server装在80G的硬盘上, RH 9 装在30G的硬盘上, 80G的作为主盘,
30G的作为从盘, MBR的记录是win2k的 nt loader, GRUB装在第二个硬盘(30G)的根分区,想要实现
在NT下面引导linux, 已经`dd if=/dev/hdb1 of=/mnt/c/bootsect.lix bs=512 count=1`,把文件bootsect.lix放在c:下,boot.ini的内容如下:

[boot loader]
timeout=15
default=C:\bootsect.dos
[operating systems]
C:\bootsect.dos="Microsoft Windows"
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Server" /fastdetect
c:\bootsect.lix="Rad Hat9"
但是用nt loader不能正常引导linux,选择Rad Hat9以后只在屏幕出现了"GRUB",然后就死机了

如果在BIOS改成先从30G引导的话,开机以后可以出现GRUB的命令行,用root命令看居然是
(hd0,11)
用命令:root (hd0,0)
          kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
          initrd /initrd-2.4.20-8.img
          boot
可以正常启动Linux

如果把/boot/grub/grub.conf关于linux引导的那一段改成下面这样:
splashimage (hd0,0)/boot/grub/splash.xpm.gz  //原来是(hd1,0)
title Red Hat Linux (2.4.20-8)
      root(hd0,0)  //原来是root(hd1,0)
      kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
      initrd /initrd-2.4.20-8.img
就可以用30G的硬盘引导,也可以出现GRUB的图形界面,而不是命令行.

情况就是上面这样,我想可能是因为GRUB的定位问题,如果在BIOS改成先引导80G的话,linux
所在的30G应该是hd1才对吧??那原来grub.conf的(hd1,0)应该是正确的

是不是第一块硬盘的nt loader不能引导第二块硬盘的linux呢?我是否需要吧/boot装在第一块硬盘
然后再用dd命令做一个512k的镜像,来给nt loader引导第二块硬盘的linux呢?

各位路过的高手帮帮忙呀...
发表于 2005-1-21 21:38:00 | 显示全部楼层
先看看bios设置,把boot other device禁用,再启动看看行不行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-22 01:59:12 | 显示全部楼层
谢谢楼上的回答,能不能说说你的思路?
我的BIOS上好象没有您所说的这个设置,另外我还想问问在什么情况下我需要更新c:上的bootsect.lix镜象?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-22 11:58:59 | 显示全部楼层
今天看过BIOS了,有boot other device的选项,可以已经是DISABLE了,看来不是这个原因
BIOS是Award的...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-23 21:01:07 | 显示全部楼层
DDDDDDDDDD

我想实现用80G(hd0)上得NT Loader来引导30G(hd1)上面得linux呀,该怎么做?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-24 01:37:20 | 显示全部楼层
我用winhex打开了dd出来的文件,看到其中有一段是"GRUB .Geom.Hard Disk.Read.Error",那位兄弟有做过这方面的,麻烦发一个正确的bootsect文件来看一下
回复 支持 反对

使用道具 举报

发表于 2005-1-24 14:26:55 | 显示全部楼层
你的情况建议使用grub引导系统吧,
修改一下grub.conf,
具体请参考置顶贴“论坛使用及常见问题解决方法”的grub总结部分。

使用ntloader跨硬盘引导linux的情况,
我还没有成功过,
那位兄弟有这方面的经验也可以解绍一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-24 15:59:30 | 显示全部楼层
终于搞定了!!

其实本来把grub或lilo装在MRB就可以了,我这样做的目的是因为我家人只是使用windows,所以免得他们麻烦要选择多个菜单,就需要用nt loader来引导跨盘的linux,现在问题终于解决了,关键在于要把/boot分区放在80G的硬盘上

在这里总结一下,顺便给新接触linux而又有像我有这种需要的朋友看看,少走点弯路,请高手少拍两块砖

先看看我的配置:
80G(主盘)
主分区: C(hd0,0)
逻辑分区: D(hd0,4),E(hd0,5),F(hd0,6),G(hd0,7),H(hd0,8),I(hd0,9),J(hd0,10)
30G(从盘)
主分区: /boot(hd1,0), /(hd1,1) , /usr(hd1,2)
逻辑分区: /data(hd1,5), /swap(hd1,4)

一直想用nt loader来引导linux,在安装linux时就把grub装在了/dev/hdb1的第一扇区,然后用dd命令把/dev/hdb1的前512字节写到c:\bootsect.lix,然后改好c:\boot.ini文件重启,可是只能引导windows的系统,不能引导linux,对/boot/grub/grub.conf修改了n次也不行,但是如果改30G的硬盘为主盘,先从它引导是可以进linux的.

就开始怀疑是不是nt loader不能跨盘去找到grub,于是在80G硬盘的最后建了100M的ext3分区,把它挂载到/boot1,把/boot里面的东西拷一份到/boot1,运行grub,可以先通过命令find /grub/grub.conf来确定新建立的boot1的所在,显示(hd0,11) (hd1,0),然后输入命令root (hd0,11),显示的是一个ext3的分区,接着setup (hd0,11),看到最后"install ... successful",安装grub到(hd0,11)应该算是完成了,打quit退出.接着是修改/boot1/grub/grub.conf成下面这样:

splashimage (hd0,11)/boot/grub/splash.xpm.gz

title Red Hat Linux (2.4.20-8)
root (hd0,11)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img

title dos
rootnoverify (hd0,0)
chainloader +1

而原来的/boot/grub/grub.conf的配置是这样:

splashimage (hd0,0)/boot/grub/splash.xpm.gz

title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img

我之所以保留了原来的/boot是考虑到假如我将来把30G单独接到其他机器上作为主盘,也可以通过grub来引导

通过以上的操作,终于实现了用nt loader来跨盘引导linux,但又带给我两个问题:
1.我是通过把grub装在hd0上来解决引导hd1的linux的,那nt loader是不是真的不能跨盘访问呢?这个我还带着疑问.
2.像我这样的做法,内核就出现了冗余(/boot上的,和/boot1上的),那应该对我维护内核带来了麻烦,假如我将来升级了内核就需要更新两个地方,那如果我在/boot1上用link指向/boot的内核呢?我还没试过,不知道这样能不能引导??或者有没有什么更好的方法来解决冗余的问题.

上面如果有不正确或可以做得更好的步骤和地方,希望高手能指出,另外也希望高手们能帮忙解答一下我的疑问,谢谢.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-26 12:38:55 | 显示全部楼层
没人回答...
顶一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表