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

简介: <span style="line-height: 35px; background-color: rgb(233, 253, 232); font-size: 20px; font-family: 楷体, 楷体_GB2312; color: rgb(255, 0, 127);"></span><p style="margin-top: 0px; margin-bottom: 10px; pa

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)。将控制传递给BootmgrBootmgr从启动配置数据(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.exeWinpeshl.exe将启动它,否则Winpeshl.exe将查找在%SYSTEMROOT%\system32\winpeshl.ini中指定的应用程序。如果未指定任何应用程序,则Winpeshl.exe将执行cmd /k %SYSTEMROOT%\system32\startnet.cmd。默认情况下,Windows PE包含一个将启动Wpeinit.exeStartnet.cmd文件。Wpeinit.exe加载网络资源,并与网络组件(如DHCP)进行协调。

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

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

相关文章
|
7月前
|
Shell Linux 开发工具
Git入门(windows系统)
Git入门(windows系统)
75 1
|
1月前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
42 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
2月前
|
存储 NoSQL MongoDB
MongoDB入门级别教程全(Windows版,保姆级教程)
一份全面的MongoDB入门级教程,包括在Windows系统上安装MongoDB、使用MongoDB Shell和Compass GUI进行数据库操作,以及MongoDB的基本数据类型和查询技巧。
103 2
MongoDB入门级别教程全(Windows版,保姆级教程)
|
2月前
|
API Windows
Windows之窗口原理
这篇文章主要介绍了Windows窗口原理和如何使用Windows API创建和管理窗口。
65 0
|
3月前
|
存储 安全 程序员
Windows任务管理器开发原理与实现
Windows任务管理器开发原理与实现
|
4月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
354 0
|
4月前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
439 0
|
4月前
|
Kubernetes Cloud Native 开发者
探索云原生技术:Kubernetes入门与实践探索Windows操作系统的隐藏功能
【8月更文挑战第31天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性、效率和可靠性的关键。本文将带你了解云原生的核心组件之一——Kubernetes(K8s),通过浅显易懂的语言和实际代码示例,引导你步入这一强大工具的世界。无论你是初学者还是有经验的开发者,本篇都将为你打开一扇通向高效资源管理与自动化部署的大门。
|
5月前
|
存储 安全 数据安全/隐私保护
Windows 32 汇编笔记(一):基础知识
Windows 32 汇编笔记(一):基础知识
|
7月前
|
API C++ Windows
windows编程入门_链接错误的配置
windows编程入门_链接错误的配置
62 0