这是第二篇,也是最后一篇。主要介绍Windows Vista/2008/7/2008R2/8/2012的启动过程,即NT6.X的启动过程。我这具体用利用Vista为代表说明。

一样的,文字很多时候啰嗦无力,我们还是搞点图文并茂的,然后适当解说。

一般系统所在分区下会有如下的文件或文件夹,下面给予说明:

Bootmgr:Windows Nt6 系列的引导管理器,位于主激活分区内,属于系统隐藏文件。

Boot.bak:boot.ini 的备份,双系统的时候会存在。 
/boot/[  语言  ]/bootmgr.exe.mui:   在主分区  boot  目录下包括多个语言的  BOOTMGR.EXE.MUI  ,用来和  bootmgr  组合形成启动菜单   
/boot/bcd:相当于  xp  时代的  boot.ini  ,不过  bcd  是基于数据库的,不是基于文本的,也是为了安全性考虑吧。微软专门提供了一个修改  bcd  的程序  bcdeit  来修改相应的参数   
/boot/bcd.log&bcd.log1&bcd.log2:log 文件。 
/boot/bootstat.dat:引导时候用来记录引导状态的数据文件 
/boot/memtest.exe:内存测试工具

最后用文字来解释一下NT6.X的启动原理。(正常流程 , 因为还有很多非正常的情况启动过程有些区别,就不再这里赘述了)

首先加电之后是bios程序启动,bios自检完成之后,将mb 的代码读入内存,管理权交给mbr, mbr再读取dpt,从dpt找出硬盘的所有分区哪一个是激活的主分区。到这里为止,所以系统都是一样的。下面就有区别了。Dpt 读完找到主分区之后然后找到这个主分区的pbr ,pbr 位于激活主分区的第一个扇区。安装不同操作系统的时候pbr是会被改变的,xp的pbr写的代码是去找ntldr。而vista及以后的pbr里写进的就是去找bootmgr。

这个时候显示器上还没有显示引导管理器的界面。Bootmgr被找到之后管理权就交到了bootmgr 。Boot Manager首先从BCD中读取Boot Manager菜单的语言版本信息,然后再调用BOOTMGR与相应语言的BOOTMGR.EXE.MUI组成相应语言的启动菜单,之后才会在显示器上显示引导管理器,也就是选择多操作系统的那个文字界面。最后,当你选择了相应的操作系统,这里当然是vista(如果选择 xp, 会转入 xp 的启动流程,找到xp的ntldr然后启动),bootmgr 就去寻找系统分区(系统分区和主分区的概念不是一样的哦)windows/system32 下的 winload.exe 加载操作系统内核。剩下的事就是启动 windows系统了。

这里的部分细节可用下图展示: 

补充知识:

EFI(可扩展固件接口) 
       可扩展固件接口(英文名Extensible Firmware Interface 或EFI)是由英特尔,一个主导个人电脑技术研发的公司推出的一种在未来的类PC的电脑系统中替代BIOS的升级方案。BIOS技术的兴起源于IBM PC/AT机器的流行以及第一台由康柏公司研制生产的“克隆”PC。在PC启动的过程中,BIOS担负着初始化硬件,检测硬件功能,以及引导操作系统的责任,在早期,BIOS还提供一套运行时的服务程序给操作系统及应用程序使用。BIOS程序存放于一个掉电后内容不会丢失的只读存储器中,系统加电时处理器的第一条指令的地址会被定位到BIOS的存储器中,便于使初始化程序得到执行。

UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form(www.uefi.org)的国际组织,贡献者有Intel,Microsoft,AMI,等几个大厂,属于open source,目前版本为2.1。现在是它一个开放的技术,国内已经有不少公司为了申请郭嘉"核高基"经费开始研究这个东西。UEFI中图形化的硬件设置界面是 Intel 为全新类型的 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是有近20多年历史的PC BIOS的继任者。 
         可以说,未来将是一个“没有特定 BIOS”的电脑时代。与传统BIOS 相比,UEFI最大的几个特点如下: 
1. 编码99%都是由C语言完成; 
2. 一改之前的中断、硬件端口操作的方法,而采用了Driver/protocal的新方式; 
3. 将不支持X86模式,而直接采用Flat mode(也就是不能用DOS了,现在有些 EFI 或 UEFI 能用是因为做了兼容,但实际上这部分不属于UEFI的定义了); 
4. 输出也不再是单纯的二进制code,改为Removable Binary Drivers; 
5. OS启动不再是调用Int19,而是直接利用protocol/device Path; 
6. 对于第三方的开发,前者基本上做不到,除非参与BIOS的设计,但是还要受到ROM的大小限制,而后者就便利多了。

GPT(全局唯一标识分区表)

GPT(Globally Unique Identifier Partition Table)一种由基于 Itanium 计算机中的可扩展固件接口 (EFI) 使用的磁盘分区架构,GPT是EFI方案的一部分,但并不依赖于EFI主板,在BIOS主板的PC中也可使用GPT分区。与主启动记录 (MBR) 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区,支持高达 18 千兆兆字节的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。
       与支持最大卷为 2TB 并且与每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)的主启动记录 (MBR) 磁盘分区的样式相比,GUID 分区表 (GPT) 磁盘分区样式支持最大卷为 18 EB ((1EB=1024PB=1,048,576TB,不过NTFS格式最大仅支持256TB。并且每磁盘最多有 128 个分区)。与 MBR 分区的磁盘不同,至关重要的平台操作数据位于分区,而不是位于非分区或隐藏扇区。另外,GPT 分区磁盘有多余的主要及备份分区表来提高分区数据结构的完整性。也就是说,如果你有一个超过2TB的磁盘,要完全使用,必须是GPT

转载于:https://blog.51cto.com/staronmytop/1169569

Windows操作系统启动介绍(二)相关推荐

  1. 计算机题windows如何操作,2015年职称计算机Windows操作系统模拟题(二)

    单项选择题. 1.在Windows98中,不能打开"资源管理器"窗口的操作是( ) A.用鼠标右键单击"开始"按钮 B.用鼠标左键单击"任务栏&quo ...

  2. linux操作系统启动流程与kickstart文件制作

    文章目录 一.Linux操作系统启动流程 1.1.简单回顾linux系统组成以及内核作用 1.2.简单了解一下磁盘构成以及相关基础知识 二.CentOS 启动流程(只适用于MBR类型的PC架构主机) ...

  3. 操作系统启动过程——硬件自检+系统引导+系统加载+系统登录

    以下的内容都是在网上搜集并整理的,希望有问题的朋友在提问之前能先在这里看一看,不要浪费了众多为网络奉献的众多网友的心血! 电脑及操作系统的启动过程是一个很复杂的过程,对于我们大多数只是希望把电脑玩的更 ...

  4. 无线多操作系统启动之uInitrd阶段NFS挂载篇

    Focusstart · 2014/06/06 14:23 0x00 背景 项目组在无线环境下实现了Ubuntu12.04和Android4.0系统在Pandaboard ES开发板上的无线加载.启动 ...

  5. 电脑出现Windows7/vista/server Windows7vista/server(noslic)等等怎么办?还有grub是​来自GNU项目的多操作系统启动程序​

    问:电脑出现Windows7/vista/server Windows7vista/server(noslic)等等怎么办 答:亲!您好,很高兴为您解答 .亲解决方法如下反复开关机试试,放一段时间试试 ...

  6. [笔记]Windows核心编程《二十》DLL的高级操作技术

    系列文章目录 [笔记]Windows核心编程<一>错误处理.字符编码 [笔记]Windows核心编程<二>内核对象 [笔记]Windows核心编程<三>进程 [笔记 ...

  7. 天翼云服务器共享文件夹,天翼云Windows操作解答

    天翼云Windows操作解答 天翼云Windows操作系统在操作中会遇到哪些问题?如何解决呢?有什么操作限制?今天一团小编就来为大家详细介绍一番. 一.如何上传文件到Windows云主机 方法有很多种 ...

  8. win10系统怎么启用策略服务器,Windows 10系统启动项安全引导策略

    Windows 10操作系统比起以往操作系统,具有一项非常有特色的免受恶意软件攻击的安全措施,这项措施在系统启动的时候就已经启用,并且保护用户不受恶意软件(应用商店中的)的侵扰.甚至这项安全措施缺少访 ...

  9. 简述windows计算机启动过程,Windows XP 系统启动过程概述

    从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段: 1. 预引导(Pre-Boot)阶段: 2. 引导阶段: 3. 加载内核阶段: 4. 初始化内核阶段: 5. 登陆. 每个启 ...

最新文章

  1. lucene 索引流程整理笔记
  2. 云安全能否给企业带来真正的安全?
  3. oracle 枚举_枚举导出为sql语句java实现
  4. 波斯顿动力机器人为啥那么牛逼?
  5. 什么是即席查询及即席查询实现
  6. 几个常用的C语言编程工具,极力推荐!
  7. java tic tac toe_java – 对Tic Tac Toe的建议
  8. 网易的爆款密码,藏在Q3财报里
  9. Path.Direction.CCW与Path.Direction.CW的意思
  10. 【干货】张小龙的30条产品法则
  11. Raspberry Pi 4 with Debian GNU/Linux 11 (bullseye)
  12. lisp语言与python_5种语言混合编程:C 、JS、python、Lisp、汇编
  13. ESP8266-Arduino编程实例-LPS25H压阻式压力传感器驱动
  14. 你想要的宏基因组-微生物组知识全在这(180901)
  15. 计算机论文结束语致谢,毕业论文致谢结束语3篇
  16. centos配置linuxptp
  17. 计算机学院论文谢辞怎么写,论文致谢:函授毕业论文谢辞怎么写
  18. 小人物解决四大数学问题:记传奇华人数学家李天岩
  19. PhpStudy 后门分析
  20. 一些java基础题答案汇总

热门文章

  1. VTK:小部件之ContourWidget
  2. OpenCV相机运动估计
  3. OpenCV超分辨率基准测试
  4. C++实现complex number复数的算法(附完整源码)
  5. QT的QBarCategoryAxis类的使用
  6. QT的Q3DTheme类的使用
  7. C++构造函数调用规则
  8. mysql 提高事物效率_怎么提高向mysql中插入数据的效率-问答-阿里云开发者社区-阿里云...
  9. 1_自然语言处理简介、数据源、应用领域、课程体系
  10. IntelliJ IDEA 2017.01配置jdk和tomcat