Ubuntu安装后grub无法正确引导进入Win7系统的两种有效解决方法

本文总结了装完Ubuntu后,进不了Win7系统的两种有效解决方法。症状描述:原系统是Wind7,通过EasyBCD加载ubuntu-12.04.5-desktop-amd64.iso,安装了Ubuntu。装完后重启时能看到一条可选项“Windows 7 (loader) (on /dev/sda1)”,如下图:

Ubuntu安装后grub无法正确引导进入Win7系统的两种有效解决方法_第1张图片

但是选它(上图中最后一个条目)Enter以后出来“Install Ubuntu 12.04.5 LTS”,这是装Ubuntu之前在Win7里用EasyBCD编辑(Add/remove a Entry--->NeoGRUB--->Install---->Configure)弹出的menu.lst文档时设置的title。如果继续Enter一下,就会进入安装Ubuntu的黑屏白字安装窗口......


失败的尝试:

1) 进入Ubuntu,找到之前放在Win7的C盘根目录的.iso,vmlinuz.efi和initrd.lz;重启试图进Win7,问题依旧,无明显变化。

2) 手动修改 /boot/grub/grub.cfg文件中的红色部分为如下内容:

### BEGIN /etc/grub.d/30_os-prober ###

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {

   insmod part_msdos

   insmod ntfs

   set root='(hd0,msdos1)'

   search --no-floppy --fs-uuid --set=root 000B1EBC0002A699

   chainloader +1

}

set timeout_style=menu

if [ "${timeout}" = 0 ]; then

 set timeout=10

fi

### END /etc/grub.d/30_os-prober ###

替换,保存,退出。问题依旧,无明显变化。



各种Google后,测试通过如下2种有效方法:


方法一: 执行命令,自动修改

arac@test:~$sudo grub-install /dev/sda

[sudo] password for ltu:

Installation finished. No error reported.

arac@test:~$sudo chmod -x /etc/grub.d/30_os-prober

arac@test:~$sudo gedit /etc/grub.d/40_custom


在打开的40_custom文件中输入如下一段内容:

menuentry 'Win7' {

set root=(hd0,1);                                注意:这个地方1前面不能有空格,也就是说如果这样(hd0, 1),是进不了Win7的,会报“No such disk”。

ntldr /bootmgr

boot

}

然后执行:

arac@test:~$sudo update-grub

Generating grub.cfg ...

Found linux image: /boot/vmlinuz-3.13.0-43-generic

Found initrd image: /boot/initrd.img-3.13.0-43-generic

Found linux image: /boot/vmlinuz-3.13.0-32-generic

Found initrd image: /boot/initrd.img-3.13.0-32-generic

Found memtest86+ image: /memtest86+.bin

done

arac@test:~$


以上命令执行完以后,细心的话你可以发现/boot/grub/grub.cfg文件的前后变化如下:(其它文字不变,只变了下图框出来的这段。)

Ubuntu安装后grub无法正确引导进入Win7系统的两种有效解决方法_第2张图片

重启,可以看到一条Win7启动条目。如下:

Ubuntu安装后grub无法正确引导进入Win7系统的两种有效解决方法_第3张图片

选择“Win7”,Enter,正常登录到之前Win7。附上一张我漂亮的桌面:

Ubuntu安装后grub无法正确引导进入Win7系统的两种有效解决方法_第4张图片


方法二:手动编辑

受方法一启发,更直接的方式就是直接改一下grub.cfg文件则可。Ctrl+alt+T打开终端。

arac@test:~$sudo gedit /boot/grub/grub.cfg

再打开的grub.cfg文件尾部添加一段:

menuentry 'Win7' {

set root=(hd0,1);

ntldr /bootmgr

boot

}

保存,退出。重启。也可以看到Win7启动条目了。但这种做法不会像方法一那样更新了grub.cfg文件,删除掉了那条旧的“Windows 7 (loader) (on /dev/sda1)条目”。可以直接在grub.cfg文件中删除那一段则可。



参考:

http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=333739


你可能感兴趣的:(Linux学习)