LinuxSir.cn,穿越时空的Linuxsir!

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

急:分区后,怎么恢复GRUB

[复制链接]
发表于 2005-9-19 22:28:32 | 显示全部楼层 |阅读模式
求教各位前辈,怎么恢复GRUB
我的情况是:40G硬盘,分了C,D,E,F,G,H,I
其中C盘装了WIN2KPRO,C,D,E,F为FAT32格式,
G为EXT3,作为ROOT,
H为SWAP,作为交换区,
I为EXT3,作为boot,
安装了REDHAT9.0,使用了GRUB引导;WIN2K和linux系统运行正常(先安装WIN2K

,后LINUX)
而后在WIN2K下我用PQ又将F盘格式化了两个分区,格式分别为EXT3和SWAP,想安

装RED FLAG4.1,结果重启机器,发现GRUB不能引导了,屏幕出现GRUB>  ;后来

我想该问题是大概因为我更改REDHAT LINUX安装盘前面的盘副,让GRUB找不到

ROOT,先将问题给出,希望各位前辈给点意见

注意:无软驱,有光驱,无安装盘,只有REDHAT9.0镜像(3张ISO)
 楼主| 发表于 2005-9-19 22:53:22 | 显示全部楼层
怎么没人指教一下  5555
回复 支持 反对

使用道具 举报

发表于 2005-9-20 10:55:27 | 显示全部楼层
没有安装盘就有点麻烦了,我只会用安装盘修复。
回复 支持 反对

使用道具 举报

发表于 2005-9-21 01:30:36 | 显示全部楼层

只有漫漫试了

我前段时间也象楼主一样吃了很大的苦
但是我有安装盘啊,在修复模式下,fdisk -l
找到root分区的编号,然后在grub>root (hd0,X)
其中hd0 指第一个硬盘,相信你也只有一个盘吧
x表示你root所在的位置,如果是/dev/hda6的话,x就是5
然后执行grub>setup
我是这么搞的,没有安装盘的话就一个一个试了,从0开始,呵呵
回复 支持 反对

使用道具 举报

发表于 2005-9-21 09:44:45 | 显示全部楼层
http://blog.csdn.net/xiaoshao_0_0/archive/2005/09/15/481810.aspx

硬盘分区的变化和grub不能启动的困扰
grub是目前linux系统普遍采用的启动管理工具
它有很多有点:
支持多种系统启动
支持很多文件系统
支持一个很简单的shell界面,包括了TAB补齐的功能(这个很重要)。
但是也有时候让你很苦恼,我今天就碰到了这种情况。就是在你的分区表发生变化以后,你没有即使修改你的grub.conf,有的时候甚至要重新setup grub,否则你就没有办法重新启动了。
我们具体通过grub.conf来看grub的机制:

default=0 #默认的启动选项
timeout=5 #倒计时
title Fedora Core (2.6.12-1.1398_FC4) #只是标题
       root (hd0,7)     #注意hd0,7=hda8     
#grub.conf所在的分区,如果你有/ot分区的话,就是 /boot 的分区,如果没有就是 / 分区
       kernel /vmlinuz-2.6.12-1.1398_FC4 ro root=LABEL=/ quiet
# 指定要加载的内核 ro=readonly root也可以 root=/dev/hda8
       initrd /initrd-2.6.12-1.1398_FC4.img
# 指定最初的init指令的来源

如果你的分区表变了,而且变化发生在grub.conf所在的分区前边,这一般是你删除了某个分区,我是把windows分区D:,E:相当于 /dev/hda5,/dev/hda6 给删除了,那么,grub就会找不到你的grub.conf,结果是,它给我一个grub>
或者他即使找到了,比如,你有/boot分区,而且它的号码没变,这一般是你新建了一个分区或者是删除了/boot后面的分区,但是如果这个变化影响了你的/ 分区的话,你仍然会失败,在你开机的时候,内核init会报找不到文件的错误,这是由于这些文件在/分区上,而现在/分区的号码变了,这时候就要改到

kernel /vmlinuz-2.6.12-1.1398_FC4 ro root=LABEL=/ quiet
这一句,
我这次是直接指定了 root的目标:
kernel /vmlinuz-2.6.12-1.1398_FC4 ro root=/dev/hda8

grub.conf 是在 /boot/grub里面? 还是在/etc里面?或者是别的地方?

实际上,grub.conf 应该是 menu.1st,这个是grub的标准名字,在FC4里
/etc/grub.conf 是指向 /boot/grub/grub.conf的一个连接
/boot/grub/menu.1st也是这样的

我碰到的实际情况是,我修改了grub.conf但是启动的时候还是不行,我采用命令的方式,把上面这几行,依次输入:
root (hd0,5) 因为我删除了两个分区,/boot分区成为第5个
kernel /vmlinux-2.6.12.1447 root=/dev/hda8
这里没用/boot/vmlinuz**是因为我有/boot分区,而且第一句已经指定现在的root就是/boot分区
initrd /initrd-2.6.12.1447.img
这个是要与内核想对应的版本的。
然后就是输入
boot

我改了/boot/grub里面的grub.conf,但是重新启动以后没有作用。
改了/boot/grub里面的grub.conf应该有用的。

你要仔细看看有没有改错,有没有存盘。

实在不行你可以运行命令:grub

在grub里运行如下命令:

root (hd0,5) /*hd0是你第一个主盘,6是你的grub安装所在的分区减一*/

setup (hd0) /*这是写到MBR上*/
回复 支持 反对

使用道具 举报

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

本版积分规则

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