Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理
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的作用、命名规则、启动方式、启动原理的更多相关文章
- Greenplum入门——基础知识、安装、常用函数
Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709 版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...
- USB入门基础知识(转)
源:USB入门基础知识 相关名词: 主机(Host) 设备(Device) 接口(Interface) 管道(Pipe) 管道是主机与设备端点数据传输的连接通道,代表了主机的数据缓冲区与设备端点之间交 ...
- Linux入门基础知识
注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...
- React Native 入门基础知识总结
中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...
- 1)Linux程序设计入门--基础知识
)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makef ...
- 与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦
原文:与众不同 windows phone (24) - Input(输入)之软键盘类型, XNA 方式启动软键盘, UIElement 的 Touch 相关事件, 触摸涂鸦 [索引页][源码下载] ...
- Windows权限提升基础知识和命令
介绍 这篇文章是介绍window的权限提升,虽然不是一个全面的指南,但会试图覆盖主要的技术,常用的资源列表在文章底部,可供大家参考. window权限提升基础知识 初始信息收集 在开始提权之前,我们需 ...
- CodeMix入门基础知识
CodeMix在线订购年终抄底促销!火爆开抢>> CodeMix入门 CodeMix是一个Eclipse插件,可以直接从Eclipse访问VS Code和为Code OSS构建的附加扩展的 ...
- 1.windows编程入门MessageBox使用 -windows编程
引言:刚开始入门windows编程的时候,我记得当时我对MFC的给出的一大堆代码感到束手无策.因为历史的缘故,windows编程入门的代码并没有体现出C++语言的简洁性,相反一上来就给了我们一大堆代码 ...
随机推荐
- CentOS6.9编译安装nginx1.4.7
1.系统安装开发包组和zlib-devel,关闭iptables [root@bogon ~]# yum groupinstall -y "Development Tools" [ ...
- BZOJ 2839: 集合计数 [容斥原理 组合]
2839: 集合计数 题意:n个元素的集合,选出若干子集使得交集大小为k,求方案数 先选出k个\(\binom{n}{k}\),剩下选出一些集合交集为空集 考虑容斥 \[ 交集为\emptyset = ...
- BZOJ 2073: [POI2004]PRZ [DP 状压]
传送门 水题不解释 这道题的主要目的在于记录一个枚举子集的技巧 #include <iostream> #include <cstdio> #include <cstri ...
- POJ3155 Hard Life [最大密度子图]
题意:最大密度子图 #include<iostream> #include<cstdio> #include<cstring> #include<algo ...
- 除了使用URLSearchParams处理axios发送的数据,但是兼容性不好,其他的兼容方法
在使用axios这个ajax插件的时候,我们有些时候会遇到一些问题,比如:数据格式不正确 以最简单的例子为基础(这里使用post方法): 在上面的例子中我们直接调用axios的post方法,传给后台的 ...
- AMDP + XSLX Workbench 报表开发模式
本文介绍了我和同事通过使用AMDP + XSLX Workbench缩短报表开发周期.分离数据查询处理逻辑和前端展示工作的经验.欢迎讨论. 前言 最近接到了一套人力资源报表的开发需求,需要以EXCEL ...
- C# 使用 Lotus notes 公共邮箱发送邮件
公司的邮件系统用的是反人类的 Lotus notes, 你敢信? 最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件 前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮 ...
- python用Django+Celery+Redis 监视程序(一)
C盘创建一个目录就叫DjangoDemo,然后开始在该目录下操作. 1.新建Django工程与应用 运行pip install django 安装django 这里我们建一个名为demo的项目和hom ...
- 第三方页面嵌入到web项目的方案 之 使用iframe嵌入
有些项目中可能会遇到这样的需求, 需要在一个项目中嵌入其他的项目的页面或者功能.并且需要这两个页面之间能够进行交互. 本文主要介绍如何实现这种第三方应用的嵌入, 主要有以下几个方向: 1.iframe ...
- 11个phpstorm 快捷键介绍
11个phpstorm 快捷键介绍 http://phpstorm.tips/tips/11-toggling-case