讲解win7启动过程_第1页
讲解win7启动过程_第2页
讲解win7启动过程_第3页
讲解win7启动过程_第4页
讲解win7启动过程_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BIOS MBR Bootmgr BCD Winload exe 内核加载内核加载 1 开机后 BIOS 进行开机自检 POST 然后选择从硬盘进行启动 加载硬 盘的 MBR 并把控制权交给 MBR MBR 是硬盘的第一个扇区 它不在任何一 个分区内 2 MBR 会搜索 64B 大小的分区表 找到 4 个主分区 可能没有 4 个 的活动 分区并确认其他主分区都不是活动的 然后加载活动分区的第一个扇区 Bootmgr 到内存 3 Bootmgr 寻找并读取 BCD 如果有多个启动选项 会将这些启动选项反映 在屏幕上 由用户选择从哪个启动项启动 4 选择从 Windows7 启动后 会加载 C windows system32 winload exe 并开始内核的加载过程 内核加载过程比较长 比较复杂 这里就不一 一讲了 在这个过程中 bootmgr 和 BCD 存放在 Windows7 的保留分区里 而 从 Winload exe 开始 就开始进入到 C 盘执行内核的加载过程了 MBR Master Boot Record 中文意为主引导记录 注意事项注意事项 硬盘的 0 磁道的第一个扇区称为 MBR 它的大小是 512 字节 而这个区域可以 分为两个部分 第一部分为 pre boot 区 预启动区 占 446 字节 第二部分 是 Partition table 区 分区表 占 66 个字节 该区相当于一个小程序 作 用是判断哪个分区被标记为活动分区 然后去读取那个分区的启动区 并运行 该区中的代码 他是不属于任何一个操作系统 也不能用操作系统提供的磁盘操作命令来读取 它 但我们可以用 ROM BIOS 中提供的 INT13H 的 2 号功能来读出该扇区的内容 也可用软件工具 Norton8 0 中的 DISKEDIT EXE 来读取 BCD Boot Configuration Data 启动设置数据 BCD 是操作系统中的 启动设置数据 在有 vista 或 windows7 的多重操作系统中 系统通 bootmgr 程序导入 BCD 文件完成启动菜单的引导 可用 bcdedit exe 程序来编辑 BCD 文件 来调整开机默认操作系统和等待 时间 先让我们看一下 windows7 的启动过程的常识 电脑加电后 首先是启动 BIOS 程序 BIOS 自检完毕后 找到硬 盘上的主引导记录 MBR MBR 读取 DPT 分区表 从中找出活动的 主分区 然后读取活动主分区的 PBR 分区引导记录 也叫 dbr 究 竟该叫什么 网络上争论未休 我们姑且叫它 pbr 吧 PBR 再搜寻分 区内的启动管理器文件 BOOTMGR 在 BOOTMGR 被找到后 控制 权就交给了 BOOTMGR BOOTMGR 读取 boot bcd 文件 BCD Boot Configuration Data 启动配置数据 简单地说 windwows7 下的 bcd 文件就相当于 xp 下的 boot ini 文件 如果存在 着多个操作系统并且选择操作系统的等待时间不为 0 的话 这时就会 在显示器上显示操作系统的选择界面 在我们选择启动 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 与 ubuntu 双系 统 ubuntu 改写了 mbr 在我们把 ubuntu 所在的分区格式化后 既 进不了 windows7 也进不了 ubuntu 开机的时候会出现如图的错误 提示 图一 解决的办法就是重写 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 命令重写 要运行 Bootrec exe 工具 必须启动 Windows RE 为此 请按照下列步骤操作 插入 windows 7 安装光盘 从光盘启动电脑 在光盘启动完成后 按下 shift f10 键 调出 cmd 命令提示符 在 cmd 命令提示符中输入 bootrec fixmbr 回车 这样也就重写了 mbr 图二 分区表存在问题 对于这个问题 限于篇幅 不做详细探讨 系统盘不是活动的主分区 这种情形只要用分区工具 比如 diskgenius 把系统盘设为活动的主分区即可 pbr 出现问题 主要是 pbr 代码被改写 因为被改写的代码不同 所以 出错信息也不相同 比如 WINDOWS7 系统的活动分区 却被写入了 适合于 XP 的 pbr 这样开机的时候就会出现如图的提示 图三 解决办法 就是用 bootrec fixboot 命令重写 pbr 插入 windows7 安装光盘 从光盘启动 在光盘启动完成后 按下 shift f10 键 调出 cmd 命令提示符 在命令提示符中输入 bootrec fixboot 回车 这样也就重建了活动分区的 pbr 这里面还有一个常用的命令也要提一下 这就是 bootsect 插入 windows7 安装光盘 从光盘启动 在光盘启动完成后 按下 shift f10 键 调出 cmd 命令提示符 在 cmd 命令提示符中输 入 bootsect nt60 sys mbr 回车 这个命令会改写活动分区的 pbr 并同 时会改写 mbr 使得 mbr 和 pbr 适合于 windows7 和 vista bootsect exe 程序位于 windows7 安装光盘的 boot 目录下 可以把这 个文件提取出来 在 xp 下的命令行可以运行这个程序 也可以在 winpe 下的命令行运行这个程序 因而这个程序在使用时很方便 而 bootrec exe 命令的使用就没这么方便了 所以 BOOTSECT 命令被应 用得更为广泛一些 另外有一个要点需要指出 vista 的安装光盘里面的 boot 文件夹也存在 着这个小工具 但 vista 的 bootsect 命令没有 mbr 参数 因而它只 能改写 pbr 而不能改写 mbr 这是必须要注意的 实践表明 把一个 硬盘的 mbr 清零 然后运行 windows7 的 bootsect 命令 确实可以发 现 mbr 被恢复正常 这也就表明了 windows7 的 bootsect 命令的确能 够重写 mbr 另外 bootsect 命令也可以重写 xp 的 mbr 和 pbr 而这也是 bootrec 命令所做不到的 xp 的恢复控制台用 fixmbr 命令改写 mbr 用 fixboot 命令改写 pbr 如果是引导文件的问题 一般可以用 bcdboot 命令重新写入引导文件 插入 windows7 安装光盘 从光盘启动 在光盘启动完成后 按下 shift f10 键 调出 cmd 命令提示符 在命令提示符中输入 bcdboot x windows s x 注意 这前一个 x 是 windows7 的 windows 文件夹所在的盘 一般是 c 如果你的不是 c 盘 请改为对应的盘符 这后一个 x 是活动主分 区的盘 符所在 一般也是 c 盘 所以这个命令一般的写法是 bcdboot c windows s c 但需要注意 在 windows re 环境下所看到的盘符与你在 windows7 下 所看到的盘符未必一样 所以需要首先用 dir a 命令确认各盘是否正确 比如 cd d c dir a 这两个命令的作用是 首先进入 c 盘的根目录 然后显示 c 盘根目录 下的所有文件和文件夹 根据所显示的文件或者文件夹 可以判断这 个盘具体是你在 windows7 下所看到的哪一个盘 windows7 的引导文件主要是 bootmgr 和 boot 文件夹里面的文件 而 boot 文件夹里面的文件主要是 bcd 文件 bcdboot 命令会在指定 的分 区内重新写入全部 windows7 的引导文件 如果只是 bcd 文件有问题 则可以用 bootrec 命令重建 bcd 插入 windows7 安装光盘 从光盘启动 在光盘启动完成后 按下 shift f10 键 调出 cmd 命令提示符 在命令提示符中输入 bootrec RebuildBcd 这个命令如果搜到没有写入 bcd 的 windows7 或者 vista 的操作系统 会提示你是否写入 按提示输入 Y 也就会写入了的 或者用 bcdedit 命令手动改写 bcd 但操作要复杂得多 具体案例分析 案例一 怪事 系统盘不是活动的主分区 在网上看到一则求助 windows7 系统运行正常 只是在磁盘管理中所 看到的则是 系统盘不是活动的主分区 图四 我们在安装了一键还原精灵装机版后 在开机的时候按下 F11 键可以 启动一键还原程序 但我们在格式化系统盘后 在开机的时候仍是可 以这样操作的 而所谓的 pbr 是高级格式化的时候产生的 这表明了 一键还原精灵的启动代码不是写入了活动分区的 pbr 如果是的话 在 格式化的时候已经被清除了 而是写入了 MBR 通过在 MBR 中设定 首先读取一键还原精灵的隐藏分区 然后才读取活动的主分区 那么 现在我们所遇到的这种情形是不是也通过改写 mbr 而指向特定的分区 假设 mbr 没有问题 那么问题就可能出在 pbr 也就是所谓的 dbr win7 的 pbr 中写入的代码应该是去找 bootmgr 但如果这个代码中规 定了 要找的是另外的一个特殊的文件 而再通过这个文件去启动另一 个分区中的 bootmgr 这样就能实现把另一个不是活动的主分区变为 系统盘的目的 通过上面的分析 我们可以得到结论 问题不是出在 mbr 就是出在 pbr 解决的办法就是先试着重建 mbr 如果不能解决 那就可以肯定 问题出在 pbr 只要重建 pbr 就能解决问题的 于是首先重建 mbr 问题依旧 然后再重建 pbr 问题果然得到解决 案例二 开机的时候出现 BOOTMGR is missing press ctrl alt del to restart 翻译成汉语就是 bootmgr 缺失 按 Ctrl Alt Del 重新启动 这是很常见的故障 既然是 bootmgr 缺失 我们一般只要用 bcdboot 命令重建引导文件即可 这种情形产生的原因 一般可能有 bootmgr 文件确实没有了 这是 最为常见的 一种则是由磁盘错误导致的 这种情形下 在 winpe 下 运行一下 chkdsk f 命令也可能解决 有朋友使用 Diskeeper 对 MFT 碎片进行整理 开机的时候也出现了这个提示 估计可能是用 DISKEEPER 进行的 MFT 磁盘整理后 这或者是 diskeeper 的一个 bug 因而不建议用 diskeeper 进行 mft 碎片整理 一位网友因为好奇 把 C 盘设成了活动的 active partition 是这样 设置活动的 对计算机点右键 管理 硬盘管理 右键点 C 盘 设置为 活动的 靠 怎么回事啊 重启后居然无法启动 显示 bootmgr is missing Ctrl Alt Delete to restart 然后还是如此 这是从网上找到的一个案例 分析可以得出结论 他所装的 windows7 应该存在着一个隐藏的 系统保留 分区 这个隐藏的系统保留分区才是 真正的活动主分区 而他的 c 盘则应该不是活动的 他把 c 盘设为活 动 这也就意味着取消了 系统保留 分区的活动状态 但引导文件是在 系统保留 分区 而不是在 c 盘 c 盘变成了活动的主分区 mbr 就会 启动 c 盘的 pbr 而 c 盘的 pbr 又会去 c 盘找 bootmgr 但 c 盘没有 bootmgr 所以出错也就是必然的 了 解决的办法其实只要简单地再 把系统保留分区设为活动即可 这位朋友制造了问题 但好象并没能最后解决问题 真所谓会者不难 难者不会 案例三 开机的时候出现 BOOTMGR is compressed Press Ctrl Alt Del to restart 翻译成汉语就是 bootmgr 被压缩 按 Ctrl Alt Del 重新启动 这种情形产生的原因是因为对系统盘进行了压缩 奇怪的是 对于这 种情形 我们用 bcdboot 命令重建引导文件却并不能解决 但是 我们可以运行命令 compact u a f i s c 这样可以使得问题得到解决 compact 程序位于 windows system32 文件夹下 所以我们要先用 CD 命令进入 windows system32 目录 这里是假设 c 盘是 bootmgr 所在的盘 如果不是 要改为对应的盘符 网上有朋友用这个命令的时候并没有解决问题 原因则在于 这位朋 友所运行的命令是 compact u a f i s c 没有后面这个 所以命令并没有实现运行者的目的 从命令本身所 提供的帮助说明来看 这个 似乎是没有必要的 但实际操作表明 这个 是必须的 这个命令会把已经压缩的 C 盘文件完全解压 真所谓解铃还須系铃人 注意 只运行命令 compact u a f i c bootmgr 并不能解决问题 有 网友发现 运行 Bootrec exe fixmbr Bootrec fixboot 然后重启 这样可以解决问题 测试表明 其实只需要运行 Bootrec fixboot 这一 个命令即可 这是另类的解决的办法 猜想可能是 对驱动压缩后 PBR 中的 BPB 表并没有随之修改 所以 BPB 表中所记录的分区信息 与实际的分区信息不一致 运行 Bootrec fixboot 命令后重写了 bpb 这样就使得二者变为了一致 实践表明 用 bootsect 命令也能实现对这个问题的解决 有网友发贴 说是装了 xp 与 vista 双系统 启动 vista 系统出现了 BOOTMGR is compressed 于是他在 xp 下取消了系统盘的压缩状 态 但这位网友的话未必可信 因为如果 ntldr 也被压缩了的话 则 xp 启动的时候会出现 ntldr is compressed Press Ctrl Alt Del to restart 除 非这位朋友只压缩了 bootmgr 而没有压缩 ntldr 但这一般不太可 能 这种压缩一般是对整个盘进行压缩的时候产生的 如果压缩指定 文件的话 一 般不会有人去压缩 bootmgr 和 ntldr 的 实践表明 在 windows7 下 即便指定对整个的系统盘进行压缩 一般也不能压缩 bootmgr 的 会 提示拒绝访问 但是 在开机的时候仍会出现出错提 示 bootmgr is compressed 案例四 先装 的 windows7 后装的 linux 在 linux 系统出问题后 既进不了 linux 也进不了 windows7 这里面的原因是 mbr 和活动分区 的 pbr 被 改写 只要重建 mbr 和活动分区的 pbr 也就可以进入 windows7 了 最简单的办法是用 bootsect 命令解决 bootsect nt60 sys mbr 案例五 先装的 windows7 后装的 xp 没有了 windows7 的启动项 这个需要三步解决问题 一 用 bcdboot 命令重建 windows7 的引导文件 二 用 bootsect 命令恢复 windows7 的 mbr 和 pbr 三 进入 windows7 后 用 bcdedit 命令添加 xp 的启动项 巧用巧用 Bootrec 修复修复 windows7 修复主引导记录修复主引导记录 MBR windows 下修复 MBR 引用内容 命令 bootrec fixmbr 可以在 Windows 恢复环境 Windows RE 中使用 Bootrec exe 工具解决和修复 Windows Vista 和 windows7 中以下项目的问题 主启动记录 MBR 启动扇区 启动配置数据 BCD 存储 注意 使用 Windows RE 解决启动问题时 应该首先尝试 系统恢复选项 对话框中的 启 动修复 选项 如果 启动修复 选项不能解决此问题 或者如果必须通过较多个步骤手动解 决此问题 请使用 Bootrec exe 工具 要运行 Bootrec exe 工具 必须启动 Windows RE 为此 请按照下列步骤操作 1 将 Windows Vista 安装盘放入光盘驱动器中 然后启动计算机 或开机按 F8 选择修复 系统 2 在系统提示时按某个键 3 选择语言 时间 货币 键盘或输入法 然后单击 下一步 4 单击 修复计算机 5 单击要修复的操作系统 然后单击 下一步 6 在 系统恢复选项 对话框中 单击 命令提示符 7 键入 Bootrec exe 然后按 Enter Bootrec exe 选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论