一下内容均来自互联网,仅做记录,以备后用:
方法一:
先准备好以下两个软件
grub for dos(http://sourceforge.net/project/showfiles.php?group_id=104188),选择GRUB4DOS那个就行,用这个来引导linux
explore2fs(http://www.chrysocome.net/explore2fs),这个是在windows下看linux文件用的
以上两个软件或者百度,google下,到处都有,很多,好啦,开始进入步骤
1:把下好的grub for dos 解压到C盘根目录下,取名为grub,把里面的grlrd复制到C盘根目录下
2:找到C盘下面的boot.ini文件(这是个隐藏文件),在里面最后一行加入c:/grldr="linux"
3:新建一个menu.lst文件,把它放在C盘根目录下,里面的内容,以我的为例,如下
title redhat 9.0
root (hd0,7)
kernel (hd0,7)/boot/vmlinuz-2.4.20-8 root=/dev/hda8
initrd (hd0,7)/boot/initrd-2.4.20-8.img
boot
总共5行,每行的意思如下
第一行:title redhat 9.0
这个title跟的值是指你要在菜单上出现用来显示linux的名称
第二行:root (hd0,7)
一般的写法为root(hdX,Y)
对于X,如果你只有一个硬盘且装在这个硬盘(好像是废话……)那么当然为0啦,否则的话以此类推为1,2,等
对于Y,这个会稍微复杂些。在windows下面,由一个主分区-C盘,和N个扩展分区-D,E,F……等组成。但在linux下,hd1~hd4代表主分区,对应于windows下就是C盘,hd5开始为扩展分区,如hd5对应D盘,hd6对应E盘等。grub的分区算法和linux类似,但有一个差别是,它是从0开始计数的,也就是说0~3对应C盘,4对应D盘,以此类推。我自己的电脑分区如下C盘-windows,D,E,F存储资料,剩下的空间给了linux,所以为root(hd0,7)
第三行:kernel (hd0,7)/boot/vmlinuz-2.4.20-8 root=/dev/hda8
把vmlinuz-2.4.20-8换成你对应的文件就行啦。用explre2fs这个软件就可以在windows下看linux分区的文件啦。要有点注意的是,root=/dev/hda8 中的hda8而不是hda7,因为此时是按照liuux的规则而不是grub的规则。
第四行:initrd (hd0,7)/boot/initrd-2.4.20-8.img
也只要把initrd-2.4.20-8.img 替换成你相应的文件就行啦
第五行:root
好像没什么好说吧……
方法二:
重新安装Grub
成功地从光盘启动后,就已经做好了修复Grub的准备。现在就开始着手重装这个引导程序,在Linux命令行下依次输入下面这些命令。
grub
find /boot/grub/stage1
root (hdx,y)
setup (hd0)
quit
表2.1逐条解释了这些命令代表的含义。
表2.1 用于重装Grub的命令详解
命 令 | 含 义 |
grub | 启动光盘上的Grub程序。如果读者正在使用Ubuntu的话,那么应该使用sudo grub以root身份运行 |
find /boot/grub/stage1 | 查找硬盘上的Linux系统将/boot目录存放在哪个硬盘分区中。Grub在安装的时候需要读取这个目录中的相关配置文件 |
root (hdx,y) | 指示Linux内核文件所在的硬盘分区(也就是/boot目录所在的分区),将这里的(hdx,y)替换为上一行中查找到的那个分区。注意这个括号中不能存在空格 |
setup (hd0) | 在第一块硬盘上安装引导程序Grub |
quit | 退出Grub程序 |
至此,重新启动计算机就可以找回久违的双系统了。为了给读者一个更为直观的感受,图2.25显示了笔者在虚拟机上重装Grub的全过程。
图2.25 重装Grub
%提示:Grub对磁盘分区的表示方式和Linux有所不同。Grub并不区分IDE、SCSI抑或是SATA硬盘,所有的硬盘都被表示为“(hd#)”的形式,其中“#”是从0开始编号的。例如(hd0)表示第1块硬盘,(hd1)表示第2块硬盘……依此类推。对于任意一块硬盘(hd#),(hd#,0)、(hd#,1)、(hd#,2)、(hd#,3)依次表示它的4个主分区,而随后的(hd#,4)……则是逻辑分区。例如图2.24中的(hd0,1)表示第1块硬盘的第2个主分区。
方法三:
1.获得MBR备份文件
下载这个文件: http://www.linux-wiki.cn/archieve/grldr.zip ,解压、并把这个文件放在C盘根目录下。
如果在重装windows之前备份了MBR的话那就不用下载上述文件了,直接用你备份的MBR文件就可以了。
2.编辑boot.ini
在Windows中,"我的电脑"上点右键->属性->高级->启动和故障恢复右边的"设置"->上半部分的"编辑"出现用记事本打开的 boot.ini 文件。
(或者直接到C盘下找到这个文件,修改就行,一般是隐藏只读的)
在文件的末尾,加上一行
c:\grldr="Grub"
保存文件,退出,重新启动,就可以进入linux了。
3.恢复原来的启动菜单
实际上对于懒人而言,到此为止就可以了,不过如果你想恢复到重装windows之前的状态,那么可以恢复MBR。
**************************************************************
备份MBR
dd if=/dev/sda1 of=/root/mbr bs=512 count=1
恢复MBR
dd if=/root/mbr of=/dev/sda1 bs=512 count=1
恢复分区表
dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66
注:mbr大小512 所以bs=512 count=1
bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置
方法四:
下面就是解决方案:
1.进入xp系统;
2.安装wingrup这个软件;
3.重新启动,选择grub;
4.按“c”键进入,命令行:
grub >
5.先看看grub的帮助
grub > help
6.使用find命令
grub > /boot/grub/stage1
结果:
grub > (hd0,2)
说明启动盘在第1个盘的第2个分区
7.好了,何以使用cat命令查看一些系统文件的内容
如:cat (hd0,2)/root/grub/menu.lst
8.使用root命令
grub > root (hd0,2)
9.修复grub
使用setup命令
grub > setup (hd0,2)
10.重启,好了
还是要感谢http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=165782&start=0提供的方法