安装linux后无法启动windows 7 解决方法
前几天因为笔记本有点慢,心血来潮想试着换成ubuntu操作系统试试。于是试着在家里台式机安装,按着网上的教程安装成功,启动菜单出现双系统,进入ubunt,就以为安装成功了。第二天老丈人说电脑用不了,一看果然windows 7进不去了。
再网上找了各种资料尝试,下了各种windowPE制作中U盘启动盘进行修复也没成功。想想算了还是研究一下原理,把这几天的研究记录一下。
grub2dos:linux下开源多系统引导程序
grldr:grub的主引导程序,按照menu.lst配置引导系统
bootmgr:windows7(NT6.1)的主引导程序,按照boot/bcd配置引导系统
BCD:Boot Configuration Data,windows多系统引导配置
计算机引导过程说明:
硬盘MBR -->分区PBR(可选) -->主引导程序(grldr、bootmgr)-->查找配置(menu.lst/bcd)-->引导。
一般windows 的MBR逻辑是遍历所有分区,找一个活动扇区,从PBR启动主引导程序
所以想进行多系统引导有3种方法可以实现
1、不修改MBR,使用windows主引导程序,把其它系统配置在bcd中(bcd edit)
2、修正主引导记录,mbr使用grub使用menu.lst
3、不修改MBR,修改PBR,使用grub
之前之所以windows启动不来,是因为把C盘的PBR写入grub,当然启动不起来了。我的解决方式是不用重新安装windows 7,也用不着fixmbr命令
1、安装bootice,把MBR换成grub2
2、把grldr和menu.lst拷贝到启动目录(一般是c盘)
3、修改menu.lst,使用chainloader /bootmgr直接引导windows,而不是使用chainloader +1加载第一扇区引导程序的方式(这是引导grub默认不兼容的操作系统,需要PBR安装操作系统本身的引导程序)
我的menu.lst
default=windows7
timeout=10
color=green/black light-gray/blue
title windows7
chainloader /bootmgr
boot
title Ubuntu
root (hd0,5)
kernel /vmlinuz root=/dev/sda6
initrd /initrd.img
boot