LinuxSir.cn,穿越时空的Linuxsir!

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

如果重装grub,让grub使用另外一个分区的/boot目录?

[复制链接]
发表于 2005-9-21 15:26:17 | 显示全部楼层 |阅读模式
我机器上硬盘分区是这样的:

/dev/hda1    XP分区
/dev/hda2    扩展分区
/dev/hda3    sarge根分区
/dev/hda4    swap分区
/dev/hda5    XP分区
/dev/hda6    debian数据分区
/dev/hda7    sid根分区

我的grub认的是 /dev/hda3 下的/boot 目录。
xp,sarge,sid 3个系统都是在/dev/hda3 下/boot/grub/menu.lst文件中配置的。

现在,我想删除 sarge 系统, 准备让grub 使用 /dev/hda7下/boot/grub/menu.lst配置文件,我应该怎么重装我的grub ?
发表于 2005-9-21 17:08:53 | 显示全部楼层
重装grub时在grub控制台输入
root (hd0,6)     //6对应的是你的hda7
setup(hd0)
不过你还是仔细看看你的分区表,
在我的认识当中,hda2是扩展分区的话,接下来的分区应该从hda5算起!
如果你的hda3和hda4都是主分区,那么它们不应该接在hda2扩展分区之后!

除非它们以前是逻辑分区,后来你把它们转换成了主分区,造成了这样一个布局!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-21 18:14:56 | 显示全部楼层
哪位大侠说说 grub 运行机制(grub安装在mbr):
1。机器启动,bios控制机器。

2。bios读boot顺序,选硬盘启动。

3。bios读mbr,mbr包含硬盘分区表,还有grub引导loader指令等信息。

4。grub控制机器。

5。grub找到menu.lst文件,menu.lst文件包括了grub的root分区(这个root分区和系统启动后的root分区是两个不同概念,vmlinuz和initrd.gz在grub的root分区下),以及系统的root分区。

6。grub启动kernel。

7。kernel控制机器。

我的问题,mbr中grub信息到底包含哪些?
比如我一个硬盘上2个linux系统,都安装了grub,mbr怎么知道使用哪一个grub?
回复 支持 反对

使用道具 举报

发表于 2005-9-21 21:13:48 | 显示全部楼层
个人认为,只要设置/dev/hda7下/boot/grub/menu.lst就可以,删去/dev/hda3 下/boot/grub/menu.lst
回复 支持 反对

使用道具 举报

发表于 2005-9-21 23:57:50 | 显示全部楼层
melocy兄,你试了ROADGO版主的方法了吗?成功否?我也遇到了和你同样的问题。
我装HIWEED的时候把GRUB装在了MBR
现在又装了个DEBIAN基本系统,想玩一下配置,把GRUB装在了BOOT分区(不是/boot)
现在启动电脑直接启动了MBR中的GRUB,当然这是进不去第2个DEBIAN的。
回复 支持 反对

使用道具 举报

发表于 2005-9-22 01:24:42 | 显示全部楼层
title           Debian GNU/Linux, kernel 2.6.8-2-686
root            (hd0,6)
kernel          /vmlinuz-2.6.8-2-686 root=/dev/hdc12 ro vga=773
initrd          /initrd.img-2.6.8-2-686
savedefault
boot
我BOOT中的grub/menu.lst怎么是这样的?
我觉得应该是root       (hd0,11)
因为   (hd0,6)是我的BOOT分区,而根分区是(hd0,11)
回复 支持 反对

使用道具 举报

发表于 2005-9-22 01:51:50 | 显示全部楼层
当系统启动的时候,grub首先运行自己,grub在哪里去找自己?
root (hd0,6) //6对应的是你的hda7
setup(hd.0)
在安装grub的时候由以上两个命令指定
其中root (hd0.6)告诉在MBR中的那部分grub到(hd0.6)去找grub程序来运行
运行起来的grub再读取同一个目录下的menu.list,供用户选择启动系统

root (hs0.6)中的root跟你的Linux系统中的/一点关系都没有,它指的是Linux系统中/boot所在磁盘

应此,你要删除系统,最好在你要保留的那个系统下运行一下grub的安装(将grub安装到MBR)
当然,如果两个grub是同一个版本,在要删除系统上运行grub安装效果一样,关键是正确指定以后要用的grub的位置。
回复 支持 反对

使用道具 举报

发表于 2005-9-22 02:10:20 | 显示全部楼层
grub-install --root-directory=/dev/hda? hd0
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-22 09:08:04 | 显示全部楼层
问题已解决。

我启动 sid 系统(root分区是/dev/hda7),
执行:

root@solar# grub

grub> root (hd0 , 6)
grub> setup (hd0)

这样就可以了。

我看setup输出有条信息是:
install /boot/grub/stage1 (hd0) (hd0)1+18 p (hd0,6)/boot/grub/stage2 /boot/grub/menu.lst

这一条可能就关键。

这下,我就可以放心删除 debian sarge 系统了。

谢谢上面回复的朋友。
回复 支持 反对

使用道具 举报

发表于 2005-9-22 12:25:21 | 显示全部楼层
"root (hd0,6) //6对应的是你的hda7
setup(hd.0)
在安装grub的时候由以上两个命令指定
其中root (hd0.6)告诉在MBR中的那部分grub到(hd0.6)去找grub程序来运行"

这么说来GRUB还是装在MBR上,只是它的一些配置文件放在BOOT分区?
那重装XP起不是还要修复GRUB?
回复 支持 反对

使用道具 举报

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

本版积分规则

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