MinWin

MinWin 是 Microsoft 用来描述 NT 内核及其他基础组件的术语,这些组件构成了当前 Windows NT 操作系统系列的基础。MinWin 的目的是使 NT 内核及其依赖组件更加可移植,并摆脱对高级依赖项和 DLL 的依赖,从而全面重写现有的核心功能,并迁移到提供更高级功能的新独立 DLL 中,这种方法类似于 Linux 内核的组织架构。
此项目的最初目标是回到原始的分层接口,这是大卫·卡特勒(Dave Cutler)实际设想的:一个类似于 VMS,包括一组基本服务、各种子系统和附加功能,并且可以轻松扩展的低级微内核。
历史
MinWin 的首次提及是在 2003 年 4 月,当时的 Windows 核心技术组的副总裁罗布·肖特(Rob Short)用这个概念来描述大约 95% 的 Windows 组件。在 Windows Server 2003 发布后,Rob Short 开始组建一个新的内核架构师团队,以记录和描述 NT 内核中未被文档化的功能,由于大众理解上的困难,他们决定对 Windows 的每个组件进行分层,以区分它们并对其进行排序,从而理解最接近内核的组件。同时,Windows Vista 的开发通过重构内核功能本身推动了 MinWin 基础的构建,尽管在许多方面仍然与 Windows Server 2003 内核存在相似性,例如错误检查接口、加载方式和文本模式屏幕模式。
Windows 7
实现 MinWin 的最早可用版本是 Windows 7 Build 6469,此版本新增了 KernelBase.dll,它继而获取了大量 kernel32.dll 和 advapi32.dll 库的功能,从而使内核具有最小的依赖性。在 Windows 7 发布时,虚拟 DLL 被作为 MinWin 的一部分引入,旨在减少引导阶段的 DLL 数量。为了这些重定向,引入了更新的 apisetschema.dll 库,定义了指向新虚拟 DLL 的端点。
在 Build 6469 发布的 9 天后,即 2007 年 10 月 13 日,Microsoft 的 Channel9 网络发布了埃里克·特劳特(Eric Traut)在伊利诺伊大学的演讲视频,他在视频中展示了 MinWin 的功能,通过在 Virtual PC 计算机上运行未公开的早期 Windows 7 版本,演示了简单的网页服务器,完全运行在 MinWin 上。[1]值得注意的是,它显示了基于 ASCII 的启动画面,这在早期泄露的 Windows 7 版本中从未被观察到或发现过。
Windows 8
Windows 8 扩展了内核功能,使项目更趋完善,引入了命令行启动支持以及引导加载程序增强,以便与 MinWin 配合使用。Xbox One 操作系统基于 Windows 8 的 MinWin 基础。
Windows 10 及以后版本
Windows 10 使用 MinWin 作为 OneCore 项目的基础,旨在使 Windows 可在任何设备上启动,包括智能手机、平板电脑和物联网 (IoT) 设备。最终,MinWin 开始取代传统的 Windows NT 基础,以统一开发基础:因此,Windows 10 Build 14250 是最早可用的合并 Windows Mobile 源代码的版本。Azure Host OS 是一个轻量级操作系统,以 MinWin 为核心,用于驱动 Azure 基础设施服务器。此外,Windows Core OS 及其衍生版本,如 Windows 10X 已发布,但因未知原因后来被放弃。