|
|

楼主 |
发表于 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的内核呢?我还没试过,不知道这样能不能引导??或者有没有什么更好的方法来解决冗余的问题.
上面如果有不正确或可以做得更好的步骤和地方,希望高手能指出,另外也希望高手们能帮忙解答一下我的疑问,谢谢. |
|