在用fdisk /mbr时,本来想对机器上的第二块硬盘作清除主引导记录的操作,结果却把装有linux操作系统的第一块硬盘的主引导记录清掉了。现在还不知道fdisk /mbr在两块硬盘上操作的有关问题?
恢复需要进入linux的grub命令行程序,可以从两个途径进入。
一是从安装光盘设置为从光盘启动,进入安装界面后输入linux rescue,进行一系列语言、键盘等的设置后就进入了shell命令行,这时就可以进入grub程序了。
一是从其它途径(如grub启动软盘、从dos引导)进入系统工作状态后进入grub程序。
然后就是输入 grub命令如下:
grub>root (hd0,0) (hd0指第一个硬盘,后面的0指的是/boot/grub目录所在的分区,而不是指的是/所在的分区,如果你的/boot和/分别在两个分区上,就不要弄错了)
grub>setup (hd0) (是指把grub引导程序写入第一个硬盘的主引导记录,如果写成(hd0,0)是指把引导记录写入第一个硬盘的第一个分区的引导扇区中)
执行成功后会显示success的信息。
不过,我的这个redhat linux9.0操作系统挂在amd毒龙700上可以用这个方法把grub恢复到MBR中,但挂在486DX100却不行,启动报告grub read error,要用setup (hd0,0)写入分区的引导扇区才行,不知道是怎么一回事?
在上面的老机上用setup(hd0,0)把grub写到了第一个分区的引导扇区恢复了redhat linux9.0的grub启动后,我又装了一个windows 97操作系统(因为我读的有些html的电子书是使用javascript技术做的,我的linux下的w3m浏览器就没戏了),所以,只好装了一个D版的windows97,专门用来看这本电子书。还有,到现在为止,我还没有找到一个本地的linux翻译软件。在windows下可以安一个翻译软件,免了必须使用网络翻译系统的麻烦。
原来我有一次因为把grub装到MBR上,幸运和疑惑的是装了windows后竟然grub菜单不受影响,我到现在还没有彻底搞明白是怎么一回事。
但是,这次可能是把grub恢复到了第一个分区的引导扇区上,装上windows97后grub就又消失了。我按照上面的方法把grub恢复到第一个分区的引导扇区或MBR上都不行了。然后用dos下的fdisk查看活动分区是安装windows97的那个分区,把活动分区改为第一个分区,重启动系统后还是不行。又通过dos引导到linux下,看到/boot/grub/device.map里面
(fd0) /dev/fd0
(hd0) /dev/hda
中的"(hd0) /dev/hda"这一行是错误的"(hd0) /dev/hdc",把它改正后重新用grub恢复,恢复到MBR和第一启动扇区都试了,还是没作用。上网查了一下,也没有收获。最后试着在dos下用fdisk /mbr重写了MBR,然后把grub恢复到第一分区的引导扇区,grub引导程序恢复正常。如果把grub恢复到MBR上,同样又出现了“Grub Read Error”的问题。搞不懂。
最后,把多重启动配置写入/boot/grub/menu.lst后,使用grub引导的多重启动配置成功。
完整的配置文件如下,记在这里备忘:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hdc2
# initrd /initrd-version.img
#boot=/dev/hdc
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Windows 97
rootnoverify (hd0,2)
chainloader +1
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
Grub引导程序比老式的Lilo引导程序有一个先进的地方就是,改写了配置文件后不必像Lilo程序那样还要运行lilo命令把配置写入硬盘才能工作。Grub程序是上面说的“you do not have to rerun grub after making changes to this file”。