Linux:安装双系统(Win7+Ubuntu)后,Ubuntu正常,Win7无法启动

操作系统版本:Ubuntu14.04.1和Windows7 sp1x64版

故障现象:

先安装Windows7 SP1 64位版,后使用U盘安装Ubuntu 14.04.1。Ubuntu安装成功后,可正常启动,而GRUB上选择Windows 7菜单项,无法启动到Win7界面,直接返回GRUB菜单界面。

故障分析:

安装Ubuntu的过程中经历分区步骤,如下图。在指定Boot Loader时并未选择默认的选项/dev/sda,而是选择/dev/sda1。因为硬盘的活动分区是第一个分区sda1。Windows7安装程序默认划分一个100MB的小分区用于存储启动文件。而划分的C盘则是硬盘上的第二个分区即sda2。此时如果将GRUB2的引导程序装在“/”所在分区,会造成Ubuntu无法启动,而本人又不想将GRUB2的引起程序装在硬盘的MBR上。因此选择将GRUB安装windows的启动分区Sda1上。

Ubuntu安装成功,重启选择windows7启动,结果悲剧出现。选择Windows 7启动菜单启动Windows,毫无反映几秒钟后返回GRUB启动菜单。

1.为了分析问题打开 Ubuntu 软件中心 安装软件“Inspect boot environment”也可直接搜索“boot-info-script”

2.打开终端,运行命令


sudo bootinfoscript

3.默认输出结果到主文件夹中的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:       ntfs

Boot sector type:  Grub2 (v1.99)

Boot sector info:  Grub2 (v1.99) is installed in the boot 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/BCD

sda2: __________________________________________________________________________

File system:       ntfs

Boot sector type:  Windows Vista/7: NTFS

Boot sector info:  No errors found in the Boot Parameter Block.

Operating System:  Windows 7

Boot files:        /Windows/System32/winload.exe

sda3: __________________________________________________________________________

File system:       ntfs

Boot sector type:  Windows Vista/7: NTFS

Boot sector info:  No errors found in the Boot Parameter Block.

Operating System:

Boot files:

启动信息上看Windows的启动器安装在主硬盘MBR上,而启动文件安装在Sda1上。启动器为bootmgr。Boot sector type是GRUB,并不是NTLDR。Boot sectorinfo中也不是Windows启动器信息。由此可确定位于Sda1启动扇区上的Windows启动器已被GRUB所取代。因此,位于Sda1上的Windows启动器被破坏。

4.下面再看看GRUB启动脚本中的问题。进入/boot/grub目录,打开grub.cfg文件查看,下面显示的grub.cfg有关windows 7启动的部分。


323  ### BEGIN /etc/grub.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_msdos

326        insmod ntfs

327        set root=‘hd0,msdos1‘

328        if [ x$feature_platform_search_hint = xy ]; then

329    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  04EC18F4EC18E22A

330        else

331          search --no-floppy --fs-uuid --set=root 04EC18F4EC18E22A

332        fi

333        parttool ${root} hidden-

334        chainloader +1

335 }

336 set timeout_style=menu

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

338   set timeout=10

339 fi

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

配置文件中Windows启动部分,没有问题。如果硬盘上的Windows启动器没有被GRUB破坏,那么上面的配置完全可以正常工作。在这里特别要提到Chainloader的含义


chainloader +1

chainloader用于切换启动器,+1是指定启动器所在硬盘扇区块位置。334行里的chainloader+1语句的含义是启用在sda1的第一个块的启动器用于引导操作系统。此时sda1的第一个块已经被GRUB所占据,切换启动器的结果就是再启动一遍GRUB。因此当用户在GRUB中选择windows 7 loader后返回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.cfg

2.修改334行的chainloader+1语句,替换成ntldr/bootmgr


........以上省略

331          search --no-floppy --fs-uuid --set=root 04EC18F4EC18E22A

332        fi

333        parttool ${root} hidden-

334        ntldr /bootmgr

335 }

.........以下省略

由ntldr命令完成MBR到bootmgr的引导。

3.保存配置文件,重新启动计算机。你将会看到熟悉的win7启动画面。

时间: 2024-11-03 01:19:10

Linux:安装双系统(Win7+Ubuntu)后,Ubuntu正常,Win7无法启动的相关文章

ubuntu server 14.04 LTS下搭建LAMP环境之最详细笔记之一U盘安装双系统

前言: 一直在WIN上使用PHP,不喜欢用WAMP,每次都是手动在windows配置环境,偶尔有一次装了小红帽玩了两天,感觉不是很习惯就换了回来,过了没几天见讨论LAMP环境,于是安装了ubuntu的desktop版本.安装好了环境使用了一下感觉也没有多大的意思,因为那一段时间没有怎么使用PHP,就这样又忽略掉了这一次学习的机会,直到上周日朋友最近在学习这方面的知识,说是要将一个老式电脑安装一个linux来玩玩.本文原创博客地址:http://www.cnblogs.com/unofficial

双系统重装windows后修复UBUNTU的GRUB

1.问题背景 本子是win7和ubuntu10.04双系统,用的还算好,虽然只有在用QQ的时候还会用到win7,但还是保留windows.可是几天 前,win7突然总是蓝屏.死机,更重要是的背景变成黑的,要求激活.蓝屏可能是显卡太热,黑屏就没有办法,使用过所有的办法重新激活无效后,决定重新安 装xp. 2.实施过程 找到一张萝卜家园的系统盘,从CD启动,选择安装xp原版,选择原来win7的硬盘分区,格式化,安装.重启.进入xp,还好.没有问题.问题是,我的ubuntu没有了~~当然在安装xp就想

在win7下Linux (centos)的安装双系统

在win7下Linux (centos)的安装双系统 装法有两种.(太多了,第二不写了 ) 一.U盘安装 整个过程过程可分为三步. 1.从最后一个硬盘格式化一些空间出来,我的是格式100G, 方法: 在win7下右键点击"我的电脑",进入"管理",再进入"磁盘管理",找到F盘(我最后一个是F盘),点击右键,删除卷,在创建新卷:"30G",(格式为NTFS)(因为我的F盘130G),所以现在剩下100G是空的,别急,空的100G

安装linux windows双系统时出现的问题整合

由于QQ群里很多的运维人员关于就真机双系统的问题 耗费了很多的时间去探讨,企图寻求很多的答案,可谓是乱中取胜,由于有些分区工具,还有装机软件存在的不完美 导致在原有的系统基础分区和引导上出现了各种奇葩的事情  为了以后自己会不出先类似的情况 特此文章敲醒脑门,以备不时之需,废话不多说,直接看. 为了省时间  就不用图了  排版的问题以后再改进! 图片直观在附件. 一: Windows和Ubuntu双系统完全独立的安装方法 摘要: 安装Windows和Ubuntu双系统时很多人喜欢先安装windo

Linux学习笔记——硬盘分区和安装双系统

1.前言 假设电脑上已经安装了windows XP或者windows7.试图在使用windows的同时,在电脑上安装ubuntu. 假设电脑上已经存在C盘.D盘.E盘和F盘,且E盘和F盘的剩余空间较大. 假设ubuntu系统需要40G空间.     [使用软件]傲梅分区助手     [最终目标]为安装ubuntu系统节省出40G左右的空闲空间.40G空间来自于E盘空闲部分和F盘空闲部分.     [步骤简述] [1]从E盘节省出20G空间. [2]从F盘也节省出20G空间. [3]在E盘节省出的

win7+centos6.5安装双系统

前言:之前在琢磨怎么安装双系统 倒腾了两天终于给装上了 使用软件 镜像:CentOS-6.5-x86_64-bin-DVD1.iso 开机引导软件 easybcd2.2 u盘制作软件 USBWriter-1.3 制作过程 1.选择你要制作的镜像路径 2.选择你的u盘 等镜像做好之后,更改开机启动项目,从u盘启动.之后你就可以进入u盘里面. 进入u盘之后的步骤可以参考 安装界面 重启后就按照默认设置一直走.没有坑.然后出现语言设置 后面的你可以参考http://bbs.hh010.com/thre

Vmware虚拟机中安装双系统,Win7无法安装网卡驱动

Vmware虚拟机中安装双系统,Win7无法安装网卡驱动   现象: VMware Workstation 10中安装Windows XP+Windows7双系统,安装后在Win7系统中无法识别网卡驱动,不能上网,在设备管理器中显示如下: 采用系统默认方式更新驱动不成功. 原因: 由于先安装的Windows XP 系统,虚拟机默认在XP系统中虚拟出一块AMD的网卡.该网卡型号Win7中不能识别. 解决方法: 由此可见并非是驱动的问题,因为WIN7虚拟机默认使用Intel的网卡,导致AMD网卡在W

Linux/Windows双系统引导修复

安装双系统建议先安装windows,然后在安装Linux,使用Linux(grub2)引导双系统 如果重新安装了windows,则无法引导进入linux,需要修复引导 在windows下安装easyBCD引导,选择linux引导分区, 如果无法引导进入linux,出现grub命令界面 确认ubuntu的根目录在哪,以及是否给boot单独分区 如根目录在/dev/sdaX,对应(hd0,X-1) 重启选择进入NeoGrub,看到"grub>"就对了 (1)root  (hdX,Y)

我的C语言学习之路——初装Linux(双系统模式)

我的C语言学习之路--初装Linux(双系统模式) 第一次听说Linux是在微软公布不再维护WindowXP系统,当时打开头条网,Linux几乎占据了头条,好奇之下,百度了Linux(Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间)). 第二次听说Linux是在程序员联盟(微信公众号:programmerLeague)   讨论,这也是我真正接触Linux的时候.作为一个编程初学者,对一切有利于编译的软

修改grub2安装双系统的windows引导

用EFI+GPT安装双系统window+linux双系统时,进入linux没问题,但进入window时提示:/EFI/Microsoft/Boot/bootmgfw.efi丢失了,当然,一种做法我们可以进入bios把window的引导作为第一启动项,另一种就是进入linux修复它. 进入linux,以root身份执行:fdisk -l,此时列出硬盘的主要信息如下: Device Start End Size Type/dev/sda1 2048 616447 300M Windows recov