恢复Linux操作系统的GRUB引导程序

原创 2006年05月17日 06:20:00

恢复Linux操作系统的GRUB引导程序

   本文使用的示例版本为MagicLinux 1.2 final。因为重装Windows等等误操作常常导致安装到MBR的GRUB引导程序无法再引导系统,也就最终导致了无法进入Linux系统。关于这个问题的解决办法在网上有多种,但经笔者测试都行不通,最终结合网上多篇文章,在ML1.2的grub被WinXP覆盖后成功的恢复了,写下偶的实验经历,共勉。
   笔者的ML1.2安装在/dev/hda11,对应grub下的位置为(hd0,10),注意使用/dev/hdax的方式表示的分区号都是从1开始的,所以到了grub下时需要减去1来表示。grub安装在MBR,在安装WinXP后导致无法进入linux。本文虽然使用ML1.2做例子,但是对版本较新的grub具有通用性。MagicLinux 1.2 final使用的grub版本为0.95。
   先使用一张修复盘进入grub,或者利用其他linux恢复盘等等进入linux系统,然后进入grub控制台。总之就是想尽办法进入一个控制台就是了。然后准备引导进入硬盘上的Linux系统。如下:
grub> root (hd0,10)
grub> kernel /boot/vmlinuz-2.6.9 init 5 ro root=/dev/hda11
grub> initrd /boot/initrd-2.6.9.img
grub> boot

   如上是利用修复盘进入grub后的修复方法,至于自己可以进入其他的控制台修复方法暂时略。如上的过程就可以进入硬盘上的linux系统了。然后开始修复过程。
# grub
grub> root (hd0,10)
grub> setup (hd0)
grub> quit
# grub-install hd0

   如山的步骤将会把grub安装到MBR,任何一个步骤都不可以缺少。如果缺少grub-install步骤则会安装grub到MBR,但是不会显示系统菜单。
   另外,对于MagicLinux1.2final会在最后一步提示找不到grub。这是因为grub-install是一个shell脚本,使用绝对路径寻找grub程序。默认的寻找grub路径为/usr/sbin/grub,可是对ML1.2则是在/sbin/grub。所以只要执行如下语句,复制一下即可:
# cp /sbin/grub /usr/sbin/grub
   这样就可以正确的恢复grub到MBR了。
   本文没有直接写出使用光盘上的控制台修复grub的原因是很多光盘发行版带有的/dev/hdax的数目很小,我手里的一个最大到/dev/hda8,这样根本无法访问/dev/hda11,所以只好放弃。另外即便是光盘发行版也是需要使用grub引导的,在它引导的时候按下"C"键即可进入grub控制台,输入命令来进入硬盘上的Linux。
   最后,推荐还是备份一下做好的MBR,在linux下使用如下命令:
# dd if=/dev/hda of=/root/linux.bin bs=512 count=1
 这里注意使用if=/dev/hda是备份MBR中的数据,如果grub安装在具体的某个分区,则要自己选择了。备份之后的linux.bin文件可以复制到Windows下,备份一份,另一份复制到C盘根目录下。然后修改boot.ini文件,添加如下一行:
C:/linux.bin="Linux"
 这样就可以利用Windows的NT loader来引导linux系统了。以后恢复和修理linux会更加方便。

相关文章推荐

Grub4Dos硬盘安装CentOS Linux操作系统

鼓捣了两天,终于用grub4Dos将Linux系统的发行版CentOS安装好了。为自己欢呼一下,, 在安装之前先扯扯grub4Dos把,了解的可以直接跳到下面。grub4Dos是一个优秀的双(多)系...

利用U盘安装Linux操作系统(grub4dos,USB,Linux)

利用U盘安装Linux操作系统(grub4dos,USB,Linux)                                   v\:*...

Linux操作系统 引导启动程序

  • 2009年07月03日 13:33
  • 656KB
  • 下载

java开发第一个JNI示例程序(基于linux操作系统)--java调用native方法

大家都知道,通过jni可以实现java和c以及c++的交互,但是这对于新手来说,想实现自己的本地调用还是有一定困难,万事开头难,这里我将用一个最简单的程序向大家展示jni的真面目。项目的基本流程: ...

linux操作系统与应用程序的main函数

main是应用程序和操作系统之间约定好的一个接口名,除了这点main和其它的函数没啥区别...

Linux操作系统网络驱动程序编写

Linux操作系统网络驱动程序编写 一.Linux系统设备驱动程序概述 1.1 Linux设备驱动程序分类 1.2 编写驱动程序的一些基本概念 二.Linux系统网络设备驱动程序 ...

Linux操作系统分析(2)- 进程的创建与可执行程序的加载

1.进程管理        Linux中的进程主要由kernel来管理。系统调用是应用程序与内核交互的一种方式。系统调用作为一种接口,通过系统调用,应用程序能够进入操作系统内核,从而使用内核提供...

java开发第二个jni示例程序(基于linux操作系统)--native层调用java方法

在java开发第一个jni示例程序(基于linux操作系统)--java层调用native方法一文中向大家介绍了java层如何调用native层的方法,建议大家先读那一篇博客,因为编程的思路没变,重复...

Linux操作系统分析-(2)进程的创建与可执行程序的加载

实验二:进程的创建与可执行程序的加载 学号:SA***424 姓名:**明 实验环境:VMware,ubuntu11.04 一.进程的创建 进程有内核态进程和用户态进程之分。所以进程的创建也就...

Linux操作系统实验二:进程的创建与可执行程序的加载

SA*****210    *明 进程是计算机中已运行程序的实体。程序本身只是指令的集合,进程才是程序(那些指令)的真正运行。进程也是一个可以执行的程序指令集;和该进程相关联的全部数据(包括...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:恢复Linux操作系统的GRUB引导程序
举报原因:
原因补充:

(最多只允许输入30个字)