ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

官方 Windows 11 镜像快速瘦身:Tiny11Builder 完整指南与避坑清单

官方 Windows 11 镜像快速瘦身:Tiny11Builder 完整指南与避坑清单

官方 Windows 11 镜像快速瘦身:Tiny11Builder 完整指南与避坑清单

【免费下载链接】tiny11builderWinUI app for building smaller, customized Windows 11 images.项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder

Tiny11Builder 是一套开源 PowerShell 脚本,仅依赖微软官方组件(DISM 与 ADK 附带的 oscdimg.exe),就能把官方 Windows 11 ISO 精简成体积更小、可直接安装启动的 tiny11.iso,并绕过 TPM 等硬件门槛。本文一次讲清版本选择、完整制作流程、体积优化原理与常见报错的处理办法。

先弄清用途:按角色决定选哪个版本、能用在什么环境

这节回答"我该不该用、用哪个"。三种典型使用者的取舍差别很大,先对号入座再动手:

  • 开发者 / 测试人员:推荐核心版(tiny11Coremaker.ps1)。镜像小、开机快,适合给虚拟机、测试床或 CI 流水线搭标准 Windows 11 环境;若依赖 .NET 3.5,在制作过程中的交互提示里勾选启用即可。注意:这类环境属于消耗品,不要拿来跑生产业务。
  • 运维 / IT 人员:推荐常规版(tiny11maker.ps1)。硬件限制绕过、本地账户 OOBE、关闭遥测都已预置,适合批量装机;装完接上内部更新源后,补丁维护流程完全不受影响。
  • 普通用户:最典型的场景是救活不达标的新机——CPU 或内存不满足官方要求时,靠脚本写入的绕过开关也能顺利安装。装完后可用 winget 补装自己的应用,若 winget 版本过旧,先从 Microsoft Store 更新它。

一句话:镜像长期在真机上用选常规版;虚拟机、CI 等消耗品环境选核心版。

常规版 vs 核心版:瘦身幅度与维护性的取舍对比

两个脚本的差异本质是"删得越狠、后续越难修"。开工前对照下表确认需求:

对比维度常规版 tiny11maker.ps1核心版 tiny11Coremaker.ps1
预装应用移除 50 余个 Appx 包前缀(Xbox 系列、新闻、Teams、Copilot 等)在常规版基础上继续删
WinSxS 组件存储保留删除
Windows Defender保留禁用(需要时可重新启用)
Windows Update可用移除(失去 WinSxS 后无法更新)
WinRE 恢复环境保留移除
.NET 3.5装完后可随时添加制作时必须决定
制作后的维护能力可继续添加语言包、更新、功能不能再添加任何内容

✅ 选型结论:要长期在真机上使用就选常规版;虚拟机、测试床、CI 环境直接上核心版。

制作流程五步走:从官方 Windows 11 ISO 到 tiny11.iso

本节按实际操作顺序串起准备、挂载、策略设置、脚本启动与交互,每步只保留必要的命令。

  1. 获取脚本。仓库地址固定,克隆到本地即可(只读使用,无需修改):
git clone https://gitcode.com/GitHub_Trending/ti/tiny11builder
  1. 准备并挂载源镜像。从微软官网下载 Windows 11 ISO(任意版本号、任意语言,x64 与 arm64 均可,脚本会自动识别架构),在资源管理器中右键挂载为本地磁盘。

  2. 配置执行策略。以管理员身份打开 PowerShell 5.1,然后运行:

Set-ExecutionPolicy Bypass -Scope Process

-Scope Process表示放开权限只作用于当前会话,窗口一关即恢复原策略,不会改动系统全局设置。

  1. 启动脚本:
.\tiny11maker.ps1 -ISO E -SCRATCH D

-ISO填挂载后 ISO 的盘符(只写字母、不带冒号);-SCRATCH填暂存盘盘符——WIM 与解压文件都落在这块盘上,建议预留 40GB 以上空间。参数详情可随时用Get-Help查看。

  1. 跟随交互完成。依次输入盘符、选择 SKU 索引(Home/Pro 等),然后等待。完成后tiny11.iso会出现在脚本所在目录;全程还有Start-Transcript生成的带时间戳日志文件,排查问题直接翻查即可。

⚠️ 如果忘了用管理员身份启动,脚本会自动弹出一个新的提权窗口继续执行,此时关闭旧窗口即可,不要两边同时操作。

镜像为什么能更小:离线改造、两层压缩与硬件限制绕过

这一节解释三件核心事:改动如何不落在一台真实系统上、体积优化发生在哪两个环节、TPM/安全启动等检查是怎么被绕过的。

不安装系统,直接修改离线镜像

常规版脚本约 500 行,核心流程如下:

  1. 源镜像若是install.esd(单向压缩格式,无法挂载),先用Export-WindowsImage转成 WIM;
  2. 用Mount-WindowsImage把选中的索引挂载到暂存目录;
  3. 用dism /Get-ProvisionedAppxPackages枚举预配应用包,与内置的$packagePrefixes前缀表比对,命中即调用/Remove-ProvisionedAppxPackage批量移除;
  4. Edge 和 OneDrive 属于受保护文件,先takeown+icacls拿回所有权,再从文件系统层面删除;
  5. 离线镜像里的 SYSTEM/SOFTWARE 无法像在线系统那样直接打开,脚本用reg load把镜像内的注册表 hive 挂成HKLM\zSYSTEM等临时键,再通过Set-RegistryValue统一写入各类开关,改完reg unload;
  6. 最后执行dism /Cleanup-Image /StartComponentCleanup /ResetBase清理组件残留,并以dism /Export-Image ... /Compress:recovery导出封装。

这样设计的好处是:所有变更直接落在镜像文件上,产物 100% 可复现,且全程不需要一台真实系统环境。

两层压缩:制作时一次,安装时一次

最终 ISO 的体积来自两个环节的叠加:

  • 制作时:Dism.exe /Export-Image附带/Compress:recovery,恢复压缩比普通导出更紧凑;
  • 安装时:随 ISO 打包的 autounattend.xml 里<Compact>true</Compact>会指示安装器部署完成后自动对盘上文件做/compact压缩,装机后的占用也随之变小。同一个文件中的HideOnlineAccountScreens还隐藏了 OOBE 的微软账户界面,直接走本地账户。

封装环节由oscdimg.exe完成:脚本优先查找系统 ADK 路径(C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\...),找不到则自动从微软官方符号源下载,无需手工安装 ADK。

TPM 与安全启动等检查是如何绕过的

脚本向install.wim 和 boot.wim 两份镜像各写入一组开关:

# HKLM\SYSTEM\Setup\LabConfig 下(install.wim、boot.wim 各写一份) BypassTPMCheck = 1 BypassSecureBootCheck = 1 # 另有 BypassRAMCheck / BypassCPUCheck / BypassStorageCheck = 1 # 以及 HKLM\SYSTEM\Setup\MoSetup\AllowUpgradesWithUnsupportedTPMOrCPU = 1

之所以要写两份,是因为安装初期运行在 boot.wim 的 WinPE 环境里,它才是执行硬件检查的第一关。与此同时,脚本还关闭了遥测、广告推送与消费者内容,并禁用约 7GB 的预留存储(Recovery 分区)。

常见报错与坑位:现象-原因-处理速查

遇到下面的情况不必慌,按表对照即可:

现象原因处理办法
核心版做好后无法再加语言、更新、功能,WinRE 也没了删除 WinSxS 后系统失去可维护性,README 明确它不能替代日常使用的 Windows 11仅作一次性测试环境,日常机器改用常规版
过段时间 Outlook、Dev Home 又出现Windows Update 会把它们拉回;脚本已写入workCompleted=1加强拦截,但拦截并非绝对发现后手动再删一次即可
设置里残留少量 Edge 条目应用本体已删除,但部分设置项未清理干净表面问题,不影响使用,忽略
制作 arm64 镜像时闪过一行报错arm64 镜像的 System32 里本来就没有OneDriveSetup.exe无害报错,可忽略
没有用管理员身份运行权限不足无法继续脚本自动弹出新的提权窗口继续执行,关掉旧窗口即可
找不到oscdimg.exe系统未安装 ADK脚本自动从微软官方符号源下载,无需手动处理
装完后 winget 装不了应用winget 版本过旧先从 Microsoft Store 更新 winget 再安装应用

想改成自己的规则:精简清单与注册表开关

自定义入口只有两个,改之前建议先通读一遍脚本全文:

  1. $packagePrefixes前缀列表:决定删哪些预装应用。用Get-ProvisionedAppxPackages可以列出镜像里全部预配应用,拿到包名前缀后即可任意增删条目;批量出镜像时,把这张清单换成团队自己的组件白名单即可。
  2. 各类Set-RegistryValue调用:遥测、广告、Copilot 等行为开关都以键值形式写入,直接调整对应键值即可改变系统行为。

按 README 中的 TODO,后续方向包括更准确的语言/架构自动检测、更灵活的"保留/删除"选项,也许还会提供 GUI——想深入定制的话,这两个入口就是全部起点。

一张官方 Windows 11 ISO、几分钟等待、零第三方工具,换来的是一张更小、更安静、不受硬件门槛限制的安装盘——这就是用 Tiny11Builder 做镜像精简的全部价值。

【免费下载链接】tiny11builderWinUI app for building smaller, customized Windows 11 images.项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进