1、安装 Ubuntu 后 Windows 7 无法启动操作系统版本:Ubuntu 14.04.1 和 Windows7 sp1 x64 版故障现象:先安装 Windows7 SP1 64 位版,后使用 U 盘安装 Ubuntu 14.04.1。Ubuntu 安装成功后,可正常启动,而 GRUB 上选择 Windows 7 菜单项,无法启动到 Win7 界面,直接返回GRUB 菜单界面。故障分析:安装 Ubuntu 的过程中经历分区步骤,如下图。在指定 Boot Loader 时并未选择默认的选项/dev/sda,而是选择/dev/sda1。因为硬盘的活动分区是第一个分区 sda1。Windows
2、7 安装程序默认划分一个 100MB 的小分区用于存储启动文件。而划分的 C 盘则是硬盘上的第二个分区即 sda2。此时如果将 GRUB2 的引导程序装在“/”所在分区,会造成 Ubuntu 无法启动,而本人又不想将 GRUB2 的引起程序装在硬盘的 MBR 上。因此选择将 GRUB 安装windows 的启动分区 Sda1 上。Ubuntu 安装成功,重启选择 windows7 启动,结果悲剧出现。选择 Windows 7 启动菜单启动 Windows,毫无反映几秒钟后返回 GRUB 启动菜单。1.为了分析问题打开 Ubuntu 软件中心 安装软件“Inspect boot environm
3、ent”也可直接搜索“boot-info-script”2.打开终端,运行命令sudo bootinfoscript3.默认输出结果到主文件夹中的 RESULTS.txt,内容如下:Boot Info Script 0.61 1 April 2012= Boot Info Summary: = Windows is installed in the MBR of /dev/sda.sda1: _File system: ntfsBoot sector type: Grub2 (v1.99)Boot sector info: Grub2 (v1.99) is installed in the b
4、oot sector of sda1 and looks at sector 1886304656 of the same hard drive for core.img. core.img is at this location and looks in partition 112 for . No errors found in the Boot Parameter Block.Operating System: Boot files: /bootmgr /Boot/BCDsda2: _File system: ntfsBoot sector type: Windows Vista/7:
5、NTFSBoot sector info: No errors found in the Boot Parameter Block.Operating System: Windows 7Boot files: /Windows/System32/winload.exesda3: _File system: ntfsBoot sector type: Windows Vista/7: NTFSBoot sector info: No errors found in the Boot Parameter Block.Operating System: Boot files: 启动信息上看 Wind
6、ows 的启动器安装在主硬盘 MBR 上,而启动文件安装在 Sda1 上。启动器为 bootmgr。Boot sector type 是 GRUB,并不是 NTLDR。Boot sector info 中也不是Windows 启动器信息。由此可确定位于 Sda1 启动扇区上的 Windows 启动器已被 GRUB 所取代。因此,位于 Sda1 上的 Windows 启动器被破坏。4.下面再看看 GRUB 启动脚本中的问题。进入/boot/grub 目录,打开 grub.cfg 文件查看,下面显示的 grub.cfg 有关 windows 7 启动的部分。323 # BEGIN /etc/gru
7、b.d/30_os-prober #324 menuentry Windows 7 (loader) (on /dev/sda1) -class windows -class os $menuentry_id_option osprober-chain-04EC18F4EC18E22A 325 insmod part_msdos326 insmod ntfs327 set root=hd0,msdos1328 if x$feature_platform_search_hint = xy ; then329 search -no-floppy -fs-uuid -set=root -hint-b
8、ios=hd0,msdos1 -hint-efi=hd0,msdos1 -hint-baremetal=ahci0,msdos1 04EC18F4EC18E22A330 else331 search -no-floppy -fs-uuid -set=root 04EC18F4EC18E22A332 fi333 parttool $root hidden-334 chainloader +1335 336 set timeout_style=menu337 if “$timeout“ = 0 ; then338 set timeout=10339 fi340 # END /etc/grub.d/
9、30_os-prober #配置文件中 Windows 启动部分,没有问题。如果硬盘上的 Windows 启动器没有被 GRUB破坏,那么上面的配置完全可以正常工作。在这里特别要提到 Chainloader 的含义chainloader +1chainloader 用于切换启动器, +1 是指定启动器所在硬盘扇区块位置。 334 行里的chainloader +1 语句的含义是启用在 sda1 的第一个块的启动器用于引导操作系统。此时sda1 的第一个块已经被 GRUB 所占据,切换启动器的结果就是再启动一遍 GRUB。因此当用户在 GRUB 中选择 windows 7 loader 后返回
10、GRUB 菜单就以为怪了。处理步骤Win 7 的启动从 MBR 引导,第二步调用 bootmgr,第三步调用 winload.exe。最后由winload.exe 完成 win7 系统的启动。 Sda1 里 bootmgr 文件保存良好,winload 在系统文件夹中也未损坏。因此只要完成 MBR 到 bootmgr 的引导即可修复 Windows 启动。1.修改 grub.cfg 配置文件,Ubuntu 中需要使用管理员权限。打开终端,输入以下命令编辑配置文件:sudo gedit /boot/grub/grub.cfg2.修改 334 行的 chainloader +1 语句,替换成 ntldr /bootmgr.以上省略331 search -no-floppy -fs-uuid -set=root 04EC18F4EC18E22A332 fi333 parttool $root hidden-334 ntldr /bootmgr335 .以下省略由 ntldr 命令完成 MBR 到 bootmgr 的引导。3.保存配置文件,重新启动计算机。你将会看到熟悉的 win7 启动画面。
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。