
自制 Windows PE(一):获取 PE 与添加功能

Windows PE 这个东西,相信经常装机的小伙伴们一定不陌生。但是深究起来,或许许多人会觉得,Windows PE 就是诸如微 PE,HotPE 这一类的“维护系统”,甚至可能会觉得 PE 是和 XP、7、10 这样的完整 Windows 一样的某个版本。
把 PE 当成一个版本肯定是不对的;当成市面上已有的这些系统也不是完全不对,但毕竟和 WinPE 原本的意义不太一样。
WinPE 全称 Windows Preinstallation Environment(Windows 预安装环境)。听到这个名字您可能就会有一些想法,没错,我们用最原汁原味的方法(刻录 Windows 安装盘)安装 Windows 的时候,进去的那个东西就是 WinPE。当然,微软官方并不是只有这一个 PE,在 Windows 8 以上版本里自带的那个 WinRE 也是 WinPE;以及我们这次要介绍的主角,名字就叫 WinPE。
官方的这个 PE 最大的特点就是允许定制,尽管你拿上一个现成的 PE,只要里面的东西没有加密,那大概率也可以按着这里的方法来定制。
不过 WinPE 毕竟名字里还是有个 Windows,授权协议啥的是逃不掉的——里面有一项,指出 WinPE 仅允许用于维护与部署。从这一条看,现在的什么 FirPE、HotPE 啥的全都违规了()也因此 WinPE 会在启动后 72 小时自动重启,这并不是什么 bug,而是微软人为做出的限制。
目录
下载 Windows PE
官方的 Windows PE 下载,肯定不是单独就一个 PE,然后给你几个选项让你安装到系统、U 盘啥的,毕竟还要定制呢不是,所以官方的 PE 需要连带着相关的环境一起下载安装,最终的大小在 6-7 GB 左右。
先从这里下载两个东西,一个是 Windows ADK,一个是 ADK 的 Windows PE 加载项。软件是在线安装模式,如果遇到问题,请自行寻找魔法。版本随意,我这里下载的是 2004 这个版本。
跟普通的软件安装没什么区别,装到最后就是这么个提示:
接下来可以开始准备 PE 了,我们打开开始菜单,找到“部署和映像工具环境”,右键以管理员身份运行。(我装了 StartIsBack,所以界面不太一样)
会打开一个命令提示符窗口。接下来切换到 PE 所在目录(天杀的代码块插件依然没有命令提示符的选项):
cd "..\Windows Preinstallation Environment\amd64"
然后复制 PE 到指定目录(这里的 amd64 是架构,官方的工具同时支持 x86、amd64、arm、arm64 四种架构,一般的个人计算机选择 amd64 即可):
copype amd64 C:\WinPE
最终生成 ISO 文件(也可以部署到 U 盘等设备,这个后面再讲):
MakeWinPEMedia /ISO C:\WinPE C:\WinPE\pe.iso
以上就是最最最基础的官方 Windows PE 的获取方式,至此已经可以尝试启动了。
启动 Windows PE
拿虚拟机做个小实验,上面的命令运行完成后,会在 C:\WinPE\ 目录下生成一个 pe.iso 文件(你把参数改了除外)。
如果看到这里,你在想,“这是个啥玩意儿啊这么简陋”,那么恭喜你,你不是一个人()
是的,官方的 Windows PE 默认情况下,就是一个命令提示符,其他的 Windows 工具也基本没有。(可以参考一下 Server Core 的情况。)
但是这恰好给了我们足够的空间来对这个 PE 进行大量的定制,本文先不做过多的介绍,后面再慢慢介绍,下面只介绍一些最为基础的定制方法。
应急使用
在介绍如何定制之前,我们先来看一下,如果你真的很不想花时间定制这个东东,怎么应急使用这个东西。
使用命令行
这不用我说了吧,命令提示符,你要是会用,那你是牛人,咱管不了。
只提一件事情,WinPE 下没有 shutdown 命令,取而代之的是 wpeutil 命令,当然该命令的功能肯定不仅局限于开关机,看名字就知道了,WinPE 实用工具。直接运行 wpeutil 不带参数就可以看到帮助了。
关机:
wpeutil shutdown
重启:
wpeutil reboot
使用 GUI
那如果我们非常希望能在这个地方用上 GUI 又怎么办呢?
下面的这个奇技淫巧值得一试。
首先,在那个命令提示符里面,输入 notepad,打开记事本。
然后点击 File > Save As…
接着把 Save as type 改成 All files。
接下来什么操作就不用我说了吧?
只有一件事情需要注意,如果希望打开文件,需要右键打开,不能双击,否则就变成记事本另存为那个文件了。
定制 Windows PE
我们先介绍一些最基本的定制方法,高级的后面再介绍。
更改壁纸
是的,就算成了这个样子,WinPE 也依然支持更改壁纸,这一点比 Server Core 强点。当然,更改的方法,自然不是右键设置为桌面壁纸了,而是要在生成之前就配置好。
首先我们需要知道如何挂载和卸载 WinPE 映像,这是所有定制操作的基础。
WinPE 映像同样也是一个 wim 格式的文件,可以拿 dism 来操作。WinPE 都很小,所以操作起来并不慢,但确实会随着你添加的内容增多而逐渐变慢。
装载(如果你之前 copype 的时候改过路径,那么这里也要同步更改):
dism /Mount-Image /ImageFile:"C:\WinPE\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE\mount"
卸载并提交:
dism /Unmount-Image /MountDir:"C:\WinPE\mount" /commit
接着我们来更改 WinPE 的壁纸,这个壁纸的路径在 \Windows\System32\winpe.jpg,用上面的命令执行装载的话,那么就会在 C:\WinPE\mount\Windows\System32\winpe.jpg 这里。
对文件进行提权:
takeown /F C:\WinPE\mount\Windows\System32\winpe.jpg /A
icacls C:\WinPE\mount\Windows\System32\winpe.jpg /grant Administrators:F
接着进行替换,替换拿图形界面操作就好,这个没必要上命令行()
这里我们拿这张图片做示范:
把所有文件资源管理器窗口关闭(防止卸载时由于被占用导致失败),提交修改,并且重新生成 ISO 文件。
可以看到替换成功:
其他的普通文件、程序等,也可以按照这个方法来添加。路径随意,只要你能记住你放哪了,就可以在命令提示符中进行调用,例如下面这张 Dism++:
添加语言包
细心的小伙伴可以发现,我们刚刚做好的 WinPE 里面,如果尝试运行中文软件,那么就会出现问题,这是因为语言包不完整。
事实上 WinPE 是可以添加语言包的,方法也很简单。
首先添加语言包本体:
dism /Add-Package /Image:"C:\WinPE\mount" /PackagePath:"WinPE_OCs\zh-cn\lp.cab"
接着添加字体,防止字变成方块:
dism /Add-Package /Image:C:\WinPE\mount /PackagePath:"WinPE_OCs\WinPE-FontSupport-ZH-CN.cab"
最后修改语言:
dism /Set-AllIntl:zh-CN /Image:"C:\WinPE\mount"
再一次生成 ISO 镜像,这一次系统就变成中文了。
修改启动程序
Windows PE 默认会在开机时启动 wpeinit,这是由 startnet.cmd 这个脚本控制的。通过修改这个脚本,可以控制系统开机时要启动的程序。
目前市面上主流的第三方 PE 会把开机时启动的程序替换为 PECMD,来提升灵活性。这个操作要配置注册表,这里先不做介绍。
下面是微软官方的一个例子、以及一个小的测试。
startnet.cmd 位于 \Windows\System32\ 这个目录中。
还是一样,先挂载映像,然后对文件进行提权:
takeown /F C:\WinPE\mount\Windows\System32\startnet.cmd /A
icacls C:\WinPE\mount\Windows\System32\startnet.cmd /grant Administrators:F
接着修改这个文件,添加下面两行内容:
notepad
powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
第一行是启动记事本。
第二行是将电源计划设置为高性能。
接下来老规矩,提交映像,生成 ISO。
开机的时候就可以看到记事本了。完成之后请把 notepad 这一行删掉,否则的话会阻塞命令提示符窗口。
结语
至此我们了解了如何下载微软官方的 Windows PE 版本并对其进行基本的自定义。
下一期将会介绍如何添加较完整的 GUI,驱动程序,使我们的 PE 使用起来更加高效快捷。