从ADK的WinPE自己手动构建自己的PE

这篇具有很好参考价值的文章主要介绍了从ADK的WinPE自己手动构建自己的PE。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

一直以来,我都是使用微软官方的PE系统来安装操作系统,但是官方的PE系统只有黑乎乎的命令行,每次安装系统都需要使用notepad查看一下镜像所在的盘的盘符,挺麻烦的,于是,我就想到给PE加上一个explorer,从而方便查看资源。

为什么我不使用别人做好的PE?

首先,网络的上的别人制作的PE,无法保证安全性,即使制作的人可以保证不加入任何第三方的文件,但是他使用的制作工具可能也会写入一些文件(毕竟有些人用破解版工具)。安全性,这是不使用别人的制作好的PE的重要原因,毕竟这是用于日常生产中的基础工具,系统的安装和维护都依靠他,要是它有问题,那整个公司的系统都会有问题了。这也是我一直使用微软官方的PE的原因。

第二,PE作为一个基础工具,需要保证足够的兼容性,网络一些制作的PE,各种花里胡哨的工具,连浏览器和网络都给整上了,这就势必提高PE对硬件的要求(PE是完全加载到内存里的),属实没必要。我对PE的要求就是需要它足够小,又具备一些基础的工具,这些工具能够满足我日常安装系统、备份系统、还原系统的需求,那就足够了。

第三,微软官方的PE已经具备了dism,diskpart,这两个工具就能够完全满足日常安装和备份操作系统的需求了。但是对于ISO镜像处理和资源查看还不是很方便,于是我准备加入explorer和UltraISO以及加入oscdimg命令,以方便查看系统资源,查看ISO镜像,生成ISO镜像,刻录ISO镜像。网络的的一些其他人制作的PE,不少都没有oscdimg这个命令行工具。

二、PE的原理

PE的原理很简单,其基本原理就是通过在内存中构建一个虚拟盘符,将PE系统全部加载到该盘符上,然后运行PE系统。这也就是PE系统中安装的软件,下次启动全部消失的原因的,因为操作的都是这个虚拟盘符,内存掉电,信息消失。正是因为如此,PE在长久的使用过程中能够保持稳定性和纯净,从而能够作为一个基础安装环境。

ps:网吧的机器除了服务器之外的那些机器,所谓无盘系统,其实就是通过网络将系统完全加载到内存中,而PE则是通过U盘或者光盘加载到内存中,所以这两者在重启之后,安装的软件都消失了。

三、准备工作

1、下载安装ADK

2、安装PE

以上两步查看这里的博文:

使用微软官方的Winpe系统安装操作系统(包括下载Winpe、制作U盘启动工具、安装操作系统)_lengye7的博客-CSDN博客

3、查看自己的PE版本,然后下载对应的操作系统镜像(explorer文件和注册表就从这里提取),保证文件版本的对应性,防止出现一些莫名其妙的问题。

查看自己的PE版本:版本号10.017763.1 这个版本号对应于win1809 10月份更新的版本。(这里两种选择,自己订阅MSDN,然后去微软官方下一年6000多RMB;还可以去MSDN Itellyou去下载,目前来说他应该是国内比较安全的镜像了,都已经很多年了。或者可以使用更高版本的镜像也可以试试。如果本来就是开公司的,公司还非常大,或者是专业装机的,可以买6000多RMB一年的订阅可以获得所有的windows镜像,可以获得单独的补丁包,可选功能包,然后手动打补丁和添加功能,每个月还有10多个激活码可以足够日常装机激活使用(但是这个可不是正版授权啊)。

从ADK的WinPE自己手动构建自己的PE

 4、windwos的系统软件的运行环境

windows的系统软件的运行往往依赖于三部分:完整的运行文件,包含exe与各种dll,存放在正确的路径;正确的注册表信息;正确的环境变量。

那么我们接下来添加explorer其实就是包含两部分:exe与dll和注册表。

而增加oscdimg也包含两部分:exe与dll和正确的path变量。

5、下载并安装RegistryWorkshop

直接去官方下Home | www.torchsoft.com  ,后面RegistryWorkshop直接简称RW。

这个工具是用于编辑注册表用的,如果没有它,编辑起来非常麻烦。

6、提取原版的PE镜像

1)、安装好ADK和PE相关的东西之后,见上面1和2.

从开始菜单进入部署和映像环境,获得一个命令行窗口。

输入命令:copype amd64  D:\amd64        #注意D盘下不能有amd64这个文件夹

这样就将64位PE的文件都拷贝到了D:\amd64这个文件夹。

ps:使用64位PE的原因是windows11以后将不能使用32位的PE部署,再加上现在的机器都是64位,也没有必要制作32位PE了,如果哪天遇到一台32位的机器,制作一个命令行的32位PE就行了。

2)、挂载PE的boot.wim(这个就是PE的核心文件,添加文件也是往这里添加)

输入命令:dism /mount-image /imagefile:D:\amd64\media\sources\boot.wim /index:1 /mountdir:D:\Winpe64

#注意,Winpe64这个目录提前建立好,并且这个目录必须是空的。

挂载之后:

从ADK的WinPE自己手动构建自己的PE

3)、向该PE中添加一些必要的包

#先查看有哪些包

 Dism /Get-Packages /Image:D:\Winpe64

从ADK的WinPE自己手动构建自己的PE

#添加一些包

把以下命令写成批处理脚本:

脚本已经写好了,还没贴上来。

包添加完了之后,继续执行:

 Dism /Get-Packages /Image:D:\Winpe64

查看是否添加成功:已经添加成功。

从ADK的WinPE自己手动构建自己的PE

 #卸载镜像并保存更改

在执行命令之前,保存一下老的boot.wim

输入命令:

Dism  /Unmoun-Image /MountDir:D\Winpe64 /Commit

执行完了之后会在D盘生成一个boot.wim。下面可以对比新旧两个boot.wim,新的明显大了不少。 

从ADK的WinPE自己手动构建自己的PE

#使用MakeWinpeMedia命令生成一个ISO文件用于虚拟光驱测试PE

ps:MakeWinpeMedia内部也是使用oscdimg来生成ISO文件的,所以我没有直接用oscdimg。默认情况下,该命令脚本生成的ISO和UFD都是支持BIOS传统与UEFI双启动的,这个就很好。

输入命令:

MakeWinpeMedia  /ISO  D:\amd64  D:\PurePeBase.iso

将获得一个PurePeBase.iso文件,如无意外,它可以正常启动进入PE。

至此,所有准备工作结束。

同时具备了如下东西:

  • PurePeBase镜像,往后的文件添加以此为基础。
  • Win10版本1809十月份更新镜像,explorer文件以及dll和注册表从这里提取。
  • ADK工具中包含了oscdimg命令工具,该命令以及相关文件从这里提取。
  • RW注册表编辑工具

四、开始真正添加所需要的工具

先将PurePeBase挂载起来,还是D:Winpe64这个目录挂载。

1、先添加oscdimg工具

在ADK工具中找到oscdimg工具,位于:

 前面还有一大串\Assessment and Deployment Kit\Deployment Tools

目录下,这个目录直接从部署和映像工具环境就可以进入,下面有四个目录amd64、arm、x86、arm64,这四个目录下都有oscdimg,这里使用amd64目录下的,因为该目录下的工具都是64位的。

直接从部署和映像工具环境进入命令行

输入命令:

md D:\Winpe64\Windows\Oscdimg

copy .\amd64\oscdimg D:\Winpe64\Windows\

然后保存更改,打包成镜像测试。

经过测试,发现Oscdimg目录没有加入到path环境变量中,导致无法在任何地方使用,所以需要修改path环境变量。

在加载目录下:windows\system32\config  这个位置是存放PE注册表文件的地方。

使用regedit工具编辑以下注册表键:

SYSTEM\ControlSet001\Control\Session Manager\Environment]

找到path,加入;%SystemRoot%\Oscdimg 

然后保存修改,重新制作ISO测试成功。

 regedit编辑注册表文件的方法:在PE里如何修改系统注册表?U盘PE下修改本机注册表方法 -Win7系统之家

后续自己写一个修改办法吧,这个还专门特指PE,有点误导。

可以使用reg命令修改注册表。

至此oscdimg成功添加。

得到一个PeOscdimg2.0.iso文件。

以下所有的步骤都在PeOscdimg2.0.iso的基础上进行。

2、下面添加原生的explorer

在PeOscdimg2.0.iso文件基础上。

explorer添加起来有很多dll需要添加,但是由于有很多前人已经走过这一条路了,于是总结了一份文件清单,所以就按照前人的文件列表复制一份对应的文件再说。同时,也可以引入一些工具用来查看explorer的所需要的dll,然后依次对比PE中的文件,缺什么就补什么。

还有一种偷懒的办法,就是对比别人做好的PE,只添加一个explorer.exe进去,别人需要添加哪些文件,我也就添加哪些文件。实际上,我就是这么做的。

注册表是用完整software注册表,删除run as=Interactive User。

关于explorer我已经全部脚本化了。

我只需要将explorer所需要添加的文件写入到脚本的AddFiles.txt中即可。

3、桌面快捷方式的添加(不宜添加过多)

写一个脚本,在explorer.exe启动之后,然后将相应的快捷方式复制到X:\Windows\System32\Config\systemprofile\desktop文件夹中。

这个脚本开机就启动,不断检测exeplorer.exe进程,当这个进程启动之后,就把对应的快捷方式复制到对应的文件夹。但是ADK中不包含tasklist这个程序,所以就必须提前把它放置到ADK中。

可以预先把快捷方式放置在某一个文件夹中。

桌面快捷方式的获得,我的办法是:先将该程序添加到PE中,然后启动PE,进入到该程序的目录中,右键创建一个快捷方式,然后将该快捷方式复制到别的U盘中,后面我再从U盘添加到PE中。

由于我已经脚本化了,所以我只需要将U盘中的快捷方式放置到脚本对应的目录中即可。

4、由于winpeshl.ini中指定的开机启动项只能按照从上而下一次运行,并且上一个应用运行结束之后,才会继续运行下一个应用,也就是说,如果启动了explorer.exe,就无法再继续运行其他的程序了,所以就无法做到开机自动的运行3中的快捷方式修复脚本了。

目前,我想到一个办法,我在一开始的AppPath中运行cmd.exe /C startnet.cmd脚本,然后在startnet.cmd脚本中运行一个start cmd.exe /C desktop.cmd(这个脚本就是3中的那个脚本),从而就能够开机运行3中的脚本了。

这个我已经脚本化了,后续如果有新的需只需要改动脚本即可。

1234均以实现,完全满足日常需求,可以作为一个基础PE,然后在这个PE中添加程序、驱动等。

5、分辨率,这个我倾向于自己写一个win32api的静态编译的程序,从而能够获得非常好的兼容性与可移植性,目前这个尚未实现。关键性API,GetSystemMetrics(获取屏幕分辨率,这是操作系统设置的那个分辨率),GetDeviceCaps(获取屏幕分辨率,这是显示器的物理分辨率),ChangeDisplaySettings(改变屏幕的分辨率设置)。

突然得到一个rundll32.exe的命令,我在想,能否使用该命令来调用这3个函数,从而实现一个cmd版本的分辨率设置程序呢?

6、添加一些基本的工具

winrar和ultra ISO

在添加Ultra ISO的时候,遇到The app can't run on your PC的问题,我估计是因为需要运行驱动,这个问题似乎比较难受,我就转向尝试power ISO,然后就成功了。

PowerISO安装好之后,直接将PrograFiles下的一个整个目录PowerISO打包进PE即可。

PowerISO解决试用弹出问题,它是用注册表检测是否注册,购买注册码注册之后,找到HLKU下面的PowerISO子项,复制该子项的user键值。

然后挂载PE的DEFAULT文件为pe-default,在pe-default\software子项下创建一个新的子项PowerISO,然后给PowerISO新建一个二进制的键值USER,将刚才复制的user键值粘贴到这个键值之下,卸载pe-default,打包就可以了。

启动PE就应该看不到PowerISO的注册问题了。

WinRAR安装好之后,直接将ProgramFiles下的一整个WinRAR目录打包进PE即可。由于WinRAR可以无限试用,就不用解决注册问题了。

这两个我已经脚本化了,脚本中包含的版本就是最新的(2022年1月11日安装)版本。

7、网络添加与文件传输

暂时不加

8、自己写一个界面以调用diakpart和dism来分区和安装文件

暂时不写

其中2346已经脚本化了,脚本执行完成之后,我只需要使用新的boot.wim替换D:\amd64\media\sources\boot.wim,然后运行MakeWinPEMedia命令打包成一个新的iso文件即可。

经过多次反复的测试调试,最终我得到一个ZeroPe30.0.iso文件,这就是我经过30个版本的迭代得到的我需要的PE了。

由于强迫症,我又消除了桌面的右键菜单的屏幕分辨率与个性化这两个无用的选项。此步骤也已经脚本化。

记录一下制作PE中所踩中的坑:

https://blog.csdn.net/lengye7/article/details/122435020

其他链接:

一键制作脚本:https://pan.baidu.com/s/1rfmPlht62NlxwvIHGsJXYA  提取码:1u75

ADK下载页面:Download and install the Windows ADK | Microsoft Docs

成品下载链接:链接:https://pan.baidu.com/s/1CaDnE40_Ce0ovAdSye5F_g  提取码:ujvl文章来源地址https://www.toymoban.com/news/detail-457731.html

到了这里,关于从ADK的WinPE自己手动构建自己的PE的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 和月薪5W的聊过后,才发现自己一直在打杂···

    前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和阿里的offer,最后选择了阿里。 我了解了下他的面试过程,就一点,不管是阿里还是腾讯的面试,这个级别的程序员,都会考察项目管理能力,并且权重非常大。 其实现在不管面试什么岗位,前端也好,后端也罢,都必

    2024年02月04日
    浏览(31)
  • 和月薪5W的阿里程序员聊过后,才知道自己一直在打杂...

    前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和阿里的offer,最后选择了阿里。 阿里内部将员工一共分为了14个等级,P6是资深工程师,P7是技术专家。 其中P6和P7就是一个分水岭了,P6是最接近P7的不持股员工,P7开始就是持股员工,由于有股票分红,所以工资不能按

    2023年04月24日
    浏览(41)
  • 和月薪5W的京东程序员聊过后,才知道自己一直在打杂...

    前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和京东的offer,最后选择了京东。 京东内部将员工一共分为了14个等级,P6是资深工程师,P7是技术专家。 其中P6和P7就是一个分水岭了,P6是最接近P7的不持股员工,P7开始就是持股员工,由于有股票分红,所以工资不能按

    2024年02月06日
    浏览(61)
  • postman持续集成-Jenkins手动构建

    在jenkins.war文件所在的目录输入cmd打开终端输入: 启动服务,启动后终端的窗口不要关闭 在浏览器地址栏输入:localhost:8080 打开已完成并测试无误的postman项目脚本,再次执行测试 导出测试用例集和测试环境两个文件,注意全部是英文,不要有中文 把这两个文件放在一个文件夹内,在

    2024年02月11日
    浏览(52)
  • 手动自己写了一个波场(Tron)本地网页版钱包

    最近由于项目需要,需要给每个用户分配一个充币地址,考虑到钱包安全性和方便管理,于是自己动手写了一个本地网页版的钱包,附上源代码跟大家交流下。 Github 源码地址 钱包和项目是分离的,项目通过鉴权访问钱包的接口,主要实现了以下功能: 1、可以导入助记词、

    2023年04月15日
    浏览(49)
  • [pytorch]手动构建一个神经网络并且训练

    上一篇博客全都是说明类型的,实际代码能不能跑起来两说,谨慎观看.本文中直接使用fashions数据实现softmax的简单训练并且完成结果输出.实现一个预测并且观测到输出结果. 并且更重要的是,在这里对一些训练的过程,数据的形式,以及我们在softmax中主要做什么以及怎么做来进行说

    2024年02月05日
    浏览(33)
  • 在windows设置自己的cmd开机自启动程序,并且一直后台运行不挂起

    要在 Windows 上设置开机自启动程序,可以按照以下步骤进行: 打开「运行」对话框(可使用 Win + R 快捷键),然后输入 shell:startup 命令打开「启动」文件夹。 在「启动」文件夹中创建一个名为 xxxx.bat(xxxx 为你想要的程序名)的批处理文件,用于启动你的 CMD 程序。例如:

    2024年02月01日
    浏览(41)
  • Neo4j入门:手动构建节点关系

    目录 一、基本cypher语句建立节点和关系 建立节点 带属性的节点 一次建立多个节点 建立两个节点之间的关系 二、用CSV文件导入方法对Neo4j Desktop批量创建节点和关系 批量创建节点 创建一个编码为utf-8格式的CSV文件 将CSV文件放入到我们neo4j目录下面的import目录下 回到Neo4j执行

    2024年01月16日
    浏览(51)
  • 使用dockerfile手动构建JDK11镜像运行容器并校验

    Docker官方维护镜像的公共仓库网站 Docker Hub 国内无法访问了,大部分镜像无法下载,准备逐步构建自己的镜像库。【转载aliyun官方-容器镜像服务 ACR】Docker常见问题 阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)是面向容器镜像、Helm Chart等符合OCI标准的云原生制品安全托

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包