Windows PE的全名是WindowsPreinstallationEnvironment(WinPE)直接从字面上翻译就

是“Windows预安装环境”。微软的本意是:WinPE仅用做系统维护,并设置了各种限制。可以简单的理解为:PE是Windows系统的超级精简版、超级权限版(以系统system账户登录)!对于无法进入系统、修复系统、分区、重装系统等问题都可以进入PE进行操作,因此PE是系统维护强大的武器!

微软原版的PE,只有“命令行”即DOS窗口。网上流传的各种版本都是“高手们”修改出来的,甚至有的PE可以作为系统来使用,这都偏离了微软的本意。我不主张“肆意扩展”PE的功能来彰显“技术”,但是“可视化操作界面、常用功能的集成”这些都是必要且必须的,我会在以后的文章中逐一解说。

通常PE启动有两种方式:1.加载到内存 2.直接在某个介质(例如光盘)启动。两种方式各有利弊:加载到内存就会对内存大小要求高;直接在某种介质启动速度就会减慢。但是就如今电脑配置飞速发展的趋势来看,内存大小已经不是限制因素,因此多数是以“加载到内存”的方式启动。

下面简要介绍Windows PE的命名规则:

Windows PE 1.x表示Windows XP内核。(x表示系统版本,例如SP1)

Windows PE 1.5表示Windows 2003内核。(x表示系统版本,例如SP1)

Windows PE 2.x表示Windows Vista内核。(x表示系统版本,例如SP1)

Windows PE 3.x表示Windows 7内核。(x表示系统版本,例如SP1)

Windows PE 4.x表示Windows 8内核。(x表示系统版本,例如SP1)

举例:PE 1.3表示Windows XP SP3内核的PE。

Windows PE 1.x(1.5类似)引导过程(以网上常见的PE为例):

第1步.内核启动:光盘启动后,自动寻找光盘WXPE目录下的SETUPLDR.BIN,并加载它(始引导文件,相当于NT系统的NTLDR),需要同目录下的NTDETECT.COM(同NT系统的同名文件);引导文件中指示了WINNT.SIF(WINNT.XPE)的位置(相当于XP系统BOOT.INI)。

---------------------------------------------------------------------

WINNT.XPE内容如下:

[SetupData]

BootDevice = "ramdisk(0)"

BootPath = "\WXPE\System32\"

OsLoadOptions = "/minint /fastdetect /rdpath=MiniPE\winpe.IM_"

以上内容表示:

1.以“ramdisk方式”加载光盘镜像文件;

2.启动后的系统路径为\WXPE\System32,这里相当于我们平常的\Windows\System32;

3.该配置文件指示了系统镜像(IS_、ISO、IM_或IMA,也就是常说的“内核”)的位置。

----------------------------------------------------------------------

第2步.加载外置程序:外置程序的加载依赖于PECMD.INI(有的存在于WINPE.IS_ 的WXPE\SYSTEM32\目录下;有的在Programs文件夹的某个目录下...),其中形如"LOAD \MiniPE\WinPE.INI"的语句即为加载外置程序的配置文件(WinPE.INI)。这个文件可以在任何可见分区(PE下可见的分区),PECMD在执行时自动搜索所有“可见分区\MiniPE\下的WinPE.INI”,再根据WinPE.INI实现加载外部程序。(例如外置程序在PE.WIM包里面,或者直接存在某个文件夹下,说明:以上目录各个版本PE名称略有不同)。

简单理解:光盘引导文件(例如pe.bif)——SETUPLDR.BIN——WINNT.XPE——启动PE1.x。

--------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------

Windows PE 3.x(2.x类似)引导过程(详见Waik说明文件):

简明过程:光盘启动后自动加载引导文件,将控制权交给Bootmgr,Bootmgr读取Boot\BCD,根据BCD文件的信息读取Sources\Boot.wim文件,进入PE。

详细过程(微软Waik说明文档):

1.加载特定媒体上的启动扇区(MBR)。将控制传递给Bootmgr。Bootmgr从启动配置数据(BCD)中提取基本的启动信息,并将控制权传递给Boot.wim中包含的Winload.exe文件。然后Winload.exe加载相应的硬件抽象层(HAL),并加载系统注册表配置单元和必需的启动驱动程序。完成加载后,将会准备执行内核Ntoskrnl.exe的环境。

2.执行Ntoskrnl.exe,完成环境设置。将控制权传递给会话管理器(SMSS)。

3.SMSS加载注册表的剩余部分,配置运行Win32子系统(Win32k.sys)的环境及其各种进程。SMSS加载用于创建用户会话的Winlogon进程,然后启动服务和剩余的非必要设备驱动程序及安全子系统(LSASS)。

4.Winlogon.exe根据注册表值HKLM\SYSTEM\Setup\CmdLine来运行设置。如果存在%SYSTEMDRIVE%\sources\setup.exe,Winpeshl.exe将启动它,否则Winpeshl.exe将查找在%SYSTEMROOT%\system32\winpeshl.ini中指定的应用程序。如果未指定任何应用程序,则Winpeshl.exe将执行cmd /k %SYSTEMROOT%\system32\startnet.cmd。默认情况下,Windows PE包含一个将启动Wpeinit.exe的Startnet.cmd文件。Wpeinit.exe加载网络资源,并与网络组件(如DHCP)进行协调。

5.Wpeinit.exe完成后,将显示命令提示符窗口。此时,WinPE 3.1的启动过程完成。

简单理解:光盘引导文件(例:pe.bif)——bootmgr——BCD——boot.wim——启动PE3.x。

Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理相关推荐

  1. Windows API-GDI入门基础知识详解 来源: PConline.com.cn

    什么是GDI? GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出. 在Wind ...

  2. Windows通用克隆系统入门基础知识简介

    Windows通用克隆系统入门基础知识简介 这里的Windows是指微软的Windows 2000/XP/2003(后文中未经说明的,凡是Windows均指这三种系统):所谓的通用克隆,俗名万能克隆, ...

  3. 线程基础知识——Windows核心编程学习手札系列之六

    线程基础知识 --Windows核心编程学习手札系列之六 线程与进程一样由两部分构成:一是线程的内核对象,操作系统用它来对线程实施管理,也是系统用来存放线程统计信息的地方:二是线程堆栈,用于维护线程在 ...

  4. ***入门基础知识(超全)

    ***入门基础知识(超全) [sell=2]  DOS 常用命令: dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 de ...

  5. 计算机键盘输入法基础知识,电脑打字入门基础知识

    电脑打字入门基础知识 导语:用电脑打字是最常见的操作,它实际上就是如何用键盘输入汉字.在准备输入汉字之前,要熟悉键盘,进而选择适合自己的汉字输入法进行汉字输入.下面是小编给大家整理的电脑打字入门基础知 ...

  6. Python培训入门基础知识学什么?

    Python培训基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python培训入门基础知识学什么呢?来看看下面小编 ...

  7. NLP汉语自然语言处理入门基础知识介绍

    NLP汉语自然语言处理入门基础知识介绍 自然语言处理定义: 自然语言处理是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部 ...

  8. 负荷计算的时候assert失败_负荷计算的入门基础知识,小白入门必备!

    负荷计算是电气设计人员必须掌握的一必修课,选导体.设备还有保护开关的选择,电网系统分析,都离不开负荷计算的内容,为此小编特意总结9个负荷计算的入门基础知识,分享给大家,希望能在工作和学习中作为一份参考 ...

  9. python笔记基础-Python入门基础知识学习笔记之一

    为什么要写这篇文章? 本人做过Objective-C开发,现在在用C#做WinForm开发.近段时间在学习Python入门基础知识时,发现有很多知识点和Objective-C的不一样.故想通过本文记录 ...

最新文章

  1. 使用OpenCV和Python计算图像的“彩色度”
  2. c语言顺序结构程序设计第4章答案,第4章顺序结构程序设计习题及答案.doc
  3. 聚类算法(part1)--DBSCAN
  4. 1年排名前进13位 ,这个论题成顶会新宠!
  5. 小学生都学Python了,你还不知道怎么开始
  6. ZooKeeper:分布式应用程序的分布式协调服务
  7. 入门机器学习(十八)--异常检测(Anomaly Detection)
  8. 如何抓取所有域用户的hash(win2008--win2012)
  9. excel 异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)
  10. Hasura GraphQL 内部表结构
  11. 转:你真的懂iOS的autorelease吗?
  12. ccccccccccccccccccccccccccccccccc
  13. Android开发笔记——快速入门(从入门ACT到Fragment放肆)
  14. 数据库系统和数据库管理系统的定义以及数据库管理系统的作用
  15. 一文读懂什么是绿色工厂以及绿色工厂建设细解
  16. Request Headers请求头和Response Headers响应头,有啥区别呢?
  17. win10服务器只显示4g内存,64位win10识别到了4G内存,却只用了3.1G,为什么?
  18. MFC入门基础(十)静态文本框()、编辑框(Edit Control)
  19. Milvus 2.1 版本更新 - 简单可信赖、性能持续提升
  20. 最值得关注的五款睡眠监护仪:Sense、梦加上榜

热门文章

  1. Excel提取超链接信息
  2. Uva1595 对称轴
  3. 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
  4. @poj - 1509@ Glass Beads
  5. [Ext JS 4] 实战Chart 协调控制(单一的坐标,两个坐标)
  6. Xstream解析报文
  7. 项目支出数据产生过程
  8. c#3.0加入的一些新特性——泛型集合
  9. .NET分布式缓存Memcached测试体验
  10. 《LeetCode力扣练习》第617题 合并二叉树 Java