不久前,实验室一个同学电脑上装的本来是Windows 7+Fedora 16双系统,结果他不想用Fedora 16了, 就在windows上把Fedora 16所在的磁盘格式化了。重新启动后Windows 7和Fedora 16都进不去了。界面就一直停在grub输入的地方。索性就进winPE了,PE进去重新安装了一下C盘,不过是ghost安装的,安装好之后重启结果还是不能进入Windows 7,还是grub引导那里。后来我就直接再进入PE,用里面的修复启动项软件重写了MBR,这下能进入Windows 7了,并且在进入Windows 7后开始自动重写输入表,驱动之类的。我想了下,下面是整个过程的解释。
MBR上面有分区表(64字节)和引导程序(446个字节),grub就是装在这个446字节上的。grub功能很强大,grub是支持多系统启动的,还有控制权转交的功能。所有淡淡这么点大小的储存量是不够的。所有在Boot Loader(这里就说是grub了)加载的时候有两个阶段,Stage1,Stage2。Stage1阶段主要是加载Boot Loader上的程序,就是说加载了grub,但这里并没有安装Loader相关的配置文件。在Stage2阶段就是通过gurb来读取配置文件,比如/boot/grub/menu.lst或grubcon.fig,配置文件提供了很多信息,一个比较直观的信息就是开机时候的系统选择菜单(详细配置文件再介绍)。这就可以理解上面的问题了,删除了Linux后,Stage1中grub是加载好了,但是Stage2过程中去加载配置文件就没了。也就不能发挥grub的系统引导功能和控制权转交功能。
那么为什么ghost安装后还是不能恢复引导呢?ghost开始就是克隆硬盘上的数据的,也就是把镜像的文件重新写了一遍Windows 7上的C盘,C盘自己的Boot Loader是重写了。但是MBR不属于任何操作系统,MBR没有写额。所以就导致MBR上Boot Loader还是原来的grub程序,也还是会去读取Fedora 16下的配置文件。
最后就是进入PE之后修复MBR后就OK了,这里的解释就是重写MBR了,不过肯定不会再是grub了,是windows自己的引导程序了。
新闻热点
疑难解答