Jump to content

MinWin

From The OpenXP Wiki

MinWin, or Minimal Windows, is a term used by Microsoft to describe the NT kernel and other fundamental components, which form the base for the current family of Windows NT operating systems. MinWin is intended for making the NT kernel and its dependent components more portable and liberated from higher-level dependencies and DLLs, resulting into complete rewrite of existing core functionality and move into new separate DLLs, which provide higher level functionality, similar in approach to Linux kernel organizational architecture.

The original goal of the project is to return to the original layering interface, which Dave Cutler actually projected: a low-level microkernel similar to VMS, which includes a set of base services, various subsystems and additional functionality, which can be expanded easily.

Structure

Technically, MinWin doesn't differ much from it's predecessors (files stored in base, ds, windows and so on) and simply contains refactored versions of them. In such manner, the NT kernel is stored in minkernel\ntos, instead of base\ntos prior from Windows 2000 to Vista. MinWin is structured in much like the Base project of Windows Server 2003, by also containing internal headers in public\internal folder and having specific libraries, without altering the main kernel project.

MinWin can be imagined as a Linux-approached kernel finalized in Windows 8, by creating separate projects based in one kernel like a separate Linux distributive, such as Windows Core OS, Factory OS, Validation OS and much more.

History

MinWin was planned from as early as 2002, and was originally described by Mark Myers as building a language-independent Windows foundation encompassing approximately ~95% of the core Windows code, from which full Windows editions can be built off of.[1] Earliest efforts of building componentized stacks of builds were introduced in Windows Longhorn build 4081, which was later temporarily abandoned due to problems with the Longhorn project itself, including development hell and overloaded features which were buggy and unstable, via then highly unfinished Managed C++ and early .NET Framework. A MinWin test harness was also present late into pre-reset development as the "MinWin Test Platform", itself a standalone Windows edition containing only the absolute core Windows components.

The first public mention of MinWin was in April 2003, when the vice-president of the Windows Core Technology group, Rob Short, used that meaning to describe ~95% of Windows components. After the release of Windows Server 2003, Rob Short started to create a new team of kernel architects to document and describe the undocumented functionality of the NT kernel, and due to the struggles of mass understanding, they decided to layer every component of Windows to differentiate it between each other and sort them to understand the closest to kernel components. Windows Vista development led to building fundamentals of MinWin, by refactoring kernel functionality itself, despite still remaining similarities with Windows Server 2003 kernel, such as Bugcheck interface, loading and text-mode screen modes.

Windows 7

The earliest available build to start implementing MinWin is Windows 7 build 6469[2], which adds KernelBase.dll, which fetches a lot of kernel32.dll and advapi32.dll libraries functionality consequently, bringing the kernel to have minimal dependencies. By the release of Windows 7, virtual DLLs were brought as part of MinWin, intended to lower a bunch of DLLs in the boot phase. For these redirections, a newer apisetschema.dll library was introduced, defining endpoints to newer virtual DLLs. Since Windows 7 build 6946, API sets (virtual libraries that route commonly used Win32 API functions) were implemented to avoid breaking backwards compatibility with applications targeting older Windows versions - usage of these libraries were dictated by an "API set schema" for each major product type like the Windows Phone 8 MobileCore and Windows 10 OneCoreUAP schemas. The Windows console subsystem was also decoupled entirely from the Client/Server Runtime (CSR) and made into a standalone feature as the Windows Console Host (conhost), nowadays a part of the open-source Windows Terminal console emulator.[3]

9 days later after 6469 compilation, on October 13, 2007 at Microsoft's Channel9 network, a video of Eric Traut's presentation at University of Illinois have been published, where he demonstrated MinWin capabilities, by running unidentified early Windows 7 build at Virtual PC machine, demonstrating simple web server, running entirely on MinWin.[4] Noticeably, it featured ASCII-based boot screen, which have never been observed or found in early Windows 7 leaked builds yet, however, a text-based version of MinWin's bootvid.dll, referenced as txtbootvid.dll, have been found on Microsoft Symbol Server and even showcased it's launch.

Windows 8

Windows 8 has extended kernel capabilities and made the project more finalized, with the introduction of command-line booting support and boot loader enhancements in order to work with MinWin. The Xbox One operating system was based on Windows 8's MinWin foundation.

Windows 10 and later

Windows 10 uses MinWin as the foundation for the OneCore project, intended to make Windows bootable on any device, including smartphones, tablets and Internet of Things (IoT) devices. Eventually, MinWin started to replace legacy Windows NT foundation to unify development base: thus, the Windows 10 build 14250 is the earliest available build to merge Windows Mobile source base. Azure Host OS is a lightweight operating system using MinWin as it's core, to engine Azure infrastructure servers. Also, Windows Core OS, among with it's derivatives, such as Windows 10X have been released but later abandoned due to unknown reasons.

References