您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
JDL环境下windows系统自动部署解决方案
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
JDL环境下windows系统自动部署解决方案
自猿其说Tech
2022-08-11
IP归属:未知
43320浏览
### 1 背景 随着JDL业务发展,纯无线环境的多节点模式趋于常态,目前全国现有库房节点1000+,大部分常规建设均为纯无线环境的局域网。存在无IT库房、站点环境、纯无线环境的装机均需返回IT处进行处理,降低了业务运营效率,同时还增加了往返的运费。 如何做到操作系统全自动化安装,或者只用用户通过便携简易的操作即可完成装机,同时还需解决用户二次装机、数据安全等问题? ### 2 行业技术 目前常见的桌面IT维护,针对企业内部的windows系统,操作系统安装常见方式为U盘安装、网络安装(PXE+WDS/MDT)、微软官方提供的Autopilot部署。 WDS/MDT服务部署文档: https://docs.microsoft.com/zh-cn/windows/deployment/deploy-windows-mdt/configure-mdt-settings Autopilot自动化windows部署: https://docs.microsoft.com/zh-cn/learn/modules/automate-windows-deployments-by-using-windows-autopilot/ ### 3 JDL解决的场景 - 无WDS/MDT服务的库房环境下装机。 - 纯无线的库房环境下装机。 - 无IT值守的库房环境下装机。 - 站点环境无内网的情况下装机。 - 系统崩溃,但尚可开机至引导界面的情况下装机。 ### 4 方案实现 #### 4.1 准备 - 装机特制PE准备(需定制仅需包含diskgen、imagex、装机工具、图文教程、自动分区程序,其余软件卸载删除;此外还需PE下只能拷入、不能拷出的限制)。 - 装机镜像封装准备(按各区域实际情况进行封装优化,比如常用软件、UAC关闭、设置桌面迁移只D盘等等) - 装机镜像分块、生成Json信息、上传OSS并生成下载链接。 - 工具开发。 #### 4.2 实现 PE定制:定制不进行详细阐述,可自行百度/谷歌,着重讲解下PE下对于U盘限制的操作: 1)下载Dism++加载PE镜像到计算机文件目录 ![](//img1.jcloudcs.com/developer.jdcloud.com/06b04e04-aac2-450f-91d4-f6e47cd2406d20220811193107.png) 2)使用Registry Workshop加载PE注册表,修改HKEY_MACHIN\SYSTEM\CurrentControlset\control键值 ![](//img1.jcloudcs.com/developer.jdcloud.com/162e7457-af6f-49dd-8be6-4b8a960f9c9120220811193225.png) ![](//img1.jcloudcs.com/developer.jdcloud.com/1c3fc250-c4ce-4457-994b-2d73f50e022520220811193237.png) 3)完成后使用dism重新打包镜像完成即可 ![](//img1.jcloudcs.com/developer.jdcloud.com/c6a63805-5e26-4adf-9b63-1fcf059a204720220811193248.png) bcd引导添加(添加PE引导;装机镜像中也需封装,目的是解决windows系统崩溃后有PE可进行重装操作): ps:bcdedit命令可自行cmd /?或者微软官方查看命令使用方法 ```bash for /f "tokens=2 delims={}" %a in ('bcdedit /create /application osloader') do set Guid={%a} for /f "tokens=2 delims={}" %a in ('bcdedit /create /d "一键装机" /device') do set Guid2={%a} bcdedit /enum all |findstr "{ramdiskoptions}" >nul && bcdedit /delete "{ramdiskoptions}" /f bcdedit /set %Guid% description "PE" bcdedit /set %Guid% device ramdisk=[C:]\NST\PE.wim,%Guid2% bcdedit /set %Guid% osdevice ramdisk=[C:]\NST\PE.wim,%Guid2% bcdedit /set %Guid% systemroot \Windows bcdedit /set %Guid% detecthal 1 bcdedit /set %Guid% winpe 1 bcdedit /displayorder %Guid% /addfirst bcdedit /timeout 5 bcdedit /set {bootmgr} nointegritychecks 1 bcdedit /set %Guid2% ramdisksdidevice partition=C: bcdedit /set %Guid2% ramdisksdipath \NST\boot.sdi bcdedit /default %Guid% ``` MDT镜像封装: 1)先行进行MDT+WDS服务的环境搭建(需独立搭一套AD、DNS、DHCP),这里不做详述,百度可搜索很多资料。着重描述下封装成wim的修改 2)右键Deployment share,选择新建一个Deployment share ![](//img1.jcloudcs.com/developer.jdcloud.com/fa8212a0-9f1e-4ef8-97cd-eaf7991c67c420220811193334.png) 3)选择media path创建完成,右键设置midia属性,设置规则 ![](//img1.jcloudcs.com/developer.jdcloud.com/b2202c9c-9e40-4332-8f8e-b366de6fa59220220811193347.png) 4)修改skipbddwelcome=yes,跳过欢迎界面,最后update media content ![](//img1.jcloudcs.com/developer.jdcloud.com/bc1c8ced-56f2-4745-a701-566bbb26b26520220811193402.png) ![](//img1.jcloudcs.com/developer.jdcloud.com/59a08378-96b9-4db6-8f84-c51ad815165d20220811193412.png) 5)最后使用Wimtool工具进行wim封装完成 实际使用截图: ![](//img1.jcloudcs.com/developer.jdcloud.com/8f33f63a-a1db-47c2-abf9-93c565275ceb20220811193428.png) ![](//img1.jcloudcs.com/developer.jdcloud.com/2e3f26d9-1538-4672-b366-7065389bf56420220811193440.png) ![](//img1.jcloudcs.com/developer.jdcloud.com/9d14c3a8-b11e-4208-8053-f4e5cb3cb8e220220811193447.jpg) ### 5 总结 1. 通过对PE的定制、操作系统的定制、以及工具的实现,解决了长期以来用户侧装机依赖IT、自动部署依赖有线及MDT服务、二次装机等问题,算是解决了桌面运维最后一公里问题。 2. 通过此方案的实现,也发现了其实windows客户端的自动化,可以借助于其自带的批处理、Powershell命令行操作工具,windows本身也是很强大的,只是需要日常去专研、思考。 ------------ ###### 自猿其说Tech-JDL京东物流技术与数据智能部 ###### 作者:段尚辉
原创文章,需联系作者,授权转载
上一篇:把Mybatis Generator生成的代码加上想要的注释
下一篇:ThreadLocal源码解析及实战应用
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
自猿其说Tech
文章数
426
阅读量
2149964
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号