先让我们看一下windows7的启动过程的常识:电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取活动主分区的PBR(分区引导记录,也叫dbr),PBR再搜寻分区内的启动管理器文件BOOTMGR,在BOOTMGR被找到后,控制权就交给了BOOTMGR。BOOTMGR读取\boot\bcd文件(BCD=BootConfigurationData,也就是“启动配置数据”,简单地说,Windwows7下的bcd文件就相当于xp下的boot.ini文件)。在我们启动Windows7后,BOOTMGR就会去启动盘寻找WINDOWS\system32\winload.exe,然后通过winload.exe加载windows7内核,从而启动整个windows7系统。

可以把这个过程简单地概括为:

BIOS->MBR->DPT->pbr->Bootmgr->bcd->Winload.exe->内核加载->整个windows7系统。

MBR->DPT->pbr->Bootmgr->bcd这一段可能出现的故障的解决。

mbr出现问题,主要是mbr代码被改写,因为被改写的代码不同,所以出错信息也各不相同。比如我们装了Windows7系统,分区格式化后,既进不了windows7,开机的时候会出现如图的错误提示:

解决的办法就是重写mbr。对于重写。对于重写mbr,我们所熟知的是在dos下用fdisk/mbr命令进行重写。Fdisk/mbr重写的mbr与xp是兼容的,但与Windows7已经不那么兼容了。实践表明:用fdisk/mbr命令重写windows7的mbr后,需要重建bcd,否则不能正常启动windows7。这里面的原因是fdisk/mbr命令改写了mbr中的硬盘签名。一般分区工具都是可以重写mbr的,比如diskgenius,它所重写的mbr与windows7是兼容的。也可以用bootrec/fixmbr命令重写。要运行ootrec.exe工具,必须启动WindowsRE。为此,请按照下列步骤操作:

插入windows7安装光盘,从启动电脑完成后,从启动电脑在完成后按下shift+f10键,调出cmd命令提示符。在cmd命令提示符中输入:

bootrec/fixmbr

回车。这样也就重写了mbr。

pbr出现问题,主要是pbr代码被改写,因为硬盘件不同所以出错信息代码被改写。比如WINDOWS7系统的活动分区,却被写入了适合于XP的pbr,这样,这样开机的时候就会出现ntldrismissing

简单的解决办法就是用bootrec/fixboot命令重写pbr:

插入windows7安装光盘,从启动完成后按下shift+f10键,调出cmd命令提示符。在中输入:

bootrec/fixboot

回车。这样也就重建了活动分区的pbr。

这里面还有一个常用的命令也要提下,这就是bootsect:

插入windows7安装光盘,从启动在完成后按下shift+f10键,调出cmd命令提示符。在cmd命令提示符中输入:

bootsect/nt60sys/mbr

回车。这个命令会改写活动分区的pbr,并同时会改写mbr,使得mbr和pbr适合于windows7和vista。

bootsect.exe程序位于windows7安装光盘的boot目录下,可以把这个文件提取出来,而bootrec.exe命令的使用就没这么方便了。所以BOOTSECT命令被应用得更为广泛一些。

Win7 启动修复的更多相关文章

  1. Win7启动修复MBR(Win7+Linux删除Linux后进入grub rescue的情况)

    事因:我的笔记本原先同时安装了Win7+Linux,昨天发现硬盘实在不够用(才60G,虽然还有个500G的移动硬盘),就想把里面的Ubuntu格了.都是用虚拟机做测试的多.后来就格了Ubuntu所在的 ...

  2. Win7启动修复(Ubuntu删除后进入grub rescue的情况)

    起因:装了win7,然后在另一个分区里装了Ubuntu.后来格掉了Ubuntu所在的分区.系统启动后出现命令窗口:grub rescue:_ 正确的解决方式: 1.光驱插入win7安装盘或者用USB启 ...

  3. win7启动出现蓝屏STOP: 0X0000007B

    解决方法:开机进BIOS,更改Interface Combination,即硬盘的接口种类,由默认的RAID改成了AHCI,保存,重启,一切正常. 事件过程: 今天开机进入win7,在start wi ...

  4. WIN7+Ubuntu双系统,win7启动不了

    在网上搜索了下,大多说的是因为重装引起的坏道, 我经过半天的搜索才找到了问题所在,首先看看下面连接的二楼大神给出的解决方案: https://forum.ubuntu.org.cn/viewtopic ...

  5. CentOS 7 添加win7启动项——修改默认启动项

    CentOS 7使用grub2引导启动,在win7之后装完CentOS再启动会丢失win7启动项. 首先,添加win7启动项,步骤如下: 1.使用root登陆系统 2.用文本编辑器打开 /boot/g ...

  6. 用U盘与移动硬盘制作WIN7启动盘(亲自实践)

    昨晚帮一个娃娃用移动硬盘里面的一个分区帮他制作成一个win7系统盘,为了以后万一换系统的时候方便.我自己有一个U盘坐的启动盘,移动硬盘没有倒腾过,看网上N多都是相互抄,制作都是WINPE系统的,相当蛋 ...

  7. win7启动apache-activemq报错及解决办法

    win7启动apache-activemq报错,如下: jvm 1 |jvm 1 | Java Runtime: Oracle Corporation 1.8.0_74 C:\Program File ...

  8. linux内核启动修复

    linux内核启动修复 首先看一下linux内核重要文件grub.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # gru ...

  9. [转载]-win7启动本地MongoDB的四种方式

    2016年04月07日 09:52:34 cherry__cheng 阅读数:19451 标签: win7启动本地MongoDB的四种方式快速启动本地mongodb 更多 个人分类: mongodb& ...

随机推荐

  1. [HAOI2015]按位或(min-max容斥,FWT,FMT)

    题目链接:洛谷 题目大意:给定正整数 $n$.一开始有一个数字 $0$,然后每一秒,都有 $p_i$ 的概率获得 $i$ 这个数 $(0\le i< 2^n)$.一秒恰好会获得一个数.每获得一个 ...

  2. 前端学习 -- Html&Css -- 表单

    表单的作用就是用来将用户信息提交给服务器的,比如:百度的搜索框 注册 登录这些操作都需要填写表单. 使用form标签创建一个表单,form标签中必须指定一个action属性,该属性指向的是一个服务器的 ...

  3. 2018 ACM 网络选拔赛 沈阳赛区

    B. Call of Accepted #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  4. Eclipse使用总结(不定时更新)

    1.安装activiti插件 (1)在线下载 点击Add输入Location:http://activiti.org/designer/update/   Name:Activiti (2)本地安装 ...

  5. Python基础数据类型-列表(list)和元组(tuple)和集合(set)

    Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...

  6. Windows安装nginx服务

    1.测试版本 nginx版本:nginx-1.10.2:windows版本:win10 2.下载winsw. 当前最新版本为:winsw-2.0.1-bin.exe.下载地址:http://repo. ...

  7. Redis 安全配置

    1.禁止一些高危命令 修改 redis.conf 文件,添加 rename-command FLUSHALL "" rename-command FLUSHDB "&qu ...

  8. mysql alter 用法,修改表,字段等信息

    一: 修改表信息 1.修改表名 alter table test_a rename to sys_app; 2.修改表注释 alter table sys_application comment '系 ...

  9. DIV仿textarea文本域,contenteditable如何只能输入纯文本

    对于支持HTML5浏览器有2种方法: 1. HTML5 <div contenteditable="plaintext-only"></div> 2.  C ...

  10. .Net并行编程之同步机制

     一:Barrier(屏障同步) 二:spinLock(自旋锁) 信号量  一:CountdownEvent 虽然通过Task.WaitAll()方法也可以达到线程同步的目的. 但是Countdown ...