LinuxSir.cn,穿越时空的Linuxsir!

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

[新手指南]重装Windows后,如何修复GRUB

[复制链接]
发表于 2007-4-9 21:58:11 | 显示全部楼层 |阅读模式
本文介绍使用FC6的急救光盘修复GRUB.本方法同样也适合其它发行版.为了方便起见,图是虚拟机的截图.实际机器基本上相同.

为什么要发这个贴(废话,可以不看)
我媳妇是Linux新手,她使用的是Fedora Core 6,最近她重装了Windows系统,Windows很霸道把MBR(主引导扇区,计算机使用保存在这个扇区的代码加载操作系统)给写掉啦,从此她再也进不了我花了半天时间给她安装的FC6,我给她出了个主意,使用急救光盘修复GRUB,由于条件所限,不能手把手地教她如何操作,于是写了这篇文档.考虑到很多新手可能会碰到同样的问题,于是将其贴在Linuxsir上,以供参考.


准备工作(废话,可以不看)
想要修复GURB,就得进Linux,但MBR已经被Windows改掉啦,无法从硬盘启动Linux,怎样才能进Linux呢?现在的计算机除了可以从硬盘启动外,还可以从软盘,光盘,U盘等存储设备启动.既然硬盘启动已经无法进入Linux系统,那么就走别的路子,从其它设备启动,然后进入Linux.软盘已经基本被淘汰啦,U盘是新兴的启动设备,可能某些机器上还不配备,并且制作启动U盘是一件比较有难度的事,最佳的选择自然是光盘啦,一方面,光盘是PC机的标准配置,除了部分本本外,基本都带有光驱,并且所有的BIOS均支持光盘启动,另一方面,有现成的急救光盘和LiveCD可供使用,不需要自己去做系统.本文使用的就是FC6的急救光盘,它的下载地址为      [color="Red"]FC-6-i386-rescuecd.iso ,当然你也可以使用其它的急救光盘或者LiveCD,像ubuntu livecd,slax等.下载好后,刻盘.

从光盘启动Linux
将光盘放入光驱,重启您的计算机,如果重启以依旧从硬盘启动,那么请设置您的BIOS,将光驱启动顺序列在硬盘之前.如图0所示.

图0
上图只是一个例子,具体操作可能略有不同.(如何进入BIOS?重启后按F2或者Delete键,如果您不知道按哪个键,那就两个一起按吧)

FC6急救光盘启动成功的画面如图1所示.

图1

按下回车键,开始加载光盘Linux系统.系统提示选择语言,如图2所示

图2

请选择English,按下回车键.不要选择Chinese,即使您选择了Chinese,后面也会告诉你控制台下无法使用Chinese.之后是选择键盘,如图3所示

图3

选择默认即可,下一步问您要不要网络连接,如图4所示

图4

修复GRUB不需要网络,所以选择[NO],回车.(如何选择NO?按Tab键,在键盘左边)系统配置好之后,Linux会去查找安装在本地上的Linux发行版,并将其挂载在/mnt/sysimage这个目录下,如图5所示

图5

选择[Continue],回车.如果你用FC6的急救光盘去修复非Fedora发行版,这里将提示没有找到相应的发行版,也没有挂载文件系统到/mnt/sysimage,这不要紧,我们不需要将文件系统挂载起来.
启动完成后会运行一个shell,如6图所示.

图6

这个时候就可以输入Linux命令,对硬盘上的Linux系统进行修复啦.

找到存放grub文件的分区.
在命令提示符(这里显示为"sh-3.1#",随使用光盘的不同而不同)下输入"fdisk -l",查看Linux分区,如图7所示.

图7

将这个列表中的ID为83的Linux分区号记下,不包括swap分区,图中有两个Linux分区,hda1,hda2.如果您的系统的boot目录是单独一个分区,那您的grub分区就是所有ID为83的分区里容量最小的那一个,容量大小请看fdisk输出的Block一栏.如果您不知道安装grub的分区,不要紧的,下面会使用排除法找出安装grub的分区.

修复GRUB
在shell提示符下输入"grub"并回车,启动grub安装程序,如图8所示.

图8

如果您已经知道grub的安装分区,比如为hda1,那么请在grub > 提示符下输入 "root (hd0,0)"并回车,如图9所示.

图9

输入的时候注意root后有一个空格.这里说明一下,grub使用的分区号和Linux系统分区号的表示方法是不一样的,如上面的hda1,在grub中表示成(hd0,0)
Linux分区表示由[hd或者sd][硬盘编号,为字母,从a开始][分区号,为数字]这三部分组成,hda1代表第一个硬盘的第一个分区.而grub的格式是([hd][硬盘编号,数字,从0开始][分区号,数字,从0开始],如果你有第二块硬盘,那么Linux使用hdb3表示这块硬盘的第三个分区,grub使用(hd1,2)表示.如果您的硬盘是SATA的,Linux将表示成sda1,但在grub中仍然表示成(hd0,0).设置好grub的root分区后(不是Linux系统的根目录),输入"setup (hd0)"并回车,如图10所示.

图10

如果您设置的root分区正确,输出的内容同上图类似,会找到stage1,stage2等文件,并提示successed.如果不正确将会是图11这个样子的

图11

这是您设置的根分区不对所引起的.请重新输入"root (hdx,y)"设置根分区,x,y请用分区的数字代替.设置好根分区后再次输入"setup (hdx)",如果不知道哪个分区是正确的分区,那就一个一个试吧,安装成功后输入"quit"退出grub安装程序.

修复完成
完成后,在命令提示符下输入"exit"重启系统.OK,如果顺利,久别的grub又会出现在您的显示器上.
祝您成功.



其它参考贴
GRUB丢失,怎样用安装盘修复???
http://www.linuxsir.cn/bbs/showthread.php?t=6337

GRUB多重启动管理器
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=1170

关于硬盘分区
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=708

小菜鸟与GRUB的故事
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=4840

GRUB入门
http://www.linuxsir.cn/bbs/showthread.php?t=74728

Grub for DOS/NTLDR中文版Climbing定制版第四版(完全淘汰VFloppy)
http://www.linuxsir.cn/bbs/showthread.php?t=174598
发表于 2007-4-9 22:19:31 | 显示全部楼层
哈哈,看到楼主发的贴子了,谢谢啊,真好啊
我先看看啊,真是解我燃眉之急啊
回复 支持 反对

使用道具 举报

发表于 2007-4-9 22:36:44 | 显示全部楼层
写的很仔细,先去试试
回复 支持 反对

使用道具 举报

发表于 2007-4-9 22:54:15 | 显示全部楼层
OK,成功!不错,对我们新手很有帮助的
回复 支持 反对

使用道具 举报

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

本版积分规则

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