[转载]如何重装Grub,使其可以引导双系统

引言:

   GRUB是一个多重操作系统的启动管理器。用来引导不同的系统,如windows,Linux。
一般来说要先装Windows,后装Linux,这样grub才能生效(grub存在于linux的安装中)。

这两天我重装了Windows,grub就不起作用了,也无法进入linux了(grub设置的默认进入windows)。
在不想重装linux的情况下,需要对grub进行重装,将搜集的资料及验证的结果整理后存放于此。

准备工作:
   确认linux系统的根分区所在位置。比如我的Redhat9.0的根分区安装在第一块硬盘的第3个分区上,写成
   grub识别的指令即为 root (hd0,2),序号从0开始。

Note:
      下面的root与(hd0,2)之间存在一个空格,setup与(hd0)之间也存在一个空格。

修复GRUB的方法:

1. 把Linux安装光盘的第一张放到光驱,然后重新启动机器,在BIOS中把系统用光驱来启动。
2. 等Linux的安装界面出来后,按[F5],进入 linux rescue模式。(也可以不进入rescue模式而在boot:
    提示符出现后,键入“linux single root=/dev/hdxx initrd= ”注释:hdxx为你的linux 系统所在的分
     区,比如我的Redhat9.0存放与第一块硬盘的第4个分区,则为/dev/hda4)
3. 进入linux rescue模式后需要进行一些键盘以及几项简单的配置(按ok即可),过了之后就[继续]了……
4. 然后会出现这样的提示符:
   sh#    (Redhat9.0为sh-2.05#)
5. 此时可以对grub进行操作, 键入 grub:
   sh#grub
   会出现这样的提示符:
   grub>
6. 在grub>提示符后面键入:
   grub>root (hdX,Y) 注释:告诉系统你的linux根分区所在的分区 (我的Redhat9.0对应的为root (hd0,2))
   如果记不清,可以在键入“root (hd”之后,按一下Tab键。
   顺利的话再键入
   grub>setup (hd0) 注释:把grub装入主引导区(MBR),也可以键入setup (hdX,Y)将grub装在你想装的位置。
   如果成功,会有一个successful...
7. grub>quit 注释:退出grub
8. sh#exit   注释:退出shell

 之后重启,如果(hdX,Y)没错的话,就可以用grub引导了。

但是,有可能一些原因导致虽然修复成功,但还是不能引导,直接进了windows。
             如下:grub loading stage 1.5
                     grub loading please wait...
                   之后直接进入windows...

主要原因还是grub的问题,修复成功,但是盘符有错。(一般是系统引导的盘符与你root时不一致引起的)

解决方法:
  找到文件grub.conf,并对其进行修改。
    
  按上述步骤重新进入rescue模式后,
  sh#cd /mnt
  sh#cd sysimage   注释:实际的linux系统被挂载在/mnt/sysimage目录下
  sh#cd boot
  sh#cd grub
  sh#vi grub.conf
对照是否与你之前root (hdX,Y)一致。一般都是这里出了问题,将其改回来即可,操作与linux下相同。

问:hda与hd0有什么不同?

   主要是命名的问题。hda是从字母开始命名,hd0是从数字开始。
    hda=hd0
    hda8=(hd0,7)  注释:hda是从hda1开始的

如果感觉不错,请 一个!
by simpman
原文地址:https://www.cnblogs.com/simpman/p/3984051.html