<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://theopenxp.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ashific</id>
	<title>The OpenXP Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://theopenxp.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ashific"/>
	<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/Special:Contributions/Ashific"/>
	<updated>2026-06-04T14:55:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=NT_OS/2_Design&amp;diff=92</id>
		<title>NT OS/2 Design</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=NT_OS/2_Design&amp;diff=92"/>
		<updated>2026-06-03T18:01:53Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;These are some of the primary specs/docs from the early days of Windows NT, which continue to give insight into the fundamental kernel design decisions, as well as to describe which principles are used in modern Windows NT till this day. These articles will continue to improve over time via Windows Internals and many other similar documentation, available in the Internet.  == Core OS ==  * Kernel, * Alerts Design, * Asynchronous Procedure Calls (APC) Design,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are some of the primary specs/docs from the early days of Windows NT, which continue to give insight into the fundamental kernel design decisions, as well as to describe which principles are used in modern Windows NT till this day. These articles will continue to improve over time via Windows Internals and many other similar documentation, available in the Internet.&lt;br /&gt;
&lt;br /&gt;
== Core OS ==&lt;br /&gt;
&lt;br /&gt;
* [[Kernel]],&lt;br /&gt;
* [[Alerts Design]],&lt;br /&gt;
* [[Asynchronous Procedure Calls (APC) Design]],&lt;br /&gt;
* [[Object Management]],&lt;br /&gt;
* [[Process Structure]],&lt;br /&gt;
* [[Suspend/Resume]],&lt;br /&gt;
* [[Attach Process]],&lt;br /&gt;
* [[Virtual Memory]],&lt;br /&gt;
* [[Memory Management Design]],&lt;br /&gt;
* [[I/O System]],&lt;br /&gt;
* [[IRP (I/O Request Packet) Language Definition]],&lt;br /&gt;
* [[Named Pipe]],&lt;br /&gt;
* [[Mailslot]],&lt;br /&gt;
* [[Session Management and Control]],&lt;br /&gt;
* [[File System Design]],&lt;br /&gt;
* [[File System Support Routines]],&lt;br /&gt;
* [[Event - Semaphore]],&lt;br /&gt;
* [[Argument Validation]],&lt;br /&gt;
* [[Timer]],&lt;br /&gt;
* [[Coding Conventions]],&lt;br /&gt;
* [[NT Utilities Coding Conventions]],&lt;br /&gt;
* [[Exception Handling]],&lt;br /&gt;
* [[Emulation Subsystem]],&lt;br /&gt;
* [[Status Code]],&lt;br /&gt;
* [[Subsystem Design Rational]],&lt;br /&gt;
* [[Shared Resource]],&lt;br /&gt;
* [[Executive Support Routines]],&lt;br /&gt;
* [[Interlocked Support Routines]],&lt;br /&gt;
* [[Driver Model]],&lt;br /&gt;
* [[Opportunistic Locking]],&lt;br /&gt;
* [[Memory Management Guide for I/O]],&lt;br /&gt;
* [[Time Conversion]],&lt;br /&gt;
* [[Mutant]],&lt;br /&gt;
* [[Prefix Table]],&lt;br /&gt;
* [[System Startup]],&lt;br /&gt;
* [[Debug Architecture]],&lt;br /&gt;
* [[Linker/Librarian/Image Format Specification]],&lt;br /&gt;
* [[Caching]],&lt;br /&gt;
* [[Local Inter-Process Communication (LPC)]],&lt;br /&gt;
* [[Product Description and Implementation Plan]],&lt;br /&gt;
* [[Base Product Contents]].&lt;br /&gt;
&lt;br /&gt;
[[Category:NT OS/2 Design]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Build&amp;diff=91</id>
		<title>Build</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Build&amp;diff=91"/>
		<updated>2026-02-15T07:43:32Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide tested under Windows XP, Server 2003, 7 SP1, 8.1 &amp;amp; 10 and 11 (all architectures). For version of the guide made by anons, visit [https://rentry.co/build-win2k3 build-win2k3]. Note that the guide provided by anons isn&#039;t supported in any way by OpenXP developers.&lt;br /&gt;
&lt;br /&gt;
== Preparing for Build ==&lt;br /&gt;
Disable any AV (and Windows Defender) before extracting and building, as both of those actions create a lot of new files, and AV scans for execution of them all - this also counts for any other tools that monitor files, such as voidtools&#039; Everything, but they aren&#039;t impacting much as your antivirus does. Also disable User Account Control. This can be accomplished via Control Panel, or via Registry Key: navigate to &amp;lt;code&amp;gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;EnableLUA&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Some versions may require restart after registry apply.&lt;br /&gt;
&lt;br /&gt;
After preparing your machine, extract source tree to a folder named &amp;lt;code&amp;gt;srv03rtm&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;srvrtm&amp;lt;/code&amp;gt; on the root of a drive, drive letter doesn&#039;t seem to matter (just don&#039;t use C:\ drive as that has some extra security). It is recommended to use &amp;lt;code&amp;gt;D:\srvrtm\&amp;lt;/code&amp;gt; as the path to match RTM binaries.&lt;br /&gt;
&lt;br /&gt;
=== For 2000/XP/2003 Users ===&lt;br /&gt;
Before initializing Razzle, you should update your build machine. If you&#039;re using Windows XP/Server 2003, and you haven&#039;t updated it yet with [https://legacyupdate.net Legacy Update], it&#039;s mandatory to install .NET Framework 1.1, because without it Razzle will fail to initialize environment normally (despite that two versions of .NET 1.1 are included in &amp;lt;code&amp;gt;tools\x86&amp;lt;/code&amp;gt;). The installation files are included in &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; folder. Current certificates chain haven&#039;t tested with Windows 2000 at the moment of writing.&lt;br /&gt;
&lt;br /&gt;
=== For modern Windows Server Users ===&lt;br /&gt;
Currently there are issues regarding .NET Framework installation on Windows Server 2022/2025 versions, which may potentially disallow you from compiling source code. In order to fix those issues, you should switch to older known Windows Server versions (at the moment of writing it&#039;s Windows Server 2003) or use client versions of Windows instead (from Windows XP to Windows 11).&lt;br /&gt;
&lt;br /&gt;
=== Running environment ===&lt;br /&gt;
&lt;br /&gt;
* Run command-prompt as administrator (can usually be done by typing &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; into start menu, or by right click &amp;lt;code&amp;gt;Command Prompt&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Run as administrator&amp;lt;/code&amp;gt;)&lt;br /&gt;
* In the command-prompt, change to the source folder: &amp;lt;code&amp;gt;cd /d D:\srvrtm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Now start razzle: &amp;lt;code&amp;gt;tools\razzle.cmd free offline&amp;lt;/code&amp;gt; for 32-bit clients, and &amp;lt;code&amp;gt;tools\razzle64.cmd free offline&amp;lt;/code&amp;gt; for 64-bits. This initiates retail build of x86. The first time you run razzle inside that copy of the source code it&#039;ll need to initialize a few things, give it a few minutes, after a while a Notepad window will appear - make sure to close this for the initialization to continue.&lt;br /&gt;
* &#039;&#039;&#039;Important for first time!&#039;&#039;&#039; Run the prebuild script, if you&#039;re initiating source code for first time: &amp;lt;code&amp;gt;tools\prebuild&amp;lt;/code&amp;gt;. This scripts sets all read-only attributes for necessary stuff and makes 16-bit stuff workable for x64 environments.&lt;br /&gt;
If you want to have official builds, append &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument. This argument is modified and removed &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; argument, which previously checked build machine for eligibility of building official builds. &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument sets necessary values for official build independently of your machine eligibility, because of it&#039;s moot behavior and requirement to be connected into legacy build servers.&lt;br /&gt;
&lt;br /&gt;
== Build ==&lt;br /&gt;
Start to build via &amp;lt;code&amp;gt;build /cZP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (which is alias to first, so doesn&#039;t matter).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Build.exe doesn&#039;t seem to play well when building with many (up to 8) threads. If your build machine has more than that it&#039;s recommended to cap it to 8 threads maximum via the &amp;lt;code&amp;gt;-M 8&amp;lt;/code&amp;gt; switch, added to the build command (eg. &amp;lt;code&amp;gt;build /cZP -M 8&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;bcz -M 8&amp;lt;/code&amp;gt;). Use 8 threads if your host/virtual machine CPU have allocated 8 cores (or less). More than 8 threads build may lead to unforeseen behavior, such as inconsistent linkage and invalid generation of pieces of code, since some build programs were written back at time when CPUs should be limited in order to preserve proper frequency.&lt;br /&gt;
&lt;br /&gt;
As an alternative, you can use &amp;lt;code&amp;gt;tools\buildx.cmd&amp;lt;/code&amp;gt; script, which allows to build not only retail (&amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt;) and debug (checked, or &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt;) builds, but also profile and meter builds, additionally by disabling compiler optimizations and specifically building for AMD64/IA64 architectures. The purpose of profile and meter builds is in investigations, as of time of guide enhancement.&lt;br /&gt;
&lt;br /&gt;
=== Post-build ===&lt;br /&gt;
Download the Missing Binaries pack from [https://theopenxp.org/download OpenXP Download Center], which contains missing binaries both for AMD64 and x86 builds.&lt;br /&gt;
&lt;br /&gt;
Extract the contents of the binaries folder for the build type you&#039;re building into your build trees binaries folder (e.g. &amp;lt;code&amp;gt;D:\binaries.x86fre&amp;lt;/code&amp;gt;, should have been created during the build), the 7z should contain files for all SKUs (uses &amp;lt;code&amp;gt;pidgen.dll&amp;lt;/code&amp;gt; from Win2003 Enterprise, so your builds should accept Enterprise product keys), &#039;&#039;&#039;When asked during extraction to overwrite folders select &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;, but when asked to overwrite files, make sure to select &amp;lt;code&amp;gt;No&amp;lt;/code&amp;gt;!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inside the razzle window run &amp;lt;code&amp;gt;tools\postbuild&amp;lt;/code&amp;gt;. You can use &amp;lt;code&amp;gt;-sku:{sku}&amp;lt;/code&amp;gt; if you want to process only specific one (no brackets!), expect &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors, if you haven&#039;t extracted missing binaries from &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt;. If you have a wish to do a full post-build, append &amp;lt;code&amp;gt;-full&amp;lt;/code&amp;gt; argument&lt;br /&gt;
&lt;br /&gt;
==== Issues ====&lt;br /&gt;
&lt;br /&gt;
* Once post-build has finished, assuming you used the &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; file above and followed the guide properly, it should have hopefully succeeded without errors, and there shouldn&#039;t be any &amp;lt;code&amp;gt;binaries.x86fre\build_logs\postbuild.err&amp;lt;/code&amp;gt; file!&lt;br /&gt;
* Otherwise take a look inside the &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; - most messages in here are negligible, but if you see &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors associated with the edition you want to use, you may need to re-run &amp;lt;code&amp;gt;tools\missing.cmd&amp;lt;/code&amp;gt;, or extract &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; again.&lt;br /&gt;
* If &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; contains messages like &amp;lt;code&amp;gt;(crypto.cmd) ERROR&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;(ntsign.cmd) ERROR&amp;lt;/code&amp;gt; try re-importing the &amp;lt;code&amp;gt;tools\driver.pfx&amp;lt;/code&amp;gt; key-file (double-click it, press Next through the prompts, password is empty), and make sure your system date is set to the current date.&lt;br /&gt;
* If postbuild.err has filechk errors about missing &amp;lt;code&amp;gt;hwcomp.dat&amp;lt;/code&amp;gt; files, try copying the following into a batch script and run it in a razzle prompt (after using postbuild once already)&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\pro\i386 -o:%_NTPOSTBLD%\.\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\per\i386 -o:%_NTPOSTBLD%\perinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\bla\i386 -o:%_NTPOSTBLD%\blainf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\sbs\i386 -o:%_NTPOSTBLD%\sbsinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\srv\i386 -o:%_NTPOSTBLD%\srvinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\ads\i386 -o:%_NTPOSTBLD%\entinf\hwcomp.dat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating ISO files ===&lt;br /&gt;
Execute &amp;lt;code&amp;gt;tools\oscdimg {sku} [destination-file (optional)]&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;{sku}&amp;lt;/code&amp;gt; is one of:&lt;br /&gt;
* &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; - Windows Server 2003 Standard Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs&amp;lt;/code&amp;gt; - Windows Server 2003 Small Business Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;ads&amp;lt;/code&amp;gt; - Windows Server 2003 Enterprise Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;dtc&amp;lt;/code&amp;gt; - Windows Server 2003 Datacenter Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;bla&amp;lt;/code&amp;gt; - Windows Server 2003 Web Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;per&amp;lt;/code&amp;gt; - Windows XP Home Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; - Windows XP Professional&lt;br /&gt;
* &amp;lt;code&amp;gt;winpe&amp;lt;/code&amp;gt; - Windows Preinstallation Environment&lt;br /&gt;
ISO will be saved to &amp;lt;code&amp;gt;{build-drive}\{build-tag}_{sku}.iso&amp;lt;/code&amp;gt;, unless &amp;lt;code&amp;gt;[destination-file]&amp;lt;/code&amp;gt; is provided as a parameter.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get any problems during the build hopefully your problem might be answered in our Discord server, by lurking &lt;br /&gt;
&lt;br /&gt;
====== Certificate Import Wizard: An internal error occurred... ======&lt;br /&gt;
It&#039;s likely your PFX certificate isn&#039;t generated properly and you need to regenerate them. For that you should follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Check out the &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; and install from there &amp;lt;code&amp;gt;MSYS 1.0.11.exe&amp;lt;/code&amp;gt;, then hop up into your architecture folder (x32 or x64) and install &amp;lt;code&amp;gt;VC_redist&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;OpenSSL&amp;lt;/code&amp;gt;. Make sure OpenSSL is in your path (cause installer doesn&#039;t set it by default).&lt;br /&gt;
* Download the zip or do a &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; of CertUtil repository, or regenerate them using the original guide.&lt;br /&gt;
* Open MSYS and switch to directory where you extracted/cloned the repo.&lt;br /&gt;
* Attach all attributes via &amp;lt;code&amp;gt;chmod -r 0777 *&amp;lt;/code&amp;gt; and convert .sh to UNIX format with &amp;lt;code&amp;gt;dos2unix *.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;./generate.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the files from &amp;lt;code&amp;gt;srv03rtm.certs&amp;lt;/code&amp;gt; into source code tree (&amp;lt;code&amp;gt;D:\srv03rtm&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== After running razzle it shows a bunch of errors, &amp;quot;tfindcer not recognized&amp;quot; etc ======&lt;br /&gt;
You&#039;re likely on a 64-bit system but running &amp;lt;code&amp;gt;razzle.cmd&amp;lt;/code&amp;gt; directly, you should use &amp;lt;code&amp;gt;razzle64.cmd&amp;lt;/code&amp;gt; instead, this&#039;ll set things up so that razzle will use the correct tools for you. Hopefully with that the &amp;lt;code&amp;gt;tfindcer not recognized&amp;lt;/code&amp;gt; &amp;amp; other errors should go away.&lt;br /&gt;
&lt;br /&gt;
====== After a full build I get 1000+ errors, build.err has &amp;lt;code&amp;gt;has bad storage class&amp;lt;/code&amp;gt; errors inside ======&lt;br /&gt;
Seems to be caused by your locale, this is reported to happen with Simplified Chinese language, but can probably happen with other languages too.&lt;br /&gt;
&lt;br /&gt;
Besides changing your locale/language settings, you could also try editing the source files to remove the characters that cause problems, an anon posted a list of the files that need changes here&lt;br /&gt;
&lt;br /&gt;
====== I get a &amp;lt;code&amp;gt;TAPI.RES&amp;lt;/code&amp;gt; error during the build. ======&lt;br /&gt;
Try moving your source code folder closer to the root of the drive, ideally it should only be one folder up from the drive root (eg. &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== On Windows 7 and later I get NTVDM crashes while building ======&lt;br /&gt;
All NTVDM errors should have hopefully been solved in the v8 release of this guide/ZIP, but if you still run into any NTVDM error a copy of your build.log file would help a lot to figure out what caused it, if you ZIP that up and post in the thread hopefully we can figure something out. We consider to build code on Windows 10 build 1809 or newer, or use operating systems up to Windows Vista.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Kernel debugging can be enabled by editing the &amp;lt;code&amp;gt;C:\boot.ini&amp;lt;/code&amp;gt; file in your installed build, and adding &amp;lt;code&amp;gt;/debug /debugport=COM1 /baudrate=115200&amp;lt;/code&amp;gt; to the end of a config line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example here&#039;s a &amp;lt;code&amp;gt;boot.ini&amp;lt;/code&amp;gt; with two choices, one with debugging &amp;amp; one without, with this NTLDR will show an OS boot choice menu at startup:&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
[boot loader]&lt;br /&gt;
&lt;br /&gt;
timeout=30&lt;br /&gt;
&lt;br /&gt;
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;
&lt;br /&gt;
[operating systems]&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect /debug /debugport=COM1 /baudrate=115200&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;(even though they&#039;re named the same &amp;lt;code&amp;gt;Windows Server 2003, Enterprise&amp;lt;/code&amp;gt;, NTLDR will add a &amp;lt;code&amp;gt;[debugger enabled]&amp;lt;/code&amp;gt; tag to it on the OS selection menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chk (checked)&amp;lt;/code&amp;gt; builds are preferred for debugging as they enable asserts &amp;amp; debug messages, though &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt; will run a lot slower than &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds. &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds can also be debugged fine, but usually with a lot less debug output.&lt;br /&gt;
&lt;br /&gt;
Ideally you should also configure WinDbg to use the &amp;lt;code&amp;gt;binaries.{buildtype}\symbols.pri\retail&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;binaries.{buildtype}\symbols\retail&amp;lt;/code&amp;gt; symbols folders too, if WinDbg is running on the same machine that compiled the build it should then also be able to do source-level debugging against the actual source files.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using a VM to host your build on you&#039;ll have to pass-through the emulated COM port over to a pipe somehow, for WinDbg/KD/IDA/etc to make use of.&lt;br /&gt;
&lt;br /&gt;
There is apparently a way to get KDNET working on 2003 too (see &amp;lt;nowiki&amp;gt;https://github.com/MovAX0xDEAD/KDNET&amp;lt;/nowiki&amp;gt;), but this is as-of-yet untested with our builds, seems like it should have support for VMware&#039;s emulated network hardware at least.&lt;br /&gt;
&lt;br /&gt;
=== VMware setup ===&lt;br /&gt;
&lt;br /&gt;
* For a VMware VM, just open the VM hardware options, &#039;&#039;&#039;remove the printer hardware&#039;&#039;&#039;, then click &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; and choose &amp;lt;code&amp;gt;Serial Port&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In the serial-port config panel, set it to &amp;lt;code&amp;gt;Use named pipe&amp;lt;/code&amp;gt;, and enter a pipe name into the textbox, eg. &amp;lt;code&amp;gt;\\.\pipe\vm&amp;lt;/code&amp;gt;. The pipe should be setup as &amp;lt;code&amp;gt;This end is the server&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;The other end is a virtual machine&amp;lt;/code&amp;gt;.&lt;br /&gt;
* It&#039;s apparently recommended to use the &amp;lt;code&amp;gt;Yield CPU on poll&amp;lt;/code&amp;gt; option, but I&#039;ve had success without it, it&#039;s up to you.&lt;br /&gt;
* With that setup now just open WinDbg, choose &amp;lt;code&amp;gt;Attach to kernel&amp;lt;/code&amp;gt;, open the &amp;lt;code&amp;gt;COM&amp;lt;/code&amp;gt; tab and enter the baud-rate and pipe name you selected for your VM, then hit OK.&lt;br /&gt;
* Now WinDbg should start with &amp;lt;code&amp;gt;Waiting for reconnect&amp;lt;/code&amp;gt; text showing, and hopefully when you next boot up your VM it&#039;ll connect up to WinDbg by itself.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Setup/Installation ===&lt;br /&gt;
A debugger can be attached to setup by pressing F8 at the right time - for text-mode setup the right time is when asked &amp;lt;code&amp;gt;Press F6 if you need to install a third party SCSI or RAID driver&amp;lt;/code&amp;gt;, spamming it while that message is showing should make it connect to COM1 with 19200 baud-rate (debug options can be changed inside &amp;lt;code&amp;gt;txtsetup.sif&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;SetupDebugOptions&amp;lt;/code&amp;gt; line specifies options to apply when F8 is pressed). After debug connection is made it might take a couple extra minutes for it to pass the &amp;lt;code&amp;gt;Setup is starting Windows&amp;lt;/code&amp;gt; stage.&lt;br /&gt;
&lt;br /&gt;
Similarly, GUI setup can be debugged by pressing F8 before the Windows bootloader starts (progress bar etc), this should bring up a menu with options for &amp;lt;code&amp;gt;Safe Mode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt;, etc. Choosing &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; will make it attach to COM1 before starting setup, again at 19200 baudrate.&lt;br /&gt;
&lt;br /&gt;
=== Changing default baudrate ===&lt;br /&gt;
The default 19200 baudrate can be changed by editing the &amp;lt;code&amp;gt;base\boot\kdcom\xxkdsup.c&amp;lt;/code&amp;gt; file, search for &amp;lt;code&amp;gt;BD_19200&amp;lt;/code&amp;gt; inside there and change it to e.g. &amp;lt;code&amp;gt;BD_115200&amp;lt;/code&amp;gt;, now it should use that by default without needing any &amp;lt;code&amp;gt;/baudrate&amp;lt;/code&amp;gt; parameter, or eg. when using &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; from the boot options menu.&lt;br /&gt;
&lt;br /&gt;
=== Un-filtering kernel messages ===&lt;br /&gt;
Even with a chk build you may notice that the kernel doesn&#039;t seem to output much over KD, this seems to be because most of the kernel components use &amp;lt;code&amp;gt;KdPrintEx&amp;lt;/code&amp;gt;, which allows filtering KD messages to certain components (although MS&#039;s docs seem to suggest KdPrintEx filtering was only used in Vista, it does seem that 2003 makes use of it too)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable components you&#039;ll need to open the registry of your installed build to the following key (or create it if it doesn&#039;t exist)&amp;lt;syntaxhighlight lang=&amp;quot;registry&amp;quot;&amp;gt;&lt;br /&gt;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then create a DWORD value named the component you want to enable (e.g. &amp;lt;code&amp;gt;LDR&amp;lt;/code&amp;gt;), and set the value to hexadecimal &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A list of the component registry names can be found inside &amp;lt;code&amp;gt;base\published\obj\i386\dpfiltercm.c&amp;lt;/code&amp;gt; after a build. This also contains the symbol names for the component (eg. &amp;lt;code&amp;gt;Kd_LDR_Mask&amp;lt;/code&amp;gt;), which can be set directly through WinDbg/KD via the symbol name. (eg. &amp;lt;code&amp;gt;ed nt!Kd_LDR_Mask 0xFFFFFFFF&amp;lt;/code&amp;gt;, with symbols loaded this should set the LDR components filter value in real-time)&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; components value (default &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) is added to every components value, essentially making &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; the default value for all components - so setting this to &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt; should make every component print to KD. You&#039;ll get a ton more debug output from this, but all the KD prints will likely slow down the system a lot (unfortunately it doesn&#039;t seem possible to disable a component when using WIN2000 to enable them all)&lt;br /&gt;
&lt;br /&gt;
If you need to enable components before your build is installed (eg. kernel is having problems before setup is completed), you&#039;ll need to edit the &amp;lt;code&amp;gt;mergedcomponents\setupinfs\hivesys.inx&amp;lt;/code&amp;gt; file, anon made a post about that here, though it hasn&#039;t been tried yet afaik.&lt;br /&gt;
&lt;br /&gt;
=== x64 build OS support ===&lt;br /&gt;
&amp;lt;code&amp;gt;prepatched.zip v9&amp;lt;/code&amp;gt; adds support for using x64 build OS&#039;s such as Win10 x64, this is done by wrapping certain 16-bit tools using &amp;lt;code&amp;gt;MS-DOS Player&amp;lt;/code&amp;gt;, using .bat files to redirect calls to use the player, changing some makefiles to use 32-bit equivalents, etc.&lt;br /&gt;
&lt;br /&gt;
Unfortunately some of the wrapped 16-bit tools can still randomly error without rhyme or reason for it, as a workaround the .bat files of the worst offenders will give it 5 attempts before failing, hopefully this should be enough to allow builds to complete fine, but there&#039;s still a chance one of the other 16-bit tools could error too... maybe in future I&#039;ll apply this 5-attempts bandaid over all the 16-bit tools.&lt;br /&gt;
&lt;br /&gt;
Huge thanks to the anon who initially worked on fixing the 16-bit tools over at &amp;lt;nowiki&amp;gt;https://rentry.co/16bit-msbuild&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
=== AMD64 build support ===&lt;br /&gt;
As of update v10 an amd64 build can be created by initializing razzle with the &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; options, the build should mostly complete without errors, but note that post-build+ hasn&#039;t been updated at all to work properly with amd64 yet.&lt;br /&gt;
&lt;br /&gt;
Unfortunately as the leak didn&#039;t come with exinit.obj/systime.obj for amd64 these need to be built from anon&#039;s decompilations instead. v10a adds newer exinit.c/systime.c decompilations that are apparently an exact match to the x86 .obj files included in the leak, hopefully these should work well with other architectures too.&lt;br /&gt;
&lt;br /&gt;
Some anonymous users from 4chan have been slowly working on AMD64 back in 2020, being able to get past text-mode setup and start booting GUI-mode setup, though sadly as of this release nobody has been able to actually get GUI mode to fully start up.&lt;br /&gt;
&lt;br /&gt;
Note that this source code is from around ~2 years before AMD64 was officially released by MS as Server2003 SP1, so there&#039;s likely a lot missing. (WRK may have some newer kernel-mode parts, being both based on SP1 and including support for amd64, though note that WRK also has many things removed too...)&lt;br /&gt;
&lt;br /&gt;
However there&#039;s also many indications in the leak that MS did have amd64 running at this point, so it should eventually be possible for us to get it working too.&lt;br /&gt;
&lt;br /&gt;
=== Timebomb ===&lt;br /&gt;
&lt;br /&gt;
* Time can be adjusted by editing &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; variable inside &amp;lt;code&amp;gt;\tools\postbuildscripts\timebomb.cmd&amp;lt;/code&amp;gt; (line 44)&lt;br /&gt;
* Setting &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will disable the timebomb.&lt;br /&gt;
* Only certain &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; parameters are valid (0, 5, 15, 30, 60, 90, 120, 150, 180, 240, 360, 444)&lt;br /&gt;
&lt;br /&gt;
=== Different build options ===&lt;br /&gt;
You can modify your razzle shortcut (or execute it manually inside your source folder) to include (or remove) additional argument(s):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; - build &#039;free&#039; bits (production, omitting it will generated checked bits)&lt;br /&gt;
* &amp;lt;code&amp;gt;chkkernel&amp;lt;/code&amp;gt; - build &#039;checked&#039; (testing) kernel/hal/ntdll when building &#039;free&#039; bits&lt;br /&gt;
* &amp;lt;code&amp;gt;no_opts&amp;lt;/code&amp;gt; - disable binary optimization (useful for debugging, but will most likely fail a full build, some code can&#039;t be built without optimization)&lt;br /&gt;
* &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt; - enable verbose output of the build process&lt;br /&gt;
* &amp;lt;code&amp;gt;binaries_dir &amp;lt;basepath&amp;gt;&amp;lt;/code&amp;gt; - specifies custom output directory (default is &amp;lt;code&amp;gt;binaries&amp;lt;/code&amp;gt;, the suffix added after &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; is non-customizable)&lt;br /&gt;
* &amp;lt;code&amp;gt;officialbuild&amp;lt;/code&amp;gt; - sets razzle to build this as an &amp;quot;official&amp;quot; build, requires updating BuildMachines.txt, see the section below&lt;br /&gt;
* &amp;lt;code&amp;gt;win64&amp;lt;/code&amp;gt; - builds for Intel Itanium-64 machines&lt;br /&gt;
* &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; - builds for amd64 instead of x86, see &amp;lt;code&amp;gt;amd64 build support&amp;lt;/code&amp;gt; section above&lt;br /&gt;
* &amp;lt;code&amp;gt;pocketpc&amp;lt;/code&amp;gt; - builds for ARMv4 targets. Currently there are no any supportive headers and libraries for AMD clients, and work is undergoing.&lt;br /&gt;
&lt;br /&gt;
Other options are not described here, see &amp;lt;code&amp;gt;razzle.cmd /?&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
=== Private builds ===&lt;br /&gt;
To compile your very own private build along with a branch, open git administrator and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; to your source tree. There execute: &amp;lt;code&amp;gt;git init&amp;lt;/code&amp;gt;, which initializes an empty &amp;lt;code&amp;gt;.git&amp;lt;/code&amp;gt; folder. Without this it won&#039;t compile the built branch. Then execute: &amp;lt;code&amp;gt;git checkout -b {name_of_your_branch}&amp;lt;/code&amp;gt;, don&#039;t forget to remove the brackets!. Download this modified [https://drive.google.com/file/d/12UAYflPRiMpuZO1IafaEbcMDHRiEnNsO/view?usp=sharing razzle script] which has been edited to allow the detection of a created branch.&lt;br /&gt;
=== Official builds ===&lt;br /&gt;
The &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; parameter sets global definitions for official builds, which will make it match up closer to the retail builds, should be useful if you need to compare against retail for any reason. In difference of &amp;lt;code&amp;gt;offline&amp;lt;/code&amp;gt; and similar flags, all binaries in this mode are built in retail mode and won&#039;t contain any private information, as well as postbuild logging will be enabled.&lt;br /&gt;
&lt;br /&gt;
In latest patch kit from OpenXP, the useless checks of build machines in &amp;lt;code&amp;gt;&#039;&#039;BuildMachines.txt&#039;&#039;&amp;lt;/code&amp;gt; have been &#039;&#039;&#039;removed completely&#039;&#039;&#039;, and instead, any machine which is considered as &amp;quot;verified&amp;quot; is able to construct official builds. Also, the &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; parameter have been shortened to simply &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt;, in order to make things more consistent.&lt;br /&gt;
&lt;br /&gt;
=== Building specific components ===&lt;br /&gt;
Most components can be built seperately. For example, if you wish to rebuild &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; component, perform these steps:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cd base\ntos&amp;lt;/code&amp;gt; (you can also use &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; alias that razzle has set up for you)&lt;br /&gt;
* &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (alias for &amp;lt;code&amp;gt;build /cPZ&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Generally &amp;lt;code&amp;gt;postbuild.cmd&amp;lt;/code&amp;gt; is clever enough to include your changes properly without needing fresh build as it uses &amp;lt;code&amp;gt;bindiff&amp;lt;/code&amp;gt; to find differences.&lt;br /&gt;
&lt;br /&gt;
=== Generating new build number/name ===&lt;br /&gt;
Version information is stored in &amp;lt;code&amp;gt;\public\sdk\inc\ntverp.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;m0 set_builddate set_buildnum set_buildname&amp;lt;/code&amp;gt; to generate new build name quickly.&lt;br /&gt;
&lt;br /&gt;
=== Original CD filenames ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-standard_retail_en-us-NRMSFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: A600409482A5678EF6AF2B26D3576D6D9894178D)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-datacenter_retail_en-us-NRMDOEM_EN.iso&amp;lt;/code&amp;gt; (SHA1: E2B47A7CE45C6C6305594CEE4C1B64894805AAF4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-enterpriseserver_retail_en-us-NRMEFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 0309FFB4181BA5122C692A6E1079E9FC1D53FCE4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-webserver_retail_en-us-NRMWFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 46C1CCB2CFC96803E304A35BEF50CD71B2C1DE38)&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs.iso&amp;lt;/code&amp;gt; (converted from mdf; SHA1: CDB30C80FDE314C16CA11F5CD31650ECBEC7A214)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86chk_server-enterpriseserver_retail_en-us-NRMECHK_EN.iso&amp;lt;/code&amp;gt; (SHA1: EEF5F921CC8FC20FB29A862E1E132359E0D151BB)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64fre_server-enterprise_retail_en-us-ARMEXFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 076EDCF017EDE0B2D0D8067FA52CF3D44EEEF79A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64chk_server-enterprise_retail_en-us-AX2EXCFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 8916DFBB1D93A9CECB1FE8600BE2E2C752E85E7F)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-home_retail_en-us-WXHFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: B273C8D41E3844E3E46722F52F5A4CF9F206C8D0)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 1400DED4402D50F3864ED3D8DCF5CC52BA79A04A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86chk_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 017F10E4555D1A9280874B9B0243442F045F1B2D)&lt;br /&gt;
&lt;br /&gt;
=== Product keys ===&lt;br /&gt;
&lt;br /&gt;
* Evaluation (for all editions, if you set a timebomb. Default it set to 360 days):&lt;br /&gt;
** &amp;lt;code&amp;gt;99999-99999-99999-99999-99999&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DDDDD-DDDDD-DDDDD-DDDDD-DDDDD&amp;lt;/code&amp;gt;&lt;br /&gt;
* Standard Edition: &amp;lt;code&amp;gt;M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition: &amp;lt;code&amp;gt;QW32K-48T2T-3D2PJ-DXBWY-C6WRJ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition (x64): &amp;lt;code&amp;gt;KK2WD-BFYJ6-77X87-8TRBF-9B343&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Build&amp;diff=90</id>
		<title>Build</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Build&amp;diff=90"/>
		<updated>2026-02-15T07:41:12Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide tested under Windows XP, Server 2003, 7 SP1, 8.1 &amp;amp; 10 and 11 (all architectures). For version of the guide made by anons, visit [https://rentry.co/build-win2k3 build-win2k3]. Note that the guide provided by anons isn&#039;t supported in any way by OpenXP developers.&lt;br /&gt;
&lt;br /&gt;
== Preparing for Build ==&lt;br /&gt;
Disable any AV (and Windows Defender) before extracting and building, as both of those actions create a lot of new files, and AV scans for execution of them all - this also counts for any other tools that monitor files, such as voidtools&#039; Everything, but they aren&#039;t impacting much as your antivirus does. Also disable User Account Control. This can be accomplished via Control Panel, or via Registry Key: navigate to &amp;lt;code&amp;gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;EnableLUA&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Some versions may require restart after registry apply.&lt;br /&gt;
&lt;br /&gt;
After preparing your machine, extract source tree to a folder named &amp;lt;code&amp;gt;srv03rtm&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;srvrtm&amp;lt;/code&amp;gt; on the root of a drive, drive letter doesn&#039;t seem to matter (just don&#039;t use C:\ drive as that has some extra security). It is recommended to use &amp;lt;code&amp;gt;D:\srvrtm\&amp;lt;/code&amp;gt; as the path to match RTM binaries.&lt;br /&gt;
&lt;br /&gt;
=== For 2000/XP/2003 Users ===&lt;br /&gt;
Before initializing Razzle, you should update your build machine. If you&#039;re using Windows XP/Server 2003, and you haven&#039;t updated it yet with [https://legacyupdate.net Legacy Update], it&#039;s mandatory to install .NET Framework 1.1, because without it Razzle will fail to initialize environment normally (despite that two versions of .NET 1.1 are included in &amp;lt;code&amp;gt;tools\x86&amp;lt;/code&amp;gt;). The installation files are included in &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; folder. Current certificates chain haven&#039;t tested with Windows 2000 at the moment of writing.&lt;br /&gt;
&lt;br /&gt;
=== For modern Windows Server Users ===&lt;br /&gt;
Currently there are issues regarding .NET Framework installation on Windows Server 2022/2025 versions, which may potentially disallow you from compiling source code. In order to fix those issues, you should switch to older known Windows Server versions (at the moment of writing it&#039;s Windows Server 2003) or use client versions of Windows instead (from Windows XP to Windows 11).&lt;br /&gt;
&lt;br /&gt;
=== Running environment ===&lt;br /&gt;
&lt;br /&gt;
* Run command-prompt as administrator (can usually be done by typing &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; into start menu, or by right click &amp;lt;code&amp;gt;Command Prompt&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Run as administrator&amp;lt;/code&amp;gt;)&lt;br /&gt;
* In the command-prompt, change to the source folder: &amp;lt;code&amp;gt;cd /d D:\srvrtm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Now start razzle: &amp;lt;code&amp;gt;tools\razzle.cmd free offline&amp;lt;/code&amp;gt; for 32-bit clients, and &amp;lt;code&amp;gt;tools\razzle64.cmd free offline&amp;lt;/code&amp;gt; for 64-bits. This initiates retail build of x86. The first time you run razzle inside that copy of the source code it&#039;ll need to initialize a few things, give it a few minutes, after a while a Notepad window will appear - make sure to close this for the initialization to continue.&lt;br /&gt;
* &#039;&#039;&#039;Important for first time!&#039;&#039;&#039; Run the prebuild script, if you&#039;re initiating source code for first time: &amp;lt;code&amp;gt;tools\prebuild&amp;lt;/code&amp;gt;. This scripts sets all read-only attributes for necessary stuff and makes 16-bit stuff workable for x64 environments.&lt;br /&gt;
If you want to have official builds, append &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument. This argument is modified and removed &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; argument, which previously checked build machine for eligibility of building official builds. &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument sets necessary values for official build independently of your machine eligibility, because of it&#039;s moot behavior and requirement to be connected into legacy build servers.&lt;br /&gt;
&lt;br /&gt;
== Build ==&lt;br /&gt;
Start to build via &amp;lt;code&amp;gt;build /cZP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (which is alias to first, so doesn&#039;t matter).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Build.exe doesn&#039;t seem to play well when building with many (up to 8) threads. If your build machine has more than that it&#039;s recommended to cap it to 8 threads maximum via the &amp;lt;code&amp;gt;-M 8&amp;lt;/code&amp;gt; switch, added to the build command (eg. &amp;lt;code&amp;gt;build /cZP -M 8&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;bcz -M 8&amp;lt;/code&amp;gt;). Use 8 threads if your host/virtual machine CPU have allocated 8 cores (or less). More than 8 threads build may lead to unforeseen behavior, such as inconsistent linkage and invalid generation of pieces of code, since some build programs were written back at time when CPUs should be limited in order to preserve proper frequency.&lt;br /&gt;
&lt;br /&gt;
As an alternative, you can use &amp;lt;code&amp;gt;tools\buildx.cmd&amp;lt;/code&amp;gt; script, which allows to build not only retail (&amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt;) and debug (checked, or &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt;) builds, but also profile and meter builds, additionally by disabling compiler optimizations and specifically building for AMD64/IA64 architectures. The purpose of profile and meter builds is in investigations, as of time of guide enhancement.&lt;br /&gt;
&lt;br /&gt;
=== Post-build ===&lt;br /&gt;
Download the Missing Binaries pack from [https://theopenxp.org/download OpenXP Download Center], which contains missing binaries both for AMD64 and x86 builds.&lt;br /&gt;
&lt;br /&gt;
Extract the contents of the binaries folder for the build type you&#039;re building into your build trees binaries folder (e.g. &amp;lt;code&amp;gt;D:\binaries.x86fre&amp;lt;/code&amp;gt;, should have been created during the build), the 7z should contain files for all SKUs (uses &amp;lt;code&amp;gt;pidgen.dll&amp;lt;/code&amp;gt; from Win2003 Enterprise, so your builds should accept Enterprise product keys), &#039;&#039;&#039;When asked during extraction to overwrite folders select &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;, but when asked to overwrite files, make sure to select &amp;lt;code&amp;gt;No&amp;lt;/code&amp;gt;!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inside the razzle window run &amp;lt;code&amp;gt;tools\postbuild&amp;lt;/code&amp;gt;. You can use &amp;lt;code&amp;gt;-sku:{sku}&amp;lt;/code&amp;gt; if you want to process only specific one (no brackets!), expect &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors, if you haven&#039;t extracted missing binaries from &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt;. If you have a wish to do a full post-build, append &amp;lt;code&amp;gt;-full&amp;lt;/code&amp;gt; argument&lt;br /&gt;
&lt;br /&gt;
==== Issues ====&lt;br /&gt;
&lt;br /&gt;
* Once post-build has finished, assuming you used the &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; file above and followed the guide properly, it should have hopefully succeeded without errors, and there shouldn&#039;t be any &amp;lt;code&amp;gt;binaries.x86fre\build_logs\postbuild.err&amp;lt;/code&amp;gt; file!&lt;br /&gt;
* Otherwise take a look inside the &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; - most messages in here are negligible, but if you see &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors associated with the edition you want to use, you may need to re-run &amp;lt;code&amp;gt;tools\missing.cmd&amp;lt;/code&amp;gt;, or extract &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; again.&lt;br /&gt;
* If &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; contains messages like &amp;lt;code&amp;gt;(crypto.cmd) ERROR&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;(ntsign.cmd) ERROR&amp;lt;/code&amp;gt; try re-importing the &amp;lt;code&amp;gt;tools\driver.pfx&amp;lt;/code&amp;gt; key-file (double-click it, press Next through the prompts, password is empty), and make sure your system date is set to the current date.&lt;br /&gt;
* If postbuild.err has filechk errors about missing &amp;lt;code&amp;gt;hwcomp.dat&amp;lt;/code&amp;gt; files, try copying the following into a batch script and run it in a razzle prompt (after using postbuild once already)&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\pro\i386 -o:%_NTPOSTBLD%\.\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\per\i386 -o:%_NTPOSTBLD%\perinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\bla\i386 -o:%_NTPOSTBLD%\blainf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\sbs\i386 -o:%_NTPOSTBLD%\sbsinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\srv\i386 -o:%_NTPOSTBLD%\srvinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\ads\i386 -o:%_NTPOSTBLD%\entinf\hwcomp.dat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating ISO files ===&lt;br /&gt;
Execute &amp;lt;code&amp;gt;tools\oscdimg {sku} [destination-file (optional)]&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;{sku}&amp;lt;/code&amp;gt; is one of:&lt;br /&gt;
* &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; - Windows Server 2003 Standard Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs&amp;lt;/code&amp;gt; - Windows Server 2003 Small Business Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;ads&amp;lt;/code&amp;gt; - Windows Server 2003 Enterprise Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;dtc&amp;lt;/code&amp;gt; - Windows Server 2003 Datacenter Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;bla&amp;lt;/code&amp;gt; - Windows Server 2003 Web Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;per&amp;lt;/code&amp;gt; - Windows XP Home Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; - Windows XP Professional&lt;br /&gt;
* &amp;lt;code&amp;gt;winpe&amp;lt;/code&amp;gt; - Windows Preinstallation Environment&lt;br /&gt;
ISO will be saved to &amp;lt;code&amp;gt;{build-drive}\{build-tag}_{sku}.iso&amp;lt;/code&amp;gt;, unless &amp;lt;code&amp;gt;[destination-file]&amp;lt;/code&amp;gt; is provided as a parameter.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get any problems during the build hopefully your problem might be answered in our Discord server, by lurking &lt;br /&gt;
&lt;br /&gt;
====== Certificate Import Wizard: An internal error occurred... ======&lt;br /&gt;
It&#039;s likely your PFX certificate isn&#039;t generated properly and you need to regenerate them. For that you should follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Check out the &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; and install from there &amp;lt;code&amp;gt;MSYS 1.0.11.exe&amp;lt;/code&amp;gt;, then hop up into your architecture folder (x32 or x64) and install &amp;lt;code&amp;gt;VC_redist&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;OpenSSL&amp;lt;/code&amp;gt;. Make sure OpenSSL is in your path (cause installer doesn&#039;t set it by default).&lt;br /&gt;
* Download the zip or do a &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; of CertUtil repository, or regenerate them using the original guide.&lt;br /&gt;
* Open MSYS and switch to directory where you extracted/cloned the repo.&lt;br /&gt;
* Attach all attributes via &amp;lt;code&amp;gt;chmod -r 0777 *&amp;lt;/code&amp;gt; and convert .sh to UNIX format with &amp;lt;code&amp;gt;dos2unix *.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;./generate.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the files from &amp;lt;code&amp;gt;srv03rtm.certs&amp;lt;/code&amp;gt; into source code tree (&amp;lt;code&amp;gt;D:\srv03rtm&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== After running razzle it shows a bunch of errors, &amp;quot;tfindcer not recognized&amp;quot; etc ======&lt;br /&gt;
You&#039;re likely on a 64-bit system but running &amp;lt;code&amp;gt;razzle.cmd&amp;lt;/code&amp;gt; directly, you should use &amp;lt;code&amp;gt;razzle64.cmd&amp;lt;/code&amp;gt; instead, this&#039;ll set things up so that razzle will use the correct tools for you. Hopefully with that the &amp;lt;code&amp;gt;tfindcer not recognized&amp;lt;/code&amp;gt; &amp;amp; other errors should go away.&lt;br /&gt;
&lt;br /&gt;
====== After a full build I get 1000+ errors, build.err has &amp;lt;code&amp;gt;has bad storage class&amp;lt;/code&amp;gt; errors inside ======&lt;br /&gt;
Seems to be caused by your locale, this is reported to happen with Simplified Chinese language, but can probably happen with other languages too.&lt;br /&gt;
&lt;br /&gt;
Besides changing your locale/language settings, you could also try editing the source files to remove the characters that cause problems, an anon posted a list of the files that need changes here&lt;br /&gt;
&lt;br /&gt;
====== I get a &amp;lt;code&amp;gt;TAPI.RES&amp;lt;/code&amp;gt; error during the build. ======&lt;br /&gt;
Try moving your source code folder closer to the root of the drive, ideally it should only be one folder up from the drive root (eg. &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== On Windows 7 and later I get NTVDM crashes while building ======&lt;br /&gt;
All NTVDM errors should have hopefully been solved in the v8 release of this guide/ZIP, but if you still run into any NTVDM error a copy of your build.log file would help a lot to figure out what caused it, if you ZIP that up and post in the thread hopefully we can figure something out. We consider to build code on Windows 10 build 1809 or newer, or use operating systems up to Windows Vista.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Kernel debugging can be enabled by editing the &amp;lt;code&amp;gt;C:\boot.ini&amp;lt;/code&amp;gt; file in your installed build, and adding &amp;lt;code&amp;gt;/debug /debugport=COM1 /baudrate=115200&amp;lt;/code&amp;gt; to the end of a config line.&lt;br /&gt;
&lt;br /&gt;
For example here&#039;s a &amp;lt;code&amp;gt;boot.ini&amp;lt;/code&amp;gt; with two choices, one with debugging &amp;amp; one without, with this NTLDR will show an OS boot choice menu at startup:&amp;lt;blockquote&amp;gt;[boot loader]&lt;br /&gt;
&lt;br /&gt;
timeout=30&lt;br /&gt;
&lt;br /&gt;
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;
&lt;br /&gt;
[operating systems]&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect /debug /debugport=COM1 /baudrate=115200&amp;lt;/blockquote&amp;gt;(even though they&#039;re named the same &amp;lt;code&amp;gt;Windows Server 2003, Enterprise&amp;lt;/code&amp;gt;, NTLDR will add a &amp;lt;code&amp;gt;[debugger enabled]&amp;lt;/code&amp;gt; tag to it on the OS selection menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chk (checked)&amp;lt;/code&amp;gt; builds are preferred for debugging as they enable asserts &amp;amp; debug messages, though &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt; will run a lot slower than &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds. &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds can also be debugged fine, but usually with a lot less debug output.&lt;br /&gt;
&lt;br /&gt;
Ideally you should also configure WinDbg to use the &amp;lt;code&amp;gt;binaries.{buildtype}\symbols.pri\retail&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;binaries.{buildtype}\symbols\retail&amp;lt;/code&amp;gt; symbols folders too, if WinDbg is running on the same machine that compiled the build it should then also be able to do source-level debugging against the actual source files.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using a VM to host your build on you&#039;ll have to pass-through the emulated COM port over to a pipe somehow, for WinDbg/KD/IDA/etc to make use of.&lt;br /&gt;
&lt;br /&gt;
There is apparently a way to get KDNET working on 2003 too (see &amp;lt;nowiki&amp;gt;https://github.com/MovAX0xDEAD/KDNET&amp;lt;/nowiki&amp;gt;), but this is as-of-yet untested with our builds, seems like it should have support for VMware&#039;s emulated network hardware at least.&lt;br /&gt;
&lt;br /&gt;
(TODO: add more VM guides here... if anyone wants to post one in the thread I&#039;m happy to add it here)&lt;br /&gt;
&lt;br /&gt;
=== VMware setup ===&lt;br /&gt;
&lt;br /&gt;
* For a VMware VM, just open the VM hardware options, &#039;&#039;&#039;remove the printer hardware&#039;&#039;&#039;, then click &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; and choose &amp;lt;code&amp;gt;Serial Port&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In the serial-port config panel, set it to &amp;lt;code&amp;gt;Use named pipe&amp;lt;/code&amp;gt;, and enter a pipe name into the textbox, eg. &amp;lt;code&amp;gt;\\.\pipe\vm&amp;lt;/code&amp;gt;. The pipe should be setup as &amp;lt;code&amp;gt;This end is the server&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;The other end is a virtual machine&amp;lt;/code&amp;gt;.&lt;br /&gt;
* It&#039;s apparently recommended to use the &amp;lt;code&amp;gt;Yield CPU on poll&amp;lt;/code&amp;gt; option, but I&#039;ve had success without it, it&#039;s up to you.&lt;br /&gt;
* With that setup now just open WinDbg, choose &amp;lt;code&amp;gt;Attach to kernel&amp;lt;/code&amp;gt;, open the &amp;lt;code&amp;gt;COM&amp;lt;/code&amp;gt; tab and enter the baud-rate and pipe name you selected for your VM, then hit OK.&lt;br /&gt;
* Now WinDbg should start with &amp;lt;code&amp;gt;Waiting for reconnect&amp;lt;/code&amp;gt; text showing, and hopefully when you next boot up your VM it&#039;ll connect up to WinDbg by itself.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Setup/Installation ===&lt;br /&gt;
A debugger can be attached to setup by pressing F8 at the right time - for text-mode setup the right time is when asked &amp;lt;code&amp;gt;Press F6 if you need to install a third party SCSI or RAID driver&amp;lt;/code&amp;gt;, spamming it while that message is showing should make it connect to COM1 with 19200 baud-rate (debug options can be changed inside &amp;lt;code&amp;gt;txtsetup.sif&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;SetupDebugOptions&amp;lt;/code&amp;gt; line specifies options to apply when F8 is pressed). After debug connection is made it might take a couple extra minutes for it to pass the &amp;lt;code&amp;gt;Setup is starting Windows&amp;lt;/code&amp;gt; stage.&lt;br /&gt;
&lt;br /&gt;
Similarly, GUI setup can be debugged by pressing F8 before the Windows bootloader starts (progress bar etc), this should bring up a menu with options for &amp;lt;code&amp;gt;Safe Mode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt;, etc. Choosing &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; will make it attach to COM1 before starting setup, again at 19200 baudrate.&lt;br /&gt;
&lt;br /&gt;
=== Changing default baudrate ===&lt;br /&gt;
The default 19200 baudrate can be changed by editing the &amp;lt;code&amp;gt;base\boot\kdcom\xxkdsup.c&amp;lt;/code&amp;gt; file, search for &amp;lt;code&amp;gt;BD_19200&amp;lt;/code&amp;gt; inside there and change it to e.g. &amp;lt;code&amp;gt;BD_115200&amp;lt;/code&amp;gt;, now it should use that by default without needing any &amp;lt;code&amp;gt;/baudrate&amp;lt;/code&amp;gt; parameter, or eg. when using &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; from the boot options menu.&lt;br /&gt;
&lt;br /&gt;
=== Un-filtering kernel messages ===&lt;br /&gt;
Even with a chk build you may notice that the kernel doesn&#039;t seem to output much over KD, this seems to be because most of the kernel components use &amp;lt;code&amp;gt;KdPrintEx&amp;lt;/code&amp;gt;, which allows filtering KD messages to certain components (although MS&#039;s docs seem to suggest KdPrintEx filtering was only used in Vista, it does seem that 2003 makes use of it too)&lt;br /&gt;
&lt;br /&gt;
To enable components you&#039;ll need to open the registry of your installed build to the following key (or create it if it doesn&#039;t exist)&amp;lt;blockquote&amp;gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter&amp;lt;/blockquote&amp;gt;Then create a DWORD value named the component you want to enable (eg. &amp;lt;code&amp;gt;LDR&amp;lt;/code&amp;gt;), and set the value to hexadecimal &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A list of the component registry names can be found inside &amp;lt;code&amp;gt;base\published\obj\i386\dpfiltercm.c&amp;lt;/code&amp;gt; after a build. This also contains the symbol names for the component (eg. &amp;lt;code&amp;gt;Kd_LDR_Mask&amp;lt;/code&amp;gt;), which can be set directly through WinDbg/KD via the symbol name. (eg. &amp;lt;code&amp;gt;ed nt!Kd_LDR_Mask 0xFFFFFFFF&amp;lt;/code&amp;gt;, with symbols loaded this should set the LDR components filter value in real-time)&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; components value (default &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) is added to every components value, essentially making &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; the default value for all components - so setting this to &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt; should make every component print to KD. You&#039;ll get a ton more debug output from this, but all the KD prints will likely slow down the system a lot (unfortunately it doesn&#039;t seem possible to disable a component when using WIN2000 to enable them all)&lt;br /&gt;
&lt;br /&gt;
If you need to enable components before your build is installed (eg. kernel is having problems before setup is completed), you&#039;ll need to edit the &amp;lt;code&amp;gt;mergedcomponents\setupinfs\hivesys.inx&amp;lt;/code&amp;gt; file, anon made a post about that here, though it hasn&#039;t been tried yet afaik.&lt;br /&gt;
&lt;br /&gt;
=== x64 build OS support ===&lt;br /&gt;
prepatched.zip v9 adds support for using x64 build OS&#039;s such as Win10 x64, this is done by wrapping certain 16-bit tools using &amp;lt;code&amp;gt;MS-DOS Player&amp;lt;/code&amp;gt;, using .bat files to redirect calls to use the player, changing some makefiles to use 32-bit equivalents, etc.&lt;br /&gt;
&lt;br /&gt;
Unfortunately some of the wrapped 16-bit tools can still randomly error without rhyme or reason for it, as a workaround the .bat files of the worst offenders will give it 5 attempts before failing, hopefully this should be enough to allow builds to complete fine, but there&#039;s still a chance one of the other 16-bit tools could error too... maybe in future I&#039;ll apply this 5-attempts bandaid over all the 16-bit tools.&lt;br /&gt;
&lt;br /&gt;
Huge thanks to the anon who initially worked on fixing the 16-bit tools over at &amp;lt;nowiki&amp;gt;https://rentry.co/16bit-msbuild&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
=== amd64 build support ===&lt;br /&gt;
As of update v10 an amd64 build can be created by initialising razzle with the &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; options, the build should mostly complete without errors, but note that postbuild+ hasn&#039;t been updated at all to work properly with amd64 yet.&lt;br /&gt;
&lt;br /&gt;
Unfortunately as the leak didn&#039;t come with exinit.obj/systime.obj for amd64 these need to be built from anon&#039;s decompilations instead. v10a adds newer exinit.c/systime.c decompilations that are apparently an exact match to the x86 .obj files included in the leak, hopefully these should work well with other architectures too.&lt;br /&gt;
&lt;br /&gt;
Some anons have been slowly working on amd64, being able to get past text-mode setup and start booting GUI-mode setup, though sadly as of this release nobody has been able to actually get GUI mode to fully start up.&lt;br /&gt;
&lt;br /&gt;
Note that this source code is from around ~2 years before amd64 was officially released by MS as Server2003 SP1, so there&#039;s likely a lot missing. (WRK may have some newer kernel-mode parts, being both based on SP1 and including support for amd64, though note that WRK also has many things removed too...)&lt;br /&gt;
&lt;br /&gt;
However there&#039;s also many indications in the leak that MS did have amd64 running at this point, so it should eventually be possible for us to get it working too.&lt;br /&gt;
&lt;br /&gt;
=== Timebomb ===&lt;br /&gt;
&lt;br /&gt;
* Time can be adjusted by editing &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; variable inside &amp;lt;code&amp;gt;\tools\postbuildscripts\timebomb.cmd&amp;lt;/code&amp;gt; (line 44)&lt;br /&gt;
* Setting &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will disable the timebomb.&lt;br /&gt;
* Only certain &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; parameters are valid (0, 5, 15, 30, 60, 90, 120, 150, 180, 240, 360, 444)&lt;br /&gt;
&lt;br /&gt;
=== Different build options ===&lt;br /&gt;
You can modify your razzle shortcut (or execute it manually inside your source folder) to include (or remove) additional argument(s):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; - build &#039;free&#039; bits (production, omitting it will generated checked bits)&lt;br /&gt;
* &amp;lt;code&amp;gt;chkkernel&amp;lt;/code&amp;gt; - build &#039;checked&#039; (testing) kernel/hal/ntdll when building &#039;free&#039; bits&lt;br /&gt;
* &amp;lt;code&amp;gt;no_opts&amp;lt;/code&amp;gt; - disable binary optimization (useful for debugging, but will most likely fail a full build, some code can&#039;t be built without optimization)&lt;br /&gt;
* &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt; - enable verbose output of the build process&lt;br /&gt;
* &amp;lt;code&amp;gt;binaries_dir &amp;lt;basepath&amp;gt;&amp;lt;/code&amp;gt; - specifies custom output directory (default is &amp;lt;code&amp;gt;binaries&amp;lt;/code&amp;gt;, the suffix added after &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; is non-customizable)&lt;br /&gt;
* &amp;lt;code&amp;gt;officialbuild&amp;lt;/code&amp;gt; - sets razzle to build this as an &amp;quot;official&amp;quot; build, requires updating BuildMachines.txt, see the section below&lt;br /&gt;
* &amp;lt;code&amp;gt;win64&amp;lt;/code&amp;gt; - builds for Intel Itanium-64 machines&lt;br /&gt;
* &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; - builds for amd64 instead of x86, see &amp;lt;code&amp;gt;amd64 build support&amp;lt;/code&amp;gt; section above&lt;br /&gt;
* &amp;lt;code&amp;gt;pocketpc&amp;lt;/code&amp;gt; - builds for ARMv4 targets. Currently there are no any supportive headers and libraries for AMD clients, and work is undergoing.&lt;br /&gt;
&lt;br /&gt;
Other options are not described here, see &amp;lt;code&amp;gt;razzle.cmd /?&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
=== Private builds ===&lt;br /&gt;
To compile your very own private build along with a branch, open git administrator and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; to your source tree. There execute: &amp;lt;code&amp;gt;git init&amp;lt;/code&amp;gt;, which initializes an empty &amp;lt;code&amp;gt;.git&amp;lt;/code&amp;gt; folder. Without this it won&#039;t compile the built branch. Then execute: &amp;lt;code&amp;gt;git checkout -b {name_of_your_branch}&amp;lt;/code&amp;gt;, don&#039;t forget to remove the brackets!. Download this modified [https://drive.google.com/file/d/12UAYflPRiMpuZO1IafaEbcMDHRiEnNsO/view?usp=sharing razzle script] which has been edited to allow the detection of a created branch.&lt;br /&gt;
=== Official builds ===&lt;br /&gt;
The &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; parameter sets global definitions for official builds, which will make it match up closer to the retail builds, should be useful if you need to compare against retail for any reason. In difference of &amp;lt;code&amp;gt;offline&amp;lt;/code&amp;gt; and similar flags, all binaries in this mode are built in retail mode and won&#039;t contain any private information, as well as postbuild logging will be enabled.&lt;br /&gt;
&lt;br /&gt;
In latest patch kit from OpenXP, the useless checks of build machines in &amp;lt;code&amp;gt;&#039;&#039;BuildMachines.txt&#039;&#039;&amp;lt;/code&amp;gt; have been &#039;&#039;&#039;removed completely&#039;&#039;&#039;, and instead, any machine which is considered as &amp;quot;verified&amp;quot; is able to construct official builds. Also, the &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; parameter have been shortened to simply &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt;, in order to make things more consistent.&lt;br /&gt;
&lt;br /&gt;
=== Building specific components ===&lt;br /&gt;
Most components can be built seperately. For example, if you wish to rebuild &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; component, perform these steps:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cd base\ntos&amp;lt;/code&amp;gt; (you can also use &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; alias that razzle has set up for you)&lt;br /&gt;
* &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (alias for &amp;lt;code&amp;gt;build /cPZ&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Generally &amp;lt;code&amp;gt;postbuild.cmd&amp;lt;/code&amp;gt; is clever enough to include your changes properly without needing fresh build as it uses &amp;lt;code&amp;gt;bindiff&amp;lt;/code&amp;gt; to find differences.&lt;br /&gt;
&lt;br /&gt;
=== Generating new build number/name ===&lt;br /&gt;
Version information is stored in &amp;lt;code&amp;gt;\public\sdk\inc\ntverp.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;m0 set_builddate set_buildnum set_buildname&amp;lt;/code&amp;gt; to generate new build name quickly.&lt;br /&gt;
&lt;br /&gt;
=== Original CD filenames ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-standard_retail_en-us-NRMSFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: A600409482A5678EF6AF2B26D3576D6D9894178D)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-datacenter_retail_en-us-NRMDOEM_EN.iso&amp;lt;/code&amp;gt; (SHA1: E2B47A7CE45C6C6305594CEE4C1B64894805AAF4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-enterpriseserver_retail_en-us-NRMEFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 0309FFB4181BA5122C692A6E1079E9FC1D53FCE4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-webserver_retail_en-us-NRMWFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 46C1CCB2CFC96803E304A35BEF50CD71B2C1DE38)&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs.iso&amp;lt;/code&amp;gt; (converted from mdf; SHA1: CDB30C80FDE314C16CA11F5CD31650ECBEC7A214)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86chk_server-enterpriseserver_retail_en-us-NRMECHK_EN.iso&amp;lt;/code&amp;gt; (SHA1: EEF5F921CC8FC20FB29A862E1E132359E0D151BB)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64fre_server-enterprise_retail_en-us-ARMEXFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 076EDCF017EDE0B2D0D8067FA52CF3D44EEEF79A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64chk_server-enterprise_retail_en-us-AX2EXCFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 8916DFBB1D93A9CECB1FE8600BE2E2C752E85E7F)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-home_retail_en-us-WXHFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: B273C8D41E3844E3E46722F52F5A4CF9F206C8D0)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 1400DED4402D50F3864ED3D8DCF5CC52BA79A04A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86chk_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 017F10E4555D1A9280874B9B0243442F045F1B2D)&lt;br /&gt;
&lt;br /&gt;
=== Product keys ===&lt;br /&gt;
&lt;br /&gt;
* Evaluation (for all editions, if you set a timebomb. Default it set to 360 days):&lt;br /&gt;
** &amp;lt;code&amp;gt;99999-99999-99999-99999-99999&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DDDDD-DDDDD-DDDDD-DDDDD-DDDDD&amp;lt;/code&amp;gt;&lt;br /&gt;
* Standard Edition: &amp;lt;code&amp;gt;M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition: &amp;lt;code&amp;gt;QW32K-48T2T-3D2PJ-DXBWY-C6WRJ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition (x64): &amp;lt;code&amp;gt;KK2WD-BFYJ6-77X87-8TRBF-9B343&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=89</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=89"/>
		<updated>2026-02-13T17:03:57Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Since Discord link may expire with time, replacing with dynamic one to change it later&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Welcome to The OpenXP Wiki!}}&lt;br /&gt;
Welcome to the [[OpenXP]] Project&#039;s official wiki! Here you can find useful guides to compile Windows XP/Server 2003 leaked source code, as well as to master in following stuff:&lt;br /&gt;
&lt;br /&gt;
* [[Getting Started|Getting started]] on configuring environment, generating certificates and performing successful build,&lt;br /&gt;
* Adjusting source code with custom patches, enhancements and tweaks,&lt;br /&gt;
* Knowing more about [[Windows Internals]] (in most real way), as well as to introducing more fundamentals,&lt;br /&gt;
* And waffles! 🧇&lt;br /&gt;
If you want to stay connected with OpenXP, you can join our official [https://theopenxp.org/discord Discord server], as well as to download source codes from our [[Download Center]] in safest way!&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=VNext&amp;diff=88</id>
		<title>VNext</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=VNext&amp;diff=88"/>
		<updated>2026-02-13T06:17:30Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;vNext&#039;&#039;&#039; is the upcoming development hive of [[OpenXP]], intended for fundamental changes. Ideologically, it is principally derives abandoned &amp;lt;code&amp;gt;nova&amp;lt;/code&amp;gt; branch, but with relatively new approach.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
Before 2025, vNext development was done exclusively on &amp;lt;code&amp;gt;vnext&amp;lt;/code&amp;gt; branch, without reverse-integrations and subbranches. However, this approach declared continuous mess of source code which wasn&#039;t separated from code base.&lt;br /&gt;
&lt;br /&gt;
To keep things sorted out, vNext branches started with &amp;lt;code&amp;gt;vx&amp;lt;/code&amp;gt; prefix, and it&#039;s mainstream branch is &amp;lt;code&amp;gt;vx_core&amp;lt;/code&amp;gt;. Another subbranches will available eventually, as the earliest available subbranch is &amp;lt;code&amp;gt;vx_core_architect&amp;lt;/code&amp;gt;. Continually, after stabilizing all vNext development results it will be reverse integrated with &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; branch, and it&#039;s results will appear on public patch kits.&lt;br /&gt;
&lt;br /&gt;
== Planned features ==&lt;br /&gt;
Since vNext is relatively new development hive, it plans to integrate following things in general;&lt;br /&gt;
&lt;br /&gt;
* Finalized port of source code under Windows Server 2003 SP1 DDK&#039;s compilers, which include fixed AMD64/IA-64 compilers,&lt;br /&gt;
* Rejuvenated kernel, similar in principles to MinWin and Linux, portative and compatible with older Windows NT family operating systems (e.g. ` Windows NT 3.1 and Windows 2000),&lt;br /&gt;
* Replacements for most of shell programs with backwards compatibility with original programs (e.g. ` New Task Manager),&lt;br /&gt;
* Bringing to public release of OpenXP source code by re-checking code audit.&lt;br /&gt;
&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=87</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=87"/>
		<updated>2026-02-12T06:53:16Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Welcome to The OpenXP Wiki!}}&lt;br /&gt;
Welcome to the [[OpenXP]] Project&#039;s official wiki! Here you can find useful guides to compile Windows XP/Server 2003 leaked source code, as well as to master in following stuff:&lt;br /&gt;
&lt;br /&gt;
* [[Getting Started|Getting started]] on configuring environment, generating certificates and performing successful build,&lt;br /&gt;
* Adjusting source code with custom patches, enhancements and tweaks,&lt;br /&gt;
* Knowing more about [[Windows Internals]] (in most real way), as well as to introducing more fundamentals,&lt;br /&gt;
* And waffles! 🧇&lt;br /&gt;
If you want to stay connected with OpenXP, you can join our official [https://discord.com/invite/vS4bNfsZgh Discord server], as well as to download source codes from our [[Download Center]] in safest way!&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Getting_Started&amp;diff=86</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Getting_Started&amp;diff=86"/>
		<updated>2026-02-12T06:49:49Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;In order to getting started at developing and building Windows Server 2003 source with OpenXP, you can explore more pages:  * Building instructions, including proper description of every component, * Certificate generation for making custom certificates and/or actualizing existing one, * More about facilities of source code, such as Razzle.  Category:OpenXP&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to getting started at developing and building Windows Server 2003 source with OpenXP, you can explore more pages:&lt;br /&gt;
&lt;br /&gt;
* [[Build|Building instructions]], including proper description of every component,&lt;br /&gt;
* [[Certificate Generation|Certificate generation]] for making custom certificates and/or actualizing existing one,&lt;br /&gt;
* More about facilities of source code, such as [[Razzle]].&lt;br /&gt;
&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Build&amp;diff=85</id>
		<title>Build</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Build&amp;diff=85"/>
		<updated>2026-02-12T06:47:40Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Ashific moved page Getting Started to Build without leaving a redirect: Getting Started must be a roadmap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide tested under Windows XP, Server 2003, 7 SP1, 8.1 &amp;amp; 10 and 11 (all architectures). For version of the guide made by anons, visit [https://rentry.co/build-win2k3 build-win2k3]. Note that the guide provided by anons isn&#039;t supported in any way by OpenXP developers.&lt;br /&gt;
&lt;br /&gt;
== Preparing for Build ==&lt;br /&gt;
Disable any AV (and Windows Defender) before extracting and building, as both of those actions create a lot of new files, and AV scans for execution of them all - this also counts for any other tools that monitor files, such as voidtools&#039; Everything, but they aren&#039;t impacting much as your antivirus does. Also disable User Account Control. This can be accomplished via Control Panel, or via Registry Key: navigate to &amp;lt;code&amp;gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;EnableLUA&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Some versions may require restart after registry apply.&lt;br /&gt;
&lt;br /&gt;
After preparing your machine, extract source tree to a folder named &amp;lt;code&amp;gt;srv03rtm&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;srvrtm&amp;lt;/code&amp;gt; on the root of a drive, drive letter doesn&#039;t seem to matter (just don&#039;t use C:\ drive as that has some extra security). It is recommended to use &amp;lt;code&amp;gt;D:\srvrtm\&amp;lt;/code&amp;gt; as the path to match RTM binaries.&lt;br /&gt;
&lt;br /&gt;
=== For 2000/XP/2003 Users ===&lt;br /&gt;
Before initializing Razzle, you should update your build machine. If you&#039;re using Windows XP/Server 2003, and you haven&#039;t updated it yet with [https://legacyupdate.net Legacy Update], it&#039;s mandatory to install .NET Framework 1.1, because without it Razzle will fail to initialize environment normally (despite that two versions of .NET 1.1 are included in &amp;lt;code&amp;gt;tools\x86&amp;lt;/code&amp;gt;). The installation files are included in &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
=== Running environment ===&lt;br /&gt;
&lt;br /&gt;
* Run command-prompt as administrator (can usually be done by typing &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; into start menu, or by right click &amp;lt;code&amp;gt;Command Prompt&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Run as administrator&amp;lt;/code&amp;gt;)&lt;br /&gt;
* In the command-prompt, change to the source folder: &amp;lt;code&amp;gt;cd /d D:\srvrtm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Now start razzle: &amp;lt;code&amp;gt;tools\razzle.cmd free offline&amp;lt;/code&amp;gt; for 32-bit clients, and &amp;lt;code&amp;gt;tools\razzle64.cmd free offline&amp;lt;/code&amp;gt; for 64-bits. This initiates retail build of x86. The first time you run razzle inside that copy of the source code it&#039;ll need to initialize a few things, give it a few minutes, after a while a Notepad window will appear - make sure to close this for the initialization to continue.&lt;br /&gt;
* &#039;&#039;&#039;Important for first time!&#039;&#039;&#039; Run the prebuild script, if you&#039;re initiating source code for first time: &amp;lt;code&amp;gt;tools\prebuild&amp;lt;/code&amp;gt;. This scripts sets all read-only attributes for necessary stuff and makes 16-bit stuff workable for x64 environments.&lt;br /&gt;
If you want to have official builds, append &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument. This argument is modified and removed &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; argument, which previously checked build machine for eligibility of building official builds. &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument sets necessary values for official build independently of your machine eligibility, because of it&#039;s moot behavior and requirement to be connected into legacy build servers.&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
Start to build via &amp;lt;code&amp;gt;build /cZP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (which is alias to first, so doesn&#039;t matter). &#039;&#039;&#039;Important:&#039;&#039;&#039; Build.exe doesn&#039;t seem to play well when building with many (up to 8) threads. If your build machine has more than that it&#039;s recommended to cap it to 8 threads maximum via the &amp;lt;code&amp;gt;-M 8&amp;lt;/code&amp;gt; switch, added to the build command (eg. &amp;lt;code&amp;gt;build /cZP -M 8&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;bcz -M 8&amp;lt;/code&amp;gt;). Use 8 threads if your host/virtual machine CPU have allocated 8 cores (or less). More than 8 threads build may lead to unforeseen behavior, such as inconsistent linkage and invalid generation of pieces of code, since some build programs were written back at time when CPUs should be limited in order to preserve proper frequency.&lt;br /&gt;
&lt;br /&gt;
As an alternative, you can use &amp;lt;code&amp;gt;tools\buildx.cmd&amp;lt;/code&amp;gt; script, which allows to build not only retail (fre) and debug (checked, or chk) builds, but also profile and meter builds, additionally by disabling compiler optimizations and specifically building for AMD64/IA64 architectures. The purpose of profile and meter builds is in investigations, as of time of guide enhancement.&lt;br /&gt;
&lt;br /&gt;
=== Post-build ===&lt;br /&gt;
&lt;br /&gt;
* Download the Missing Binaries pack from OpenXP Download Center, which contains missing binaries both for AMD64 and x86 builds.&lt;br /&gt;
* Extract the contents of the binaries folder for the build type you&#039;re building into your build trees binaries folder (e.g. &amp;lt;code&amp;gt;D:\binaries.x86fre&amp;lt;/code&amp;gt;, should have been created during the build), the 7z should contain files for all SKUs (uses &amp;lt;code&amp;gt;pidgen.dll&amp;lt;/code&amp;gt; from Win2003 Enterprise, so your builds should accept Enterprise product keys), &#039;&#039;&#039;When asked during extraction to overwrite folders select &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;, but when asked to overwrite files, make sure to select &amp;lt;code&amp;gt;No&amp;lt;/code&amp;gt;!&#039;&#039;&#039;&lt;br /&gt;
* Inside the razzle window run &amp;lt;code&amp;gt;tools\postbuild&amp;lt;/code&amp;gt;. You can use &amp;lt;code&amp;gt;-sku:{sku}&amp;lt;/code&amp;gt; if you want to process only specific one (no brackets!), expect &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors, if you haven&#039;t extracted missing binaries from &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt;. If you have a wish to do a full post-build, append &amp;lt;code&amp;gt;-full&amp;lt;/code&amp;gt; argument&lt;br /&gt;
&lt;br /&gt;
==== Issues ====&lt;br /&gt;
&lt;br /&gt;
* Once post-build has finished, assuming you used the &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; file above and followed the guide properly, it should have hopefully succeeded without errors, and there shouldn&#039;t be any &amp;lt;code&amp;gt;binaries.x86fre\build_logs\postbuild.err&amp;lt;/code&amp;gt; file!&lt;br /&gt;
* Otherwise take a look inside the &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; - most messages in here are negligible, but if you see &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors associated with the edition you want to use, you may need to re-run &amp;lt;code&amp;gt;tools\missing.cmd&amp;lt;/code&amp;gt;, or extract &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; again.&lt;br /&gt;
* If &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; contains messages like &amp;lt;code&amp;gt;(crypto.cmd) ERROR&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;(ntsign.cmd) ERROR&amp;lt;/code&amp;gt; try re-importing the &amp;lt;code&amp;gt;tools\driver.pfx&amp;lt;/code&amp;gt; key-file (double-click it, press Next through the prompts, password is empty), and make sure your system date is set to the current date.&lt;br /&gt;
* If postbuild.err has filechk errors about missing &amp;lt;code&amp;gt;hwcomp.dat&amp;lt;/code&amp;gt; files, try copying the following into a batch script and run it in a razzle prompt (after using postbuild once already)&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\pro\i386 -o:%_NTPOSTBLD%\.\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\per\i386 -o:%_NTPOSTBLD%\perinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\bla\i386 -o:%_NTPOSTBLD%\blainf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\sbs\i386 -o:%_NTPOSTBLD%\sbsinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\srv\i386 -o:%_NTPOSTBLD%\srvinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\ads\i386 -o:%_NTPOSTBLD%\entinf\hwcomp.dat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating ISO files ===&lt;br /&gt;
Execute &amp;lt;code&amp;gt;tools\oscdimg {sku} [destination-file (optional)]&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;{sku}&amp;lt;/code&amp;gt; is one of:&lt;br /&gt;
* &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; - Windows Server 2003 Standard Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs&amp;lt;/code&amp;gt; - Windows Server 2003 Small Business Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;ads&amp;lt;/code&amp;gt; - Windows Server 2003 Enterprise Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;dtc&amp;lt;/code&amp;gt; - Windows Server 2003 Datacenter Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;bla&amp;lt;/code&amp;gt; - Windows Server 2003 Web Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;per&amp;lt;/code&amp;gt; - Windows XP Home Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; - Windows XP Professional&lt;br /&gt;
* &amp;lt;code&amp;gt;winpe&amp;lt;/code&amp;gt; - Windows Preinstallation Environment&lt;br /&gt;
ISO will be saved to &amp;lt;code&amp;gt;{build-drive}\{build-tag}_{sku}.iso&amp;lt;/code&amp;gt;, unless &amp;lt;code&amp;gt;[destination-file]&amp;lt;/code&amp;gt; is provided as a parameter.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get any problems during the build hopefully your problem might be answered in our Discord server, by lurking &lt;br /&gt;
&lt;br /&gt;
====== Certificate Import Wizard: An internal error occurred... ======&lt;br /&gt;
It&#039;s likely your PFX certificate isn&#039;t generated properly and you need to regenerate them. For that you should follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Check out the &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; and install from there &amp;lt;code&amp;gt;MSYS 1.0.11.exe&amp;lt;/code&amp;gt;, then hop up into your architecture folder (x32 or x64) and install &amp;lt;code&amp;gt;VC_redist&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;OpenSSL&amp;lt;/code&amp;gt;. Make sure OpenSSL is in your path (cause installer doesn&#039;t set it by default).&lt;br /&gt;
* Download the zip or do a &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; of CertUtil repository, or regenerate them using the original guide.&lt;br /&gt;
* Open MSYS and switch to directory where you extracted/cloned the repo.&lt;br /&gt;
* Attach all attributes via &amp;lt;code&amp;gt;chmod -r 0777 *&amp;lt;/code&amp;gt; and convert .sh to UNIX format with &amp;lt;code&amp;gt;dos2unix *.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;./generate.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the files from &amp;lt;code&amp;gt;srv03rtm.certs&amp;lt;/code&amp;gt; into source code tree (&amp;lt;code&amp;gt;D:\srv03rtm&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== After running razzle it shows a bunch of errors, &amp;quot;tfindcer not recognized&amp;quot; etc ======&lt;br /&gt;
You&#039;re likely on a 64-bit system but running &amp;lt;code&amp;gt;razzle.cmd&amp;lt;/code&amp;gt; directly, you should use &amp;lt;code&amp;gt;razzle64.cmd&amp;lt;/code&amp;gt; instead, this&#039;ll set things up so that razzle will use the correct tools for you. Hopefully with that the &amp;lt;code&amp;gt;tfindcer not recognized&amp;lt;/code&amp;gt; &amp;amp; other errors should go away.&lt;br /&gt;
&lt;br /&gt;
====== After a full build I get 1000+ errors, build.err has &amp;lt;code&amp;gt;has bad storage class&amp;lt;/code&amp;gt; errors inside ======&lt;br /&gt;
Seems to be caused by your locale, this is reported to happen with Simplified Chinese language, but can probably happen with other languages too.&lt;br /&gt;
&lt;br /&gt;
Besides changing your locale/language settings, you could also try editing the source files to remove the characters that cause problems, an anon posted a list of the files that need changes here&lt;br /&gt;
&lt;br /&gt;
====== I get a &amp;lt;code&amp;gt;TAPI.RES&amp;lt;/code&amp;gt; error during the build. ======&lt;br /&gt;
Try moving your source code folder closer to the root of the drive, ideally it should only be one folder up from the drive root (eg. &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== On Windows 7 and later I get NTVDM crashes while building ======&lt;br /&gt;
All NTVDM errors should have hopefully been solved in the v8 release of this guide/ZIP, but if you still run into any NTVDM error a copy of your build.log file would help a lot to figure out what caused it, if you ZIP that up and post in the thread hopefully we can figure something out. We consider to build code on Windows 10 build 1809 or newer, or use operating systems up to Windows Vista.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Kernel debugging can be enabled by editing the &amp;lt;code&amp;gt;C:\boot.ini&amp;lt;/code&amp;gt; file in your installed build, and adding &amp;lt;code&amp;gt;/debug /debugport=COM1 /baudrate=115200&amp;lt;/code&amp;gt; to the end of a config line.&lt;br /&gt;
&lt;br /&gt;
For example here&#039;s a &amp;lt;code&amp;gt;boot.ini&amp;lt;/code&amp;gt; with two choices, one with debugging &amp;amp; one without, with this NTLDR will show an OS boot choice menu at startup:&amp;lt;blockquote&amp;gt;[boot loader]&lt;br /&gt;
&lt;br /&gt;
timeout=30&lt;br /&gt;
&lt;br /&gt;
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;
&lt;br /&gt;
[operating systems]&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect /debug /debugport=COM1 /baudrate=115200&amp;lt;/blockquote&amp;gt;(even though they&#039;re named the same &amp;lt;code&amp;gt;Windows Server 2003, Enterprise&amp;lt;/code&amp;gt;, NTLDR will add a &amp;lt;code&amp;gt;[debugger enabled]&amp;lt;/code&amp;gt; tag to it on the OS selection menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chk (checked)&amp;lt;/code&amp;gt; builds are preferred for debugging as they enable asserts &amp;amp; debug messages, though &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt; will run a lot slower than &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds. &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds can also be debugged fine, but usually with a lot less debug output.&lt;br /&gt;
&lt;br /&gt;
Ideally you should also configure WinDbg to use the &amp;lt;code&amp;gt;binaries.{buildtype}\symbols.pri\retail&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;binaries.{buildtype}\symbols\retail&amp;lt;/code&amp;gt; symbols folders too, if WinDbg is running on the same machine that compiled the build it should then also be able to do source-level debugging against the actual source files.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using a VM to host your build on you&#039;ll have to pass-through the emulated COM port over to a pipe somehow, for WinDbg/KD/IDA/etc to make use of.&lt;br /&gt;
&lt;br /&gt;
There is apparently a way to get KDNET working on 2003 too (see &amp;lt;nowiki&amp;gt;https://github.com/MovAX0xDEAD/KDNET&amp;lt;/nowiki&amp;gt;), but this is as-of-yet untested with our builds, seems like it should have support for VMware&#039;s emulated network hardware at least.&lt;br /&gt;
&lt;br /&gt;
(TODO: add more VM guides here... if anyone wants to post one in the thread I&#039;m happy to add it here)&lt;br /&gt;
&lt;br /&gt;
=== VMware setup ===&lt;br /&gt;
&lt;br /&gt;
* For a VMware VM, just open the VM hardware options, &#039;&#039;&#039;remove the printer hardware&#039;&#039;&#039;, then click &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; and choose &amp;lt;code&amp;gt;Serial Port&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In the serial-port config panel, set it to &amp;lt;code&amp;gt;Use named pipe&amp;lt;/code&amp;gt;, and enter a pipe name into the textbox, eg. &amp;lt;code&amp;gt;\\.\pipe\vm&amp;lt;/code&amp;gt;. The pipe should be setup as &amp;lt;code&amp;gt;This end is the server&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;The other end is a virtual machine&amp;lt;/code&amp;gt;.&lt;br /&gt;
* It&#039;s apparently recommended to use the &amp;lt;code&amp;gt;Yield CPU on poll&amp;lt;/code&amp;gt; option, but I&#039;ve had success without it, it&#039;s up to you.&lt;br /&gt;
* With that setup now just open WinDbg, choose &amp;lt;code&amp;gt;Attach to kernel&amp;lt;/code&amp;gt;, open the &amp;lt;code&amp;gt;COM&amp;lt;/code&amp;gt; tab and enter the baud-rate and pipe name you selected for your VM, then hit OK.&lt;br /&gt;
* Now WinDbg should start with &amp;lt;code&amp;gt;Waiting for reconnect&amp;lt;/code&amp;gt; text showing, and hopefully when you next boot up your VM it&#039;ll connect up to WinDbg by itself.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Setup/Installation ===&lt;br /&gt;
A debugger can be attached to setup by pressing F8 at the right time - for text-mode setup the right time is when asked &amp;lt;code&amp;gt;Press F6 if you need to install a third party SCSI or RAID driver&amp;lt;/code&amp;gt;, spamming it while that message is showing should make it connect to COM1 with 19200 baud-rate (debug options can be changed inside &amp;lt;code&amp;gt;txtsetup.sif&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;SetupDebugOptions&amp;lt;/code&amp;gt; line specifies options to apply when F8 is pressed). After debug connection is made it might take a couple extra minutes for it to pass the &amp;lt;code&amp;gt;Setup is starting Windows&amp;lt;/code&amp;gt; stage.&lt;br /&gt;
&lt;br /&gt;
Similarly, GUI setup can be debugged by pressing F8 before the Windows bootloader starts (progress bar etc), this should bring up a menu with options for &amp;lt;code&amp;gt;Safe Mode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt;, etc. Choosing &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; will make it attach to COM1 before starting setup, again at 19200 baudrate.&lt;br /&gt;
&lt;br /&gt;
=== Changing default baudrate ===&lt;br /&gt;
The default 19200 baudrate can be changed by editing the &amp;lt;code&amp;gt;base\boot\kdcom\xxkdsup.c&amp;lt;/code&amp;gt; file, search for &amp;lt;code&amp;gt;BD_19200&amp;lt;/code&amp;gt; inside there and change it to e.g. &amp;lt;code&amp;gt;BD_115200&amp;lt;/code&amp;gt;, now it should use that by default without needing any &amp;lt;code&amp;gt;/baudrate&amp;lt;/code&amp;gt; parameter, or eg. when using &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; from the boot options menu.&lt;br /&gt;
&lt;br /&gt;
=== Un-filtering kernel messages ===&lt;br /&gt;
Even with a chk build you may notice that the kernel doesn&#039;t seem to output much over KD, this seems to be because most of the kernel components use &amp;lt;code&amp;gt;KdPrintEx&amp;lt;/code&amp;gt;, which allows filtering KD messages to certain components (although MS&#039;s docs seem to suggest KdPrintEx filtering was only used in Vista, it does seem that 2003 makes use of it too)&lt;br /&gt;
&lt;br /&gt;
To enable components you&#039;ll need to open the registry of your installed build to the following key (or create it if it doesn&#039;t exist)&amp;lt;blockquote&amp;gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter&amp;lt;/blockquote&amp;gt;Then create a DWORD value named the component you want to enable (eg. &amp;lt;code&amp;gt;LDR&amp;lt;/code&amp;gt;), and set the value to hexadecimal &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A list of the component registry names can be found inside &amp;lt;code&amp;gt;base\published\obj\i386\dpfiltercm.c&amp;lt;/code&amp;gt; after a build. This also contains the symbol names for the component (eg. &amp;lt;code&amp;gt;Kd_LDR_Mask&amp;lt;/code&amp;gt;), which can be set directly through WinDbg/KD via the symbol name. (eg. &amp;lt;code&amp;gt;ed nt!Kd_LDR_Mask 0xFFFFFFFF&amp;lt;/code&amp;gt;, with symbols loaded this should set the LDR components filter value in real-time)&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; components value (default &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) is added to every components value, essentially making &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; the default value for all components - so setting this to &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt; should make every component print to KD. You&#039;ll get a ton more debug output from this, but all the KD prints will likely slow down the system a lot (unfortunately it doesn&#039;t seem possible to disable a component when using WIN2000 to enable them all)&lt;br /&gt;
&lt;br /&gt;
If you need to enable components before your build is installed (eg. kernel is having problems before setup is completed), you&#039;ll need to edit the &amp;lt;code&amp;gt;mergedcomponents\setupinfs\hivesys.inx&amp;lt;/code&amp;gt; file, anon made a post about that here, though it hasn&#039;t been tried yet afaik.&lt;br /&gt;
&lt;br /&gt;
=== x64 build OS support ===&lt;br /&gt;
prepatched.zip v9 adds support for using x64 build OS&#039;s such as Win10 x64, this is done by wrapping certain 16-bit tools using &amp;lt;code&amp;gt;MS-DOS Player&amp;lt;/code&amp;gt;, using .bat files to redirect calls to use the player, changing some makefiles to use 32-bit equivalents, etc.&lt;br /&gt;
&lt;br /&gt;
Unfortunately some of the wrapped 16-bit tools can still randomly error without rhyme or reason for it, as a workaround the .bat files of the worst offenders will give it 5 attempts before failing, hopefully this should be enough to allow builds to complete fine, but there&#039;s still a chance one of the other 16-bit tools could error too... maybe in future I&#039;ll apply this 5-attempts bandaid over all the 16-bit tools.&lt;br /&gt;
&lt;br /&gt;
Huge thanks to the anon who initially worked on fixing the 16-bit tools over at &amp;lt;nowiki&amp;gt;https://rentry.co/16bit-msbuild&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
=== amd64 build support ===&lt;br /&gt;
As of update v10 an amd64 build can be created by initialising razzle with the &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; options, the build should mostly complete without errors, but note that postbuild+ hasn&#039;t been updated at all to work properly with amd64 yet.&lt;br /&gt;
&lt;br /&gt;
Unfortunately as the leak didn&#039;t come with exinit.obj/systime.obj for amd64 these need to be built from anon&#039;s decompilations instead. v10a adds newer exinit.c/systime.c decompilations that are apparently an exact match to the x86 .obj files included in the leak, hopefully these should work well with other architectures too.&lt;br /&gt;
&lt;br /&gt;
Some anons have been slowly working on amd64, being able to get past text-mode setup and start booting GUI-mode setup, though sadly as of this release nobody has been able to actually get GUI mode to fully start up.&lt;br /&gt;
&lt;br /&gt;
Note that this source code is from around ~2 years before amd64 was officially released by MS as Server2003 SP1, so there&#039;s likely a lot missing. (WRK may have some newer kernel-mode parts, being both based on SP1 and including support for amd64, though note that WRK also has many things removed too...)&lt;br /&gt;
&lt;br /&gt;
However there&#039;s also many indications in the leak that MS did have amd64 running at this point, so it should eventually be possible for us to get it working too.&lt;br /&gt;
&lt;br /&gt;
=== Timebomb ===&lt;br /&gt;
&lt;br /&gt;
* Time can be adjusted by editing &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; variable inside &amp;lt;code&amp;gt;\tools\postbuildscripts\timebomb.cmd&amp;lt;/code&amp;gt; (line 44)&lt;br /&gt;
* Setting &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will disable the timebomb.&lt;br /&gt;
* Only certain &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; parameters are valid (0, 5, 15, 30, 60, 90, 120, 150, 180, 240, 360, 444)&lt;br /&gt;
&lt;br /&gt;
=== Different build options ===&lt;br /&gt;
You can modify your razzle shortcut (or execute it manually inside your source folder) to include (or remove) additional argument(s):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; - build &#039;free&#039; bits (production, omitting it will generated checked bits)&lt;br /&gt;
* &amp;lt;code&amp;gt;chkkernel&amp;lt;/code&amp;gt; - build &#039;checked&#039; (testing) kernel/hal/ntdll when building &#039;free&#039; bits&lt;br /&gt;
* &amp;lt;code&amp;gt;no_opts&amp;lt;/code&amp;gt; - disable binary optimization (useful for debugging, but will most likely fail a full build, some code can&#039;t be built without optimization)&lt;br /&gt;
* &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt; - enable verbose output of the build process&lt;br /&gt;
* &amp;lt;code&amp;gt;binaries_dir &amp;lt;basepath&amp;gt;&amp;lt;/code&amp;gt; - specifies custom output directory (default is &amp;lt;code&amp;gt;binaries&amp;lt;/code&amp;gt;, the suffix added after &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; is non-customizable)&lt;br /&gt;
* &amp;lt;code&amp;gt;officialbuild&amp;lt;/code&amp;gt; - sets razzle to build this as an &amp;quot;official&amp;quot; build, requires updating BuildMachines.txt, see the section below&lt;br /&gt;
* &amp;lt;code&amp;gt;win64&amp;lt;/code&amp;gt; - builds for Intel Itanium-64 machines&lt;br /&gt;
* &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; - builds for amd64 instead of x86, see &amp;lt;code&amp;gt;amd64 build support&amp;lt;/code&amp;gt; section above&lt;br /&gt;
* &amp;lt;code&amp;gt;pocketpc&amp;lt;/code&amp;gt; - builds for ARMv4 targets. Currently there are no any supportive headers and libraries for AMD clients, and work is undergoing.&lt;br /&gt;
&lt;br /&gt;
Other options are not described here, see &amp;lt;code&amp;gt;razzle.cmd /?&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
=== Private builds ===&lt;br /&gt;
To compile your very own private build along with a branch, open git administrator and &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; to your source tree. There execute: &amp;lt;code&amp;gt;git init&amp;lt;/code&amp;gt;, which initializes an empty &amp;lt;code&amp;gt;.git&amp;lt;/code&amp;gt; folder. Without this it won&#039;t compile the built branch. Then execute: &amp;lt;code&amp;gt;git checkout -b {name_of_your_branch}&amp;lt;/code&amp;gt;, don&#039;t forget to remove the brackets!. Download this modified [https://drive.google.com/file/d/12UAYflPRiMpuZO1IafaEbcMDHRiEnNsO/view?usp=sharing razzle script] which has been edited to allow the detection of a created branch.&lt;br /&gt;
=== Official builds ===&lt;br /&gt;
The &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; parameter sets global definitions for official builds, which will make it match up closer to the retail builds, should be useful if you need to compare against retail for any reason. In difference of &amp;lt;code&amp;gt;offline&amp;lt;/code&amp;gt; and similar flags, all binaries in this mode are built in retail mode and won&#039;t contain any private information, as well as postbuild logging will be enabled.&lt;br /&gt;
&lt;br /&gt;
In latest patch kit from OpenXP, the useless checks of build machines in &amp;lt;code&amp;gt;&#039;&#039;BuildMachines.txt&#039;&#039;&amp;lt;/code&amp;gt; have been &#039;&#039;&#039;removed completely&#039;&#039;&#039;, and instead, any machine which is considered as &amp;quot;verified&amp;quot; is able to construct official builds. Also, the &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; parameter have been shortened to simply &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt;, in order to make things more consistent.&lt;br /&gt;
&lt;br /&gt;
=== Building specific components ===&lt;br /&gt;
Most components can be built seperately. For example, if you wish to rebuild &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; component, perform these steps:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cd base\ntos&amp;lt;/code&amp;gt; (you can also use &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; alias that razzle has set up for you)&lt;br /&gt;
* &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (alias for &amp;lt;code&amp;gt;build /cPZ&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Generally &amp;lt;code&amp;gt;postbuild.cmd&amp;lt;/code&amp;gt; is clever enough to include your changes properly without needing fresh build as it uses &amp;lt;code&amp;gt;bindiff&amp;lt;/code&amp;gt; to find differences.&lt;br /&gt;
&lt;br /&gt;
=== Generating new build number/name ===&lt;br /&gt;
Version information is stored in &amp;lt;code&amp;gt;\public\sdk\inc\ntverp.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;m0 set_builddate set_buildnum set_buildname&amp;lt;/code&amp;gt; to generate new build name quickly.&lt;br /&gt;
&lt;br /&gt;
=== Original CD filenames ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-standard_retail_en-us-NRMSFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: A600409482A5678EF6AF2B26D3576D6D9894178D)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-datacenter_retail_en-us-NRMDOEM_EN.iso&amp;lt;/code&amp;gt; (SHA1: E2B47A7CE45C6C6305594CEE4C1B64894805AAF4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-enterpriseserver_retail_en-us-NRMEFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 0309FFB4181BA5122C692A6E1079E9FC1D53FCE4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-webserver_retail_en-us-NRMWFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 46C1CCB2CFC96803E304A35BEF50CD71B2C1DE38)&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs.iso&amp;lt;/code&amp;gt; (converted from mdf; SHA1: CDB30C80FDE314C16CA11F5CD31650ECBEC7A214)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86chk_server-enterpriseserver_retail_en-us-NRMECHK_EN.iso&amp;lt;/code&amp;gt; (SHA1: EEF5F921CC8FC20FB29A862E1E132359E0D151BB)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64fre_server-enterprise_retail_en-us-ARMEXFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 076EDCF017EDE0B2D0D8067FA52CF3D44EEEF79A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64chk_server-enterprise_retail_en-us-AX2EXCFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 8916DFBB1D93A9CECB1FE8600BE2E2C752E85E7F)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-home_retail_en-us-WXHFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: B273C8D41E3844E3E46722F52F5A4CF9F206C8D0)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 1400DED4402D50F3864ED3D8DCF5CC52BA79A04A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86chk_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 017F10E4555D1A9280874B9B0243442F045F1B2D)&lt;br /&gt;
&lt;br /&gt;
=== Product keys ===&lt;br /&gt;
&lt;br /&gt;
* Evaluation (for all editions, if you set a timebomb. Default it set to 360 days):&lt;br /&gt;
** &amp;lt;code&amp;gt;99999-99999-99999-99999-99999&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DDDDD-DDDDD-DDDDD-DDDDD-DDDDD&amp;lt;/code&amp;gt;&lt;br /&gt;
* Standard Edition: &amp;lt;code&amp;gt;M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition: &amp;lt;code&amp;gt;QW32K-48T2T-3D2PJ-DXBWY-C6WRJ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition (x64): &amp;lt;code&amp;gt;KK2WD-BFYJ6-77X87-8TRBF-9B343&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Changelog&amp;diff=84</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Changelog&amp;diff=84"/>
		<updated>2026-02-12T06:45:00Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page indicates changelog of OpenXP Wiki, among with all improvements presented here.&lt;br /&gt;
&lt;br /&gt;
== 2026 ==&lt;br /&gt;
&lt;br /&gt;
=== February ===&lt;br /&gt;
&lt;br /&gt;
* MediaWiki have been upgraded from 1.43.1 to &#039;&#039;&#039;1.45.1&#039;&#039;&#039;. This is the first time upgrading wiki since it&#039;s foundation.&lt;br /&gt;
* Added Redis (Valkey) caching facility in order to make wiki run faster.&lt;br /&gt;
&lt;br /&gt;
[[Category:OpenXP Wiki]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Category:OpenXP_Wiki&amp;diff=83</id>
		<title>Category:OpenXP Wiki</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Category:OpenXP_Wiki&amp;diff=83"/>
		<updated>2026-02-11T18:33:31Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;These pages are closely related to OpenXP Wiki-specific facilities&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These pages are closely related to OpenXP Wiki-specific facilities&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Changelog&amp;diff=82</id>
		<title>Changelog</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Changelog&amp;diff=82"/>
		<updated>2026-02-11T18:33:10Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;This page indicates changelog of OpenXP Wiki, among with all improvements presented here.  == 2026 ==  === February === Added Redis (Valkey) caching facility in order to make wiki run faster. Category:OpenXP Wiki&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page indicates changelog of OpenXP Wiki, among with all improvements presented here.&lt;br /&gt;
&lt;br /&gt;
== 2026 ==&lt;br /&gt;
&lt;br /&gt;
=== February ===&lt;br /&gt;
Added Redis (Valkey) caching facility in order to make wiki run faster.&lt;br /&gt;
[[Category:OpenXP Wiki]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=81</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=81"/>
		<updated>2026-02-11T07:15:19Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Welcome to The OpenXP Wiki!}}&lt;br /&gt;
Welcome to the [[OpenXP]] Project&#039;s official wiki! Here you can find useful guides to compile Windows XP/Server 2003 leaked source code, as well as to master in following stuff:&lt;br /&gt;
&lt;br /&gt;
* [[Getting Started|Getting started]] on configuring [[Razzle|environment]], [[Certificate Generation|generating certificates]] and performing successful build,&lt;br /&gt;
* Adjusting source code with custom patches, enhancements and tweaks,&lt;br /&gt;
* Knowing more about [[Windows Internals]] (in most real way), as well as to introducing more fundamentals,&lt;br /&gt;
* And waffles! 🧇&lt;br /&gt;
If you want to stay connected with OpenXP, you can join our official [https://discord.com/invite/vS4bNfsZgh Discord server], as well as to download source codes from our [[Download Center]] in safest way!&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=80</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=80"/>
		<updated>2025-12-28T15:55:29Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenWin&#039;&#039;&#039; (also: &#039;&#039;OW,&#039;&#039; &#039;&#039;OK&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
OpenWin also combines additional projects that will be developed in parallel, to enhance OpenWin with additional functionality, ultimately replacing Windows NT ones. These projects will use same development principles and will be tied with OpenWin as additional dependencies.&lt;br /&gt;
&lt;br /&gt;
== Principles of development ==&lt;br /&gt;
OpenWin development is laying on several principles, which are used in order to make further progress easier to approach and quickly add new features and capabilities into system:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Cross-platform compilers&#039;&#039;&#039;, which will be modified by time to be used on older versions of Windows NT operating system family, such as Windows XP, Windows Server 2003, Windows NT 4.0 and older,&lt;br /&gt;
* &#039;&#039;&#039;Memory-safe code&#039;&#039;&#039; with proper checks, which are possible on C/C++ programming languages and almost possible in 16-bit mode. Who said that only Rust can do that?&lt;br /&gt;
* &#039;&#039;&#039;Modularity and portability&#039;&#039;&#039;, to make OpenWin and it&#039;s relative projects possible to load on base of existing Windows NT operating systems and not only,&lt;br /&gt;
* &#039;&#039;&#039;Proper documenting and describing&#039;&#039;&#039;, with which any newcomer can easily orient what&#039;s going on on this project, it&#039;s structure and ability to improve and enhance existing functionality, as well as adding new one.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
=== OpenKernel ===&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;br /&gt;
&lt;br /&gt;
The pure basis of the OpenKernel will be the Server 2003 RTM + Windows Research Kernel. In contrary of original one, the IA-64 native support will be removed entirely, due to absence of this architecture and very rare opportunity of Intel Itanium machines. Also, the approach similar to Linux and MinWin is planned: kernel will turn more modular and expandable, among with dealing with culprits of undocumented routines and internally improving all sub-modules of kernel. The precise construction of kernel is following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;ntoskrnl.exe&#039;&#039;&#039;&amp;lt;/code&amp;gt; - unified kernel which combines all features of multi/uniprocessor machines. This will turn as ultimate replacement for &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; for multiprocessors too. The additional kernels will be added, but they will support relatively newer processor features,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelCore.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - a pure grounding for exportable functions of kernel. This serves as a in-place replacement of &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt; and combines all functions from &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; files. The latter two will be delivered as stubs, which will route the necessary functions into kernel core,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - schema orchestrating mechanism for adding additional APIs into system. This allows for third-party sides to create their custom Kernel Extension modules and therefore, use them when OpenKernel is loaded. Approach will allow to port newer Windows DLLs and functionality directly into OpenKernel without recompiling or rebuilding entire project,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;hal.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - enhanced and updated Hardware Abstraction Layer. Updated HAL will allow to run OpenKernel under ancient and modern hardware, by implementing custom HALs and adding new capabilities of ACPI, AHCI and many more components,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;halSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - same approach of orchestrating custom HALs and their management for &amp;lt;code&amp;gt;hal.dll&amp;lt;/code&amp;gt;, with practically same ability levels, only for Hardware Abstraction Layers,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;win32k.sys&#039;&#039;&#039;&amp;lt;/code&amp;gt; - optional kernel-mode driver for adding bare-bones graphical capabilities like VESA BIOS 3.0 support with it&#039;s predecessors, as well as refactored yet optimized graphical accelerations. &lt;br /&gt;
&lt;br /&gt;
==== Compilers ====&lt;br /&gt;
OpenKernel will be implemented by switching compilers stack: thus, the [https://nasm.us NASM] will turn the direct replacement for Microsoft&#039;s MASM, which is proprietary and have Microsoft-specific instructions set. Also, the compiler will be switched into Tiny CC (aka TCC), in order to be cross-platform compatible and allow more enhanced ports into foreign architectures, e.g. ARM and RISC-V.&lt;br /&gt;
&lt;br /&gt;
Also the ability to make ELF-compatible kernel is in plans too, for leveraging work in easier way and allowing better hot-patching mechanism for OpenKernel.&lt;br /&gt;
&lt;br /&gt;
=== OpenCRT ===&lt;br /&gt;
OpenWin C(++) Language Runtime is a one-in replacement for MSVC Runtime, with extra functionality such as support for newer C(++) standards and libraries, cross-platform source code and easy integration in other operating systems, such as Linux-based ones, macOS and more. As a compatibility layer, &amp;lt;code&amp;gt;msvcrt.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ucrtbase.dll&amp;lt;/code&amp;gt; will be provided as stubs linking to OpenCRT DLL files, additionally making runtime more reliable and faster.&lt;br /&gt;
&lt;br /&gt;
=== OpenLdr ===&lt;br /&gt;
A spin-off for modern Windows Boot Manager - Open Loader (or BootMan, in several occasions) is planned, in order to fully replace rusty and old-fashioned NTLDR. The problems with NTLDR are it&#039;s structural dispositions, which makes it unmaintainable in several cases, such as enhancements of porting boot loader into newer versions of (U)EFI and x64 systems.&lt;br /&gt;
&lt;br /&gt;
The boot loader will be implemented from scratch, by using NASM as a compiler for initializing it&#039;s boot sector, and the main boot loader which will pair C/C++ and handle kernel drivers and boot options, under separate boot options by using Windows registry.&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== Env ===&lt;br /&gt;
Env is a virtual environment which can initialize multiple virtual environments at once, work in completely separate environments in order to bypass system breaking capabilities. With enhancements of &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; type files, the Env project will provide extra syntax features, turning it into a make-like syntax tuned platform. Env will be capable to replace legacy Razzle environment shipped with earlier versions of Windows NT.&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Talk:Welcome&amp;diff=79</id>
		<title>Talk:Welcome</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Talk:Welcome&amp;diff=79"/>
		<updated>2025-11-18T14:46:09Z</updated>

		<summary type="html">&lt;p&gt;Ashific: /* Does OPENXP prioritize x64 or x86? (32-bit) */ Reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Does OPENXP prioritize x64 or x86? (32-bit) ==&lt;br /&gt;
&lt;br /&gt;
Question about codebase. [[User:UltimateQuack|UltimateQuack]] ([[User talk:UltimateQuack|talk]]) 23:26, 16 November 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:we prioritize both (and x64, and x86, and even ongoing ARM) [[User:Ashific|Ashific]] ([[User talk:Ashific|talk]]) 14:46, 18 November 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=MinWin&amp;diff=68</id>
		<title>MinWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=MinWin&amp;diff=68"/>
		<updated>2025-10-29T06:03:44Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;MinWin&#039;&#039;&#039;, or &#039;&#039;&#039;Minimal Windows&#039;&#039;&#039;, 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
Technically, MinWin doesn&#039;t differ much from it&#039;s predecessors (files stored in &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ds&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt; and so on) and simply contains refactored versions of them. In such manner, the NT kernel is stored in &amp;lt;code&amp;gt;minkernel\ntos&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;base\ntos&amp;lt;/code&amp;gt; prior from Windows 2000 to Vista. MinWin is structured in much like the &amp;lt;code&amp;gt;Base&amp;lt;/code&amp;gt; project of Windows Server 2003, by also containing internal headers in &amp;lt;code&amp;gt;public\internal&amp;lt;/code&amp;gt; folder and having specific libraries, without altering the main kernel project.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
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.&amp;lt;ref name=&amp;quot;thurrott_mw_rl&amp;quot;&amp;gt;Thurrott, Paul. [https://web.archive.org/web/20101212091313/http://www.winsupersite.com/article/showcase/the-road-to-windows-longhorn-2003.aspx The Road to Windows Longhorn 2003], &#039;&#039;Paul Thurrott&#039;s SuperSite for Windows&#039;&#039;. 9 May 2003. Retrieved 3 July 2025.&amp;lt;/ref&amp;gt; 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 &amp;quot;MinWin Test Platform&amp;quot;, itself a standalone Windows edition containing only the absolute core Windows components.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Windows 7 ===&lt;br /&gt;
The earliest available build to start implementing MinWin is Windows 7 build 6469&amp;lt;ref&amp;gt;https://betawiki.net/wiki/MinWin&amp;lt;/ref&amp;gt;, which adds &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt;, which fetches a lot of &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;apisetschema.dll&amp;lt;/code&amp;gt; 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 &amp;quot;API set schema&amp;quot; for each major product type like the Windows Phone 8 &amp;lt;code&amp;gt;MobileCore&amp;lt;/code&amp;gt; and Windows 10 &amp;lt;code&amp;gt;OneCoreUAP&amp;lt;/code&amp;gt; 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 (&amp;lt;code&amp;gt;conhost&amp;lt;/code&amp;gt;), nowadays a part of the open-source Windows Terminal console emulator.&amp;lt;ref&amp;gt;https://betawiki.net/wiki/Draft:MinWin&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9 days later after 6469 compilation, on October 13, 2007 at Microsoft&#039;s Channel9 network, a video of Eric Traut&#039;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.&amp;lt;ref&amp;gt;The presentation&#039;s video: https://web.archive.org/web/20071025182945/http://endeavour.acm.uiuc.edu/UIUC-ACM-RP07-Traut.wmv&amp;lt;/ref&amp;gt; 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&#039;s &amp;lt;code&amp;gt;bootvid.dll&amp;lt;/code&amp;gt;, referenced as &amp;lt;code&amp;gt;txtbootvid.dll&amp;lt;/code&amp;gt;, have been found on Microsoft Symbol Server and even showcased it&#039;s launch.&lt;br /&gt;
&lt;br /&gt;
=== Windows 8 ===&lt;br /&gt;
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&#039;s MinWin foundation.&lt;br /&gt;
&lt;br /&gt;
=== Windows 10 and later ===&lt;br /&gt;
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. [https://techcommunity.microsoft.com/blog/windowsosplatform/azure-host-os-%e2%80%93-cloud-host/3709528 Azure Host OS] is a lightweight operating system using MinWin as it&#039;s core, to engine Azure infrastructure servers. Also, Windows Core OS, among with it&#039;s derivatives, such as Windows 10X have been released but later abandoned due to unknown reasons.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Microsoft]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=User_talk:Burner&amp;diff=66</id>
		<title>User talk:Burner</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=User_talk:Burner&amp;diff=66"/>
		<updated>2025-10-18T10:02:51Z</updated>

		<summary type="html">&lt;p&gt;Ashific: /* Editing, but... */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Editing, but... ==&lt;br /&gt;
&lt;br /&gt;
Give normal descriptions to edits. [[User:Ashific|Ashific]] ([[User talk:Ashific|talk]]) 10:02, 18 October 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=64</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=64"/>
		<updated>2025-09-08T15:01:35Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Ashific moved page Draft:OpenWin to OpenWin without leaving a redirect: Not a draft anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenWin&#039;&#039;&#039; (also: &#039;&#039;OW,&#039;&#039; &#039;&#039;OK&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
OpenWin also combines additional projects that will be developed in parallel, to enhance OpenWin with additional functionality, ultimately replacing Windows NT ones. These projects will use same development principles and will be tied with OpenWin as additional dependencies.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
=== OpenKernel ===&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;br /&gt;
&lt;br /&gt;
The pure basis of the OpenKernel would be the Server 2003 RTM + Windows Research Kernel. In contrary of original one, the IA-64 native support will be removed entirely, due to absence of this architecture and very rare opportunity of Intel Itanium machines. Also, the MinWin-ish approach is planned: kernel will turn more modular and expandable, among with dealing with culprits of undocumented routines and internally improving all sub-modules of kernel. The precise construction of kernel is following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;ntoskrnl.exe&#039;&#039;&#039;&amp;lt;/code&amp;gt; - unified kernel which combines all features of multi/uniprocessor machines. This will turn as ultimate replacement for &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; for multiprocessors too. The additional kernels will be added, but they will support relatively newer processor features,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelCore.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - a pure grounding for exportable functions of kernel. This serves as a in-place replacement of &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt; and combines all functions from &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; files. The latter two will be delivered as stubs, which will route the necessary functions into kernel core,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - schema orchestrating mechanism for adding additional APIs into system. This allows for third-party sides to create their custom Kernel Extension modules and therefore, use them when OpenKernel is loaded. Approach will allow to port newer Windows DLLs and functionality directly into OpenKernel without recompiling or rebuilding entire project,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;hal.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - enhanced and updated Hardware Abstraction Layer. Updated HAL will allow to run OpenKernel under ancient and modern hardware, by implementing custom HALs and adding new capabilities of ACPI, AHCI and many more components,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;halSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - same approach of orchestrating custom HALs and their management for &amp;lt;code&amp;gt;hal.dll&amp;lt;/code&amp;gt;, with practically same ability levels, only for Hardware Abstraction Layers.&lt;br /&gt;
&lt;br /&gt;
==== Compilers ====&lt;br /&gt;
OpenKernel will be implemented by switching compilers stack: thus, the NASM will turn the direct replacement for Microsoft&#039;s MASM, which is proprietary and have Microsoft-specific instructions set. Also, the compiler will be switched into Tiny CC (aka TCC), in order to be cross-platform compatible and allow more enhanced ports into foreign architectures, e.g. ARM and RISC-V.&lt;br /&gt;
&lt;br /&gt;
Also the ability to make ELF-compatible kernel is in plans too, for leveraging work in easier way and allowing better hot-patching mechanism for OpenKernel.&lt;br /&gt;
&lt;br /&gt;
=== OpenCRT ===&lt;br /&gt;
OpenC(++) Language Runtime is a one-in replacement for MSVC Runtime, with extra functionality such as support for newer C(++) standards and libraries, cross-platform source code and easy integration in other operating systems, such as Linux-based ones, macOS and more. As a compatibility layer, &amp;lt;code&amp;gt;msvcrt.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ucrtbase.dll&amp;lt;/code&amp;gt; will be provided as stubs linking to OpenCRT DLL files, additionally making runtime more reliable and faster.&lt;br /&gt;
&lt;br /&gt;
=== BootMan ===&lt;br /&gt;
A spin-off for modern Windows Boot Manager - BootMan is planned, in order to fully replace rusty NTLDR. The problems with NTLDR is it&#039;s structural dispositions, which makes it unmaintainable in several cases, such as enhancements of porting boot loader into (U)EFI and x64 systems. As a base, in probable form, the boot loader of NT 3.5 will be taken, among with groundbreaking improvements and additional features, such as compatibility with GRUB, meaning ability to true dual boot with Linux and Unix-based systems.&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== Env ===&lt;br /&gt;
Env is a virtual environment which can initialize multiple virtual environments at once, work in completely separate environments in order to bypass system breaking capabilities. With enhancements of &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; type files, the Env project will provide extra syntax features, turning it into a make-like syntax tuned platform. Env will be capable to replace legacy Razzle environment shipped with earlier versions of Windows NT.&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=63</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=63"/>
		<updated>2025-09-08T15:01:18Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenWin&#039;&#039;&#039; (also: &#039;&#039;OW,&#039;&#039; &#039;&#039;OK&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
OpenWin also combines additional projects that will be developed in parallel, to enhance OpenWin with additional functionality, ultimately replacing Windows NT ones. These projects will use same development principles and will be tied with OpenWin as additional dependencies.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
=== OpenKernel ===&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;br /&gt;
&lt;br /&gt;
The pure basis of the OpenKernel would be the Server 2003 RTM + Windows Research Kernel. In contrary of original one, the IA-64 native support will be removed entirely, due to absence of this architecture and very rare opportunity of Intel Itanium machines. Also, the MinWin-ish approach is planned: kernel will turn more modular and expandable, among with dealing with culprits of undocumented routines and internally improving all sub-modules of kernel. The precise construction of kernel is following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;ntoskrnl.exe&#039;&#039;&#039;&amp;lt;/code&amp;gt; - unified kernel which combines all features of multi/uniprocessor machines. This will turn as ultimate replacement for &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; for multiprocessors too. The additional kernels will be added, but they will support relatively newer processor features,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelCore.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - a pure grounding for exportable functions of kernel. This serves as a in-place replacement of &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt; and combines all functions from &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; files. The latter two will be delivered as stubs, which will route the necessary functions into kernel core,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - schema orchestrating mechanism for adding additional APIs into system. This allows for third-party sides to create their custom Kernel Extension modules and therefore, use them when OpenKernel is loaded. Approach will allow to port newer Windows DLLs and functionality directly into OpenKernel without recompiling or rebuilding entire project,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;hal.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - enhanced and updated Hardware Abstraction Layer. Updated HAL will allow to run OpenKernel under ancient and modern hardware, by implementing custom HALs and adding new capabilities of ACPI, AHCI and many more components,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;halSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - same approach of orchestrating custom HALs and their management for &amp;lt;code&amp;gt;hal.dll&amp;lt;/code&amp;gt;, with practically same ability levels, only for Hardware Abstraction Layers.&lt;br /&gt;
&lt;br /&gt;
==== Compilers ====&lt;br /&gt;
OpenKernel will be implemented by switching compilers stack: thus, the NASM will turn the direct replacement for Microsoft&#039;s MASM, which is proprietary and have Microsoft-specific instructions set. Also, the compiler will be switched into Tiny CC (aka TCC), in order to be cross-platform compatible and allow more enhanced ports into foreign architectures, e.g. ARM and RISC-V.&lt;br /&gt;
&lt;br /&gt;
Also the ability to make ELF-compatible kernel is in plans too, for leveraging work in easier way and allowing better hot-patching mechanism for OpenKernel.&lt;br /&gt;
&lt;br /&gt;
=== OpenCRT ===&lt;br /&gt;
OpenC(++) Language Runtime is a one-in replacement for MSVC Runtime, with extra functionality such as support for newer C(++) standards and libraries, cross-platform source code and easy integration in other operating systems, such as Linux-based ones, macOS and more. As a compatibility layer, &amp;lt;code&amp;gt;msvcrt.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ucrtbase.dll&amp;lt;/code&amp;gt; will be provided as stubs linking to OpenCRT DLL files, additionally making runtime more reliable and faster.&lt;br /&gt;
&lt;br /&gt;
=== BootMan ===&lt;br /&gt;
A spin-off for modern Windows Boot Manager - BootMan is planned, in order to fully replace rusty NTLDR. The problems with NTLDR is it&#039;s structural dispositions, which makes it unmaintainable in several cases, such as enhancements of porting boot loader into (U)EFI and x64 systems. As a base, in probable form, the boot loader of NT 3.5 will be taken, among with groundbreaking improvements and additional features, such as compatibility with GRUB, meaning ability to true dual boot with Linux and Unix-based systems.&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== Env ===&lt;br /&gt;
Env is a virtual environment which can initialize multiple virtual environments at once, work in completely separate environments in order to bypass system breaking capabilities. With enhancements of &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; type files, the Env project will provide extra syntax features, turning it into a make-like syntax tuned platform. Env will be capable to replace legacy Razzle environment shipped with earlier versions of Windows NT.&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=62</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=62"/>
		<updated>2025-09-08T06:22:37Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenWin&#039;&#039;&#039; (also: &#039;&#039;OW,&#039;&#039; &#039;&#039;OK&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
OpenWin also combines additional projects that will be developed in parallel, to enhance OpenWin with additional functionality, ultimately replacing Windows NT ones. These projects will use same development principles and will be tied with OpenWin as additional dependencies.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
=== OpenKernel ===&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;br /&gt;
&lt;br /&gt;
The pure basis of the OpenKernel would be the Server 2003 RTM + Windows Research Kernel. In contrary of original one, the IA-64 native support will be removed entirely, due to absence of this architecture and very rare opportunity of Intel Itanium machines. Also, the MinWin-ish approach is planned: kernel will turn more modular and expandable, among with dealing with culprits of undocumented routines and internally improving all sub-modules of kernel. The precise construction of kernel is following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;ntoskrnl.exe&#039;&#039;&#039;&amp;lt;/code&amp;gt; - unified kernel which combines all features of multi/uniprocessor machines. This will turn as ultimate replacement for &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; for multiprocessors too. The additional kernels will be added, but they will support relatively newer processor features,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelCore.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - a pure grounding for exportable functions of kernel. This serves as a in-place replacement of &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt; and combines all functions from &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; files. The latter two will be delivered as stubs, which will route the necessary functions into kernel core,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - schema orchestrating mechanism for adding additional APIs into system. This allows for third-party sides to create their custom Kernel Extension modules and therefore, use them when OpenKernel is loaded. Approach will allow to port newer Windows DLLs and functionality directly into OpenKernel without recompiling or rebuilding entire project,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;hal.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - enhanced and updated Hardware Abstraction Layer. Updated HAL will allow to run OpenKernel under ancient and modern hardware, by implementing custom HALs and adding new capabilities of ACPI, AHCI and many more components,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;halSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - same approach of orchestrating custom HALs and their management for &amp;lt;code&amp;gt;hal.dll&amp;lt;/code&amp;gt;, with practically same ability levels, only for Hardware Abstraction Layers.&lt;br /&gt;
&lt;br /&gt;
==== Compilers ====&lt;br /&gt;
OpenKernel will be implemented by switching compilers stack: thus, the NASM will turn the direct replacement for Microsoft&#039;s MASM, which is proprietary and have Microsoft-specific instructions set. Also, the compiler will be switched into Tiny CC (aka TCC), in order to be cross-platform compatible and allow more enhanced ports into foreign architectures, e.g. ARM and RISC-V.&lt;br /&gt;
&lt;br /&gt;
Also the ability to make ELF-compatible kernel is in plans too, for leveraging work in easier way and allowing better hot-patching mechanism for OpenKernel.&lt;br /&gt;
&lt;br /&gt;
=== OpenCRT ===&lt;br /&gt;
OpenC(++) Language Runtime is a one-in replacement for MSVC Runtime, with extra functionality such as support for newer C(++) standards and libraries, cross-platform source code and easy integration in other operating systems, such as Linux-based ones, macOS and more. As a compatibility layer, &amp;lt;code&amp;gt;msvcrt.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ucrtbase.dll&amp;lt;/code&amp;gt; will be provided as stubs linking to OpenCRT DLL files, additionally making runtime more reliable and faster.&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== Env ===&lt;br /&gt;
Env is a virtual environment which can initialize multiple virtual environments at once, work in completely separate environments in order to bypass system breaking capabilities. With enhancements of &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; type files, the Env project will provide extra syntax features, turning it into a make-like syntax tuned platform. Env will be capable to replace legacy Razzle environment shipped with earlier versions of Windows NT.&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=61</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=61"/>
		<updated>2025-09-08T06:22:16Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenWin&#039;&#039;&#039; (also: &#039;&#039;OK&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
OpenWin also combines additional projects that will be developed in parallel, to enhance OpenWin with additional functionality, ultimately replacing Windows NT ones. These projects will use same development principles and will be tied with OpenWin as additional dependencies.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
=== OpenKernel ===&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;br /&gt;
&lt;br /&gt;
The pure basis of the OpenKernel would be the Server 2003 RTM + Windows Research Kernel. In contrary of original one, the IA-64 native support will be removed entirely, due to absence of this architecture and very rare opportunity of Intel Itanium machines. Also, the MinWin-ish approach is planned: kernel will turn more modular and expandable, among with dealing with culprits of undocumented routines and internally improving all sub-modules of kernel. The precise construction of kernel is following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;ntoskrnl.exe&#039;&#039;&#039;&amp;lt;/code&amp;gt; - unified kernel which combines all features of multi/uniprocessor machines. This will turn as ultimate replacement for &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; for multiprocessors too. The additional kernels will be added, but they will support relatively newer processor features,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelCore.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - a pure grounding for exportable functions of kernel. This serves as a in-place replacement of &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt; and combines all functions from &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; files. The latter two will be delivered as stubs, which will route the necessary functions into kernel core,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - schema orchestrating mechanism for adding additional APIs into system. This allows for third-party sides to create their custom Kernel Extension modules and therefore, use them when OpenKernel is loaded. Approach will allow to port newer Windows DLLs and functionality directly into OpenKernel without recompiling or rebuilding entire project,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;hal.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - enhanced and updated Hardware Abstraction Layer. Updated HAL will allow to run OpenKernel under ancient and modern hardware, by implementing custom HALs and adding new capabilities of ACPI, AHCI and many more components,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;halSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - same approach of orchestrating custom HALs and their management for &amp;lt;code&amp;gt;hal.dll&amp;lt;/code&amp;gt;, with practically same ability levels, only for Hardware Abstraction Layers.&lt;br /&gt;
&lt;br /&gt;
==== Compilers ====&lt;br /&gt;
OpenKernel will be implemented by switching compilers stack: thus, the NASM will turn the direct replacement for Microsoft&#039;s MASM, which is proprietary and have Microsoft-specific instructions set. Also, the compiler will be switched into Tiny CC (aka TCC), in order to be cross-platform compatible and allow more enhanced ports into foreign architectures, e.g. ARM and RISC-V.&lt;br /&gt;
&lt;br /&gt;
Also the ability to make ELF-compatible kernel is in plans too, for leveraging work in easier way and allowing better hot-patching mechanism for OpenKernel.&lt;br /&gt;
&lt;br /&gt;
=== OpenCRT ===&lt;br /&gt;
OpenC(++) Language Runtime is a one-in replacement for MSVC Runtime, with extra functionality such as support for newer C(++) standards and libraries, cross-platform source code and easy integration in other operating systems, such as Linux-based ones, macOS and more. As a compatibility layer, &amp;lt;code&amp;gt;msvcrt.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ucrtbase.dll&amp;lt;/code&amp;gt; will be provided as stubs linking to OpenCRT DLL files, additionally making runtime more reliable and faster.&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== Env ===&lt;br /&gt;
Env is a virtual environment which can initialize multiple virtual environments at once, work in completely separate environments in order to bypass system breaking capabilities. With enhancements of &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; type files, the Env project will provide extra syntax features, turning it into a make-like syntax tuned platform. Env will be capable to replace legacy Razzle environment shipped with earlier versions of Windows NT.&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Draft:OpenKernel&amp;diff=60</id>
		<title>Draft:OpenKernel</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Draft:OpenKernel&amp;diff=60"/>
		<updated>2025-09-08T06:20:16Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Ashific moved page Draft:OpenKernel to Draft:OpenWin: OpenKernel is now a part of the project, instead of being mainstream&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Draft:OpenWin]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=59</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=59"/>
		<updated>2025-09-08T06:20:16Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Ashific moved page Draft:OpenKernel to Draft:OpenWin: OpenKernel is now a part of the project, instead of being mainstream&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenKernel&#039;&#039;&#039; (also: &#039;&#039;OK, OpenWin&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
The pure basis of the OpenKernel would be the Server 2003 RTM + Windows Research Kernel. In contrary of original one, the IA-64 native support will be removed entirely, due to absence of this architecture and very rare opportunity of Intel Itanium machines. Also, the MinWin-ish approach is planned: kernel will turn more modular and expandable, among with dealing with culprits of undocumented routines and internally improving all sub-modules of kernel. The precise construction of kernel is following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;ntoskrnl.exe&#039;&#039;&#039;&amp;lt;/code&amp;gt; - unified kernel which combines all features of multi/uniprocessor machines. This will turn as ultimate replacement for &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; for multiprocessors too. The additional kernels will be added, but they will support relatively newer processor features,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelCore.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - a pure grounding for exportable functions of kernel. This serves as a in-place replacement of &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt; and combines all functions from &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; files. The latter two will be delivered as stubs, which will route the necessary functions into kernel core,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - schema orchestrating mechanism for adding additional APIs into system. This allows for third-party sides to create their custom Kernel Extension modules and therefore, use them when OpenKernel is loaded. Approach will allow to port newer Windows DLLs and functionality directly into OpenKernel without recompiling or rebuilding entire project,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;hal.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - enhanced and updated Hardware Abstraction Layer. Updated HAL will allow to run OpenKernel under ancient and modern hardware, by implementing custom HALs and adding new capabilities of ACPI, AHCI and many more components,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;halSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - same approach of orchestrating custom HALs and their management for &amp;lt;code&amp;gt;hal.dll&amp;lt;/code&amp;gt;, with practically same ability levels, only for Hardware Abstraction Layers.&lt;br /&gt;
&lt;br /&gt;
=== Compilers ===&lt;br /&gt;
OpenKernel will be implemented by switching compilers stack: thus, the NASM will turn the direct replacement for Microsoft&#039;s MASM, which is proprietary and have Microsoft-specific instructions set. Also, the compiler will be switched into Tiny CC (aka TCC), in order to be cross-platform compatible and allow more enhanced ports into foreign architectures, e.g. ARM and RISC-V.&lt;br /&gt;
&lt;br /&gt;
Also the ability to make ELF-compatible kernel is in plans too, for leveraging work in easier way and allowing better hot-patching mechanism for OpenKernel.&lt;br /&gt;
&lt;br /&gt;
== Sub-projects ==&lt;br /&gt;
Among with OpenKernel, additional projects will be developed in parallel, to enhance OpenKernel with additional functionality, ultimately replacing Windows NT ones. These projects will use same development principles and will be tied with OpenKernel as additional dependencies.&lt;br /&gt;
&lt;br /&gt;
=== OpenCRT ===&lt;br /&gt;
OpenC(++) Language Runtime is a one-in replacement for MSVC Runtime, with extra functionality such as support for newer C(++) standards and libraries, cross-platform source code and easy integration in other operating systems, such as Linux-based ones, macOS and more. As a compatibility layer, &amp;lt;code&amp;gt;msvcrt.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ucrtbase.dll&amp;lt;/code&amp;gt; will be provided as stubs linking to OpenCRT DLL files, additionally making runtime more reliable and faster.&lt;br /&gt;
&lt;br /&gt;
=== Env ===&lt;br /&gt;
Env is a virtual environment which can initialize multiple virtual environments at once, work in completely separate environments in order to bypass system breaking capabilities. With enhancements of &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; type files, the Env project will provide extra syntax features, turning it into a make-like syntax tuned platform. Env will be capable to replace legacy Razzle environment shipped with earlier versions of Windows NT.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Build&amp;diff=55</id>
		<title>Build</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Build&amp;diff=55"/>
		<updated>2025-09-03T17:27:24Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Official builds&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide tested under Windows XP, Server 2003, 7 SP1, 8.1 &amp;amp; 10 and 11 (all architectures). For version of the guide made by anons, visit [https://rentry.co/build-win2k3 build-win2k3]. Note that the guide provided by anons isn&#039;t supported in any way by OpenXP developers.&lt;br /&gt;
&lt;br /&gt;
== Preparing for Build ==&lt;br /&gt;
Disable any AV (and Windows Defender) before extracting and building, as both of those actions create a lot of new files, and AV scans for execution of them all - this also counts for any other tools that monitor files, such as voidtools&#039; Everything, but they aren&#039;t impacting much as your antivirus does. Also disable User Account Control. This can be accomplished via Control Panel, or via Registry Key: navigate to &amp;lt;code&amp;gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;EnableLUA&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Some versions may require restart after registry apply.&lt;br /&gt;
&lt;br /&gt;
After preparing your machine, extract source tree to a folder named &amp;lt;code&amp;gt;srv03rtm&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;srvrtm&amp;lt;/code&amp;gt; on the root of a drive, drive letter doesn&#039;t seem to matter (just don&#039;t use C:\ drive as that has some extra security). It is recommended to use &amp;lt;code&amp;gt;D:\srvrtm\&amp;lt;/code&amp;gt; as the path to match RTM binaries.&lt;br /&gt;
&lt;br /&gt;
=== For 2000/XP/2003 Users ===&lt;br /&gt;
Before initializing Razzle, you should update your build machine. If you&#039;re using Windows XP/Server 2003, and you haven&#039;t updated it yet with [https://legacyupdate.net Legacy Update], it&#039;s mandatory to install .NET Framework 1.1, because without it Razzle will fail to initialize environment normally (despite that two versions of .NET 1.1 are included in &amp;lt;code&amp;gt;tools\x86&amp;lt;/code&amp;gt;). The installation files are included in &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
=== Running environment ===&lt;br /&gt;
&lt;br /&gt;
* Run command-prompt as administrator (can usually be done by typing &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; into start menu, or by right click &amp;lt;code&amp;gt;Command Prompt&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Run as administrator&amp;lt;/code&amp;gt;)&lt;br /&gt;
* In the command-prompt, change to the source folder: &amp;lt;code&amp;gt;cd /d D:\srvrtm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Now start razzle: &amp;lt;code&amp;gt;tools\razzle.cmd free offline&amp;lt;/code&amp;gt; for 32-bit clients, and &amp;lt;code&amp;gt;tools\razzle64.cmd free offline&amp;lt;/code&amp;gt; for 64-bits. This initiates retail build of x86. The first time you run razzle inside that copy of the source code it&#039;ll need to initialize a few things, give it a few minutes, after a while a Notepad window will appear - make sure to close this for the initialization to continue.&lt;br /&gt;
* &#039;&#039;&#039;Important for first time!&#039;&#039;&#039; Run the prebuild script, if you&#039;re initiating source code for first time: &amp;lt;code&amp;gt;tools\prebuild&amp;lt;/code&amp;gt;. This scripts sets all read-only attributes for necessary stuff and makes 16-bit stuff workable for x64 environments.&lt;br /&gt;
If you want to have official builds, append &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument. This argument is modified and removed &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; argument, which previously checked build machine for eligibility of building official builds. &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument sets necessary values for official build independently of your machine eligibility, because of it&#039;s moot behavior and requirement to be connected into legacy build servers.&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
Start to build via &amp;lt;code&amp;gt;build /cZP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (which is alias to first, so doesn&#039;t matter). &#039;&#039;&#039;Important:&#039;&#039;&#039; Build.exe doesn&#039;t seem to play well when building with many (up to 8) threads. If your build machine has more than that it&#039;s recommended to cap it to 8 threads maximum via the &amp;lt;code&amp;gt;-M 8&amp;lt;/code&amp;gt; switch, added to the build command (eg. &amp;lt;code&amp;gt;build /cZP -M 8&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;bcz -M 8&amp;lt;/code&amp;gt;). Use 8 threads if your host/virtual machine CPU have allocated 8 cores (or less). More than 8 threads build may lead to unforeseen behavior, such as inconsistent linkage and invalid generation of pieces of code, since some build programs were written back at time when CPUs should be limited in order to preserve proper frequency.&lt;br /&gt;
&lt;br /&gt;
As an alternative, you can use &amp;lt;code&amp;gt;tools\buildx.cmd&amp;lt;/code&amp;gt; script, which allows to build not only retail (fre) and debug (checked, or chk) builds, but also profile and meter builds, additionally by disabling compiler optimizations and specifically building for AMD64/IA64 architectures. The purpose of profile and meter builds is in investigations, as of time of guide enhancement.&lt;br /&gt;
&lt;br /&gt;
=== Post-build ===&lt;br /&gt;
&lt;br /&gt;
* Download the Missing Binaries pack from OpenXP Download Center, which contains missing binaries both for AMD64 and x86 builds.&lt;br /&gt;
* Extract the contents of the binaries folder for the build type you&#039;re building into your build trees binaries folder (e.g. &amp;lt;code&amp;gt;D:\binaries.x86fre&amp;lt;/code&amp;gt;, should have been created during the build), the 7z should contain files for all SKUs (uses &amp;lt;code&amp;gt;pidgen.dll&amp;lt;/code&amp;gt; from Win2003 Enterprise, so your builds should accept Enterprise product keys), &#039;&#039;&#039;When asked during extraction to overwrite folders select &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;, but when asked to overwrite files, make sure to select &amp;lt;code&amp;gt;No&amp;lt;/code&amp;gt;!&#039;&#039;&#039;&lt;br /&gt;
* Inside the razzle window run &amp;lt;code&amp;gt;tools\postbuild&amp;lt;/code&amp;gt;. You can use &amp;lt;code&amp;gt;-sku:{sku}&amp;lt;/code&amp;gt; if you want to process only specific one (no brackets!), expect &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors, if you haven&#039;t extracted missing binaries from &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt;. If you have a wish to do a full post-build, append &amp;lt;code&amp;gt;-full&amp;lt;/code&amp;gt; argument&lt;br /&gt;
&lt;br /&gt;
==== Issues ====&lt;br /&gt;
&lt;br /&gt;
* Once post-build has finished, assuming you used the &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; file above and followed the guide properly, it should have hopefully succeeded without errors, and there shouldn&#039;t be any &amp;lt;code&amp;gt;binaries.x86fre\build_logs\postbuild.err&amp;lt;/code&amp;gt; file!&lt;br /&gt;
* Otherwise take a look inside the &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; - most messages in here are negligible, but if you see &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors associated with the edition you want to use, you may need to re-run &amp;lt;code&amp;gt;tools\missing.cmd&amp;lt;/code&amp;gt;, or extract &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; again.&lt;br /&gt;
* If &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; contains messages like &amp;lt;code&amp;gt;(crypto.cmd) ERROR&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;(ntsign.cmd) ERROR&amp;lt;/code&amp;gt; try re-importing the &amp;lt;code&amp;gt;tools\driver.pfx&amp;lt;/code&amp;gt; key-file (double-click it, press Next through the prompts, password is empty), and make sure your system date is set to the current date.&lt;br /&gt;
* If postbuild.err has filechk errors about missing &amp;lt;code&amp;gt;hwcomp.dat&amp;lt;/code&amp;gt; files, try copying the following into a batch script and run it in a razzle prompt (after using postbuild once already)&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\pro\i386 -o:%_NTPOSTBLD%\.\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\per\i386 -o:%_NTPOSTBLD%\perinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\bla\i386 -o:%_NTPOSTBLD%\blainf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\sbs\i386 -o:%_NTPOSTBLD%\sbsinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\srv\i386 -o:%_NTPOSTBLD%\srvinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\ads\i386 -o:%_NTPOSTBLD%\entinf\hwcomp.dat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating ISO files ===&lt;br /&gt;
Execute &amp;lt;code&amp;gt;tools\oscdimg {sku} [destination-file (optional)]&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;{sku}&amp;lt;/code&amp;gt; is one of:&lt;br /&gt;
* &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; - Windows Server 2003 Standard Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs&amp;lt;/code&amp;gt; - Windows Server 2003 Small Business Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;ads&amp;lt;/code&amp;gt; - Windows Server 2003 Enterprise Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;dtc&amp;lt;/code&amp;gt; - Windows Server 2003 Datacenter Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;bla&amp;lt;/code&amp;gt; - Windows Server 2003 Web Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;per&amp;lt;/code&amp;gt; - Windows XP Home Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; - Windows XP Professional&lt;br /&gt;
* &amp;lt;code&amp;gt;winpe&amp;lt;/code&amp;gt; - Windows Preinstallation Environment&lt;br /&gt;
ISO will be saved to &amp;lt;code&amp;gt;{build-drive}\{build-tag}_{sku}.iso&amp;lt;/code&amp;gt;, unless &amp;lt;code&amp;gt;[destination-file]&amp;lt;/code&amp;gt; is provided as a parameter.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get any problems during the build hopefully your problem might be answered in our Discord server, by lurking &lt;br /&gt;
&lt;br /&gt;
====== Certificate Import Wizard: An internal error occurred... ======&lt;br /&gt;
It&#039;s likely your PFX certificate isn&#039;t generated properly and you need to regenerate them. For that you should follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Check out the &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; and install from there &amp;lt;code&amp;gt;MSYS 1.0.11.exe&amp;lt;/code&amp;gt;, then hop up into your architecture folder (x32 or x64) and install &amp;lt;code&amp;gt;VC_redist&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;OpenSSL&amp;lt;/code&amp;gt;. Make sure OpenSSL is in your path (cause installer doesn&#039;t set it by default).&lt;br /&gt;
* Download the zip or do a &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; of CertUtil repository, or regenerate them using the original guide.&lt;br /&gt;
* Open MSYS and switch to directory where you extracted/cloned the repo.&lt;br /&gt;
* Attach all attributes via &amp;lt;code&amp;gt;chmod -r 0777 *&amp;lt;/code&amp;gt; and convert .sh to UNIX format with &amp;lt;code&amp;gt;dos2unix *.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;./generate.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the files from &amp;lt;code&amp;gt;srv03rtm.certs&amp;lt;/code&amp;gt; into source code tree (&amp;lt;code&amp;gt;D:\srv03rtm&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== After running razzle it shows a bunch of errors, &amp;quot;tfindcer not recognized&amp;quot; etc ======&lt;br /&gt;
You&#039;re likely on a 64-bit system but running &amp;lt;code&amp;gt;razzle.cmd&amp;lt;/code&amp;gt; directly, you should use &amp;lt;code&amp;gt;razzle64.cmd&amp;lt;/code&amp;gt; instead, this&#039;ll set things up so that razzle will use the correct tools for you. Hopefully with that the &amp;lt;code&amp;gt;tfindcer not recognized&amp;lt;/code&amp;gt; &amp;amp; other errors should go away.&lt;br /&gt;
&lt;br /&gt;
====== After a full build I get 1000+ errors, build.err has &amp;lt;code&amp;gt;has bad storage class&amp;lt;/code&amp;gt; errors inside ======&lt;br /&gt;
Seems to be caused by your locale, this is reported to happen with Simplified Chinese language, but can probably happen with other languages too.&lt;br /&gt;
&lt;br /&gt;
Besides changing your locale/language settings, you could also try editing the source files to remove the characters that cause problems, an anon posted a list of the files that need changes here&lt;br /&gt;
&lt;br /&gt;
====== I get a &amp;lt;code&amp;gt;TAPI.RES&amp;lt;/code&amp;gt; error during the build. ======&lt;br /&gt;
Try moving your source code folder closer to the root of the drive, ideally it should only be one folder up from the drive root (eg. &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== On Windows 7 and later I get NTVDM crashes while building ======&lt;br /&gt;
All NTVDM errors should have hopefully been solved in the v8 release of this guide/ZIP, but if you still run into any NTVDM error a copy of your build.log file would help a lot to figure out what caused it, if you ZIP that up and post in the thread hopefully we can figure something out. We consider to build code on Windows 10 build 1809 or newer, or use operating systems up to Windows Vista.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Kernel debugging can be enabled by editing the &amp;lt;code&amp;gt;C:\boot.ini&amp;lt;/code&amp;gt; file in your installed build, and adding &amp;lt;code&amp;gt;/debug /debugport=COM1 /baudrate=115200&amp;lt;/code&amp;gt; to the end of a config line.&lt;br /&gt;
&lt;br /&gt;
For example here&#039;s a &amp;lt;code&amp;gt;boot.ini&amp;lt;/code&amp;gt; with two choices, one with debugging &amp;amp; one without, with this NTLDR will show an OS boot choice menu at startup:&amp;lt;blockquote&amp;gt;[boot loader]&lt;br /&gt;
&lt;br /&gt;
timeout=30&lt;br /&gt;
&lt;br /&gt;
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;
&lt;br /&gt;
[operating systems]&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect /debug /debugport=COM1 /baudrate=115200&amp;lt;/blockquote&amp;gt;(even though they&#039;re named the same &amp;lt;code&amp;gt;Windows Server 2003, Enterprise&amp;lt;/code&amp;gt;, NTLDR will add a &amp;lt;code&amp;gt;[debugger enabled]&amp;lt;/code&amp;gt; tag to it on the OS selection menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chk (checked)&amp;lt;/code&amp;gt; builds are preferred for debugging as they enable asserts &amp;amp; debug messages, though &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt; will run a lot slower than &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds. &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds can also be debugged fine, but usually with a lot less debug output.&lt;br /&gt;
&lt;br /&gt;
Ideally you should also configure WinDbg to use the &amp;lt;code&amp;gt;binaries.{buildtype}\symbols.pri\retail&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;binaries.{buildtype}\symbols\retail&amp;lt;/code&amp;gt; symbols folders too, if WinDbg is running on the same machine that compiled the build it should then also be able to do source-level debugging against the actual source files.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using a VM to host your build on you&#039;ll have to pass-through the emulated COM port over to a pipe somehow, for WinDbg/KD/IDA/etc to make use of.&lt;br /&gt;
&lt;br /&gt;
There is apparently a way to get KDNET working on 2003 too (see &amp;lt;nowiki&amp;gt;https://github.com/MovAX0xDEAD/KDNET&amp;lt;/nowiki&amp;gt;), but this is as-of-yet untested with our builds, seems like it should have support for VMware&#039;s emulated network hardware at least.&lt;br /&gt;
&lt;br /&gt;
(TODO: add more VM guides here... if anyone wants to post one in the thread I&#039;m happy to add it here)&lt;br /&gt;
&lt;br /&gt;
=== VMware setup ===&lt;br /&gt;
&lt;br /&gt;
* For a VMware VM, just open the VM hardware options, &#039;&#039;&#039;remove the printer hardware&#039;&#039;&#039;, then click &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; and choose &amp;lt;code&amp;gt;Serial Port&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In the serial-port config panel, set it to &amp;lt;code&amp;gt;Use named pipe&amp;lt;/code&amp;gt;, and enter a pipe name into the textbox, eg. &amp;lt;code&amp;gt;\\.\pipe\vm&amp;lt;/code&amp;gt;. The pipe should be setup as &amp;lt;code&amp;gt;This end is the server&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;The other end is a virtual machine&amp;lt;/code&amp;gt;.&lt;br /&gt;
* It&#039;s apparently recommended to use the &amp;lt;code&amp;gt;Yield CPU on poll&amp;lt;/code&amp;gt; option, but I&#039;ve had success without it, it&#039;s up to you.&lt;br /&gt;
* With that setup now just open WinDbg, choose &amp;lt;code&amp;gt;Attach to kernel&amp;lt;/code&amp;gt;, open the &amp;lt;code&amp;gt;COM&amp;lt;/code&amp;gt; tab and enter the baud-rate and pipe name you selected for your VM, then hit OK.&lt;br /&gt;
* Now WinDbg should start with &amp;lt;code&amp;gt;Waiting for reconnect&amp;lt;/code&amp;gt; text showing, and hopefully when you next boot up your VM it&#039;ll connect up to WinDbg by itself.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Setup/Installation ===&lt;br /&gt;
A debugger can be attached to setup by pressing F8 at the right time - for text-mode setup the right time is when asked &amp;lt;code&amp;gt;Press F6 if you need to install a third party SCSI or RAID driver&amp;lt;/code&amp;gt;, spamming it while that message is showing should make it connect to COM1 with 19200 baud-rate (debug options can be changed inside &amp;lt;code&amp;gt;txtsetup.sif&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;SetupDebugOptions&amp;lt;/code&amp;gt; line specifies options to apply when F8 is pressed). After debug connection is made it might take a couple extra minutes for it to pass the &amp;lt;code&amp;gt;Setup is starting Windows&amp;lt;/code&amp;gt; stage.&lt;br /&gt;
&lt;br /&gt;
Similarly, GUI setup can be debugged by pressing F8 before the Windows bootloader starts (progress bar etc), this should bring up a menu with options for &amp;lt;code&amp;gt;Safe Mode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt;, etc. Choosing &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; will make it attach to COM1 before starting setup, again at 19200 baudrate.&lt;br /&gt;
&lt;br /&gt;
=== Changing default baudrate ===&lt;br /&gt;
The default 19200 baudrate can be changed by editing the &amp;lt;code&amp;gt;base\boot\kdcom\xxkdsup.c&amp;lt;/code&amp;gt; file, search for &amp;lt;code&amp;gt;BD_19200&amp;lt;/code&amp;gt; inside there and change it to e.g. &amp;lt;code&amp;gt;BD_115200&amp;lt;/code&amp;gt;, now it should use that by default without needing any &amp;lt;code&amp;gt;/baudrate&amp;lt;/code&amp;gt; parameter, or eg. when using &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; from the boot options menu.&lt;br /&gt;
&lt;br /&gt;
=== Un-filtering kernel messages ===&lt;br /&gt;
Even with a chk build you may notice that the kernel doesn&#039;t seem to output much over KD, this seems to be because most of the kernel components use &amp;lt;code&amp;gt;KdPrintEx&amp;lt;/code&amp;gt;, which allows filtering KD messages to certain components (although MS&#039;s docs seem to suggest KdPrintEx filtering was only used in Vista, it does seem that 2003 makes use of it too)&lt;br /&gt;
&lt;br /&gt;
To enable components you&#039;ll need to open the registry of your installed build to the following key (or create it if it doesn&#039;t exist)&amp;lt;blockquote&amp;gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter&amp;lt;/blockquote&amp;gt;Then create a DWORD value named the component you want to enable (eg. &amp;lt;code&amp;gt;LDR&amp;lt;/code&amp;gt;), and set the value to hexadecimal &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A list of the component registry names can be found inside &amp;lt;code&amp;gt;base\published\obj\i386\dpfiltercm.c&amp;lt;/code&amp;gt; after a build. This also contains the symbol names for the component (eg. &amp;lt;code&amp;gt;Kd_LDR_Mask&amp;lt;/code&amp;gt;), which can be set directly through WinDbg/KD via the symbol name. (eg. &amp;lt;code&amp;gt;ed nt!Kd_LDR_Mask 0xFFFFFFFF&amp;lt;/code&amp;gt;, with symbols loaded this should set the LDR components filter value in real-time)&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; components value (default &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) is added to every components value, essentially making &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; the default value for all components - so setting this to &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt; should make every component print to KD. You&#039;ll get a ton more debug output from this, but all the KD prints will likely slow down the system a lot (unfortunately it doesn&#039;t seem possible to disable a component when using WIN2000 to enable them all)&lt;br /&gt;
&lt;br /&gt;
If you need to enable components before your build is installed (eg. kernel is having problems before setup is completed), you&#039;ll need to edit the &amp;lt;code&amp;gt;mergedcomponents\setupinfs\hivesys.inx&amp;lt;/code&amp;gt; file, anon made a post about that here, though it hasn&#039;t been tried yet afaik.&lt;br /&gt;
&lt;br /&gt;
=== x64 build OS support ===&lt;br /&gt;
prepatched.zip v9 adds support for using x64 build OS&#039;s such as Win10 x64, this is done by wrapping certain 16-bit tools using &amp;lt;code&amp;gt;MS-DOS Player&amp;lt;/code&amp;gt;, using .bat files to redirect calls to use the player, changing some makefiles to use 32-bit equivalents, etc.&lt;br /&gt;
&lt;br /&gt;
Unfortunately some of the wrapped 16-bit tools can still randomly error without rhyme or reason for it, as a workaround the .bat files of the worst offenders will give it 5 attempts before failing, hopefully this should be enough to allow builds to complete fine, but there&#039;s still a chance one of the other 16-bit tools could error too... maybe in future I&#039;ll apply this 5-attempts bandaid over all the 16-bit tools.&lt;br /&gt;
&lt;br /&gt;
Huge thanks to the anon who initially worked on fixing the 16-bit tools over at &amp;lt;nowiki&amp;gt;https://rentry.co/16bit-msbuild&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
=== amd64 build support ===&lt;br /&gt;
As of update v10 an amd64 build can be created by initialising razzle with the &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; options, the build should mostly complete without errors, but note that postbuild+ hasn&#039;t been updated at all to work properly with amd64 yet.&lt;br /&gt;
&lt;br /&gt;
Unfortunately as the leak didn&#039;t come with exinit.obj/systime.obj for amd64 these need to be built from anon&#039;s decompilations instead. v10a adds newer exinit.c/systime.c decompilations that are apparently an exact match to the x86 .obj files included in the leak, hopefully these should work well with other architectures too.&lt;br /&gt;
&lt;br /&gt;
Some anons have been slowly working on amd64, being able to get past text-mode setup and start booting GUI-mode setup, though sadly as of this release nobody has been able to actually get GUI mode to fully start up.&lt;br /&gt;
&lt;br /&gt;
Note that this source code is from around ~2 years before amd64 was officially released by MS as Server2003 SP1, so there&#039;s likely a lot missing. (WRK may have some newer kernel-mode parts, being both based on SP1 and including support for amd64, though note that WRK also has many things removed too...)&lt;br /&gt;
&lt;br /&gt;
However there&#039;s also many indications in the leak that MS did have amd64 running at this point, so it should eventually be possible for us to get it working too.&lt;br /&gt;
&lt;br /&gt;
=== Timebomb ===&lt;br /&gt;
&lt;br /&gt;
* Time can be adjusted by editing &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; variable inside &amp;lt;code&amp;gt;\tools\postbuildscripts\timebomb.cmd&amp;lt;/code&amp;gt; (line 44)&lt;br /&gt;
* Setting &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will disable the timebomb.&lt;br /&gt;
* Only certain &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; parameters are valid (0, 5, 15, 30, 60, 90, 120, 150, 180, 240, 360, 444)&lt;br /&gt;
&lt;br /&gt;
=== Different build options ===&lt;br /&gt;
You can modify your razzle shortcut (or execute it manually inside your source folder) to include (or remove) additional argument(s):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; - build &#039;free&#039; bits (production, omitting it will generated checked bits)&lt;br /&gt;
* &amp;lt;code&amp;gt;chkkernel&amp;lt;/code&amp;gt; - build &#039;checked&#039; (testing) kernel/hal/ntdll when building &#039;free&#039; bits&lt;br /&gt;
* &amp;lt;code&amp;gt;no_opts&amp;lt;/code&amp;gt; - disable binary optimization (useful for debugging, but will most likely fail a full build, some code can&#039;t be built without optimization)&lt;br /&gt;
* &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt; - enable verbose output of the build process&lt;br /&gt;
* &amp;lt;code&amp;gt;binaries_dir &amp;lt;basepath&amp;gt;&amp;lt;/code&amp;gt; - specifies custom output directory (default is &amp;lt;code&amp;gt;binaries&amp;lt;/code&amp;gt;, the suffix added after &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; is non-customizable)&lt;br /&gt;
* &amp;lt;code&amp;gt;officialbuild&amp;lt;/code&amp;gt; - sets razzle to build this as an &amp;quot;official&amp;quot; build, requires updating BuildMachines.txt, see the section below&lt;br /&gt;
* &amp;lt;code&amp;gt;win64&amp;lt;/code&amp;gt; - builds for Intel Itanium-64 machines&lt;br /&gt;
* &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; - builds for amd64 instead of x86, see &amp;lt;code&amp;gt;amd64 build support&amp;lt;/code&amp;gt; section above&lt;br /&gt;
* &amp;lt;code&amp;gt;pocketpc&amp;lt;/code&amp;gt; - builds for ARMv4 targets. Currently there are no any supportive headers and libraries for AMD clients, and work is undergoing.&lt;br /&gt;
&lt;br /&gt;
Other options are not described here, see &amp;lt;code&amp;gt;razzle.cmd /?&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
=== Official builds ===&lt;br /&gt;
The &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; parameter sets global definitions for official builds, which will make it match up closer to the retail builds, should be useful if you need to compare against retail for any reason. In difference of &amp;lt;code&amp;gt;offline&amp;lt;/code&amp;gt; and similar flags, all binaries in this mode are built in retail mode and won&#039;t contain any private information, as well as postbuild logging will be enabled.&lt;br /&gt;
&lt;br /&gt;
In latest patch kit from OpenXP, the useless checks of build machines in &amp;lt;code&amp;gt;&#039;&#039;BuildMachines.txt&#039;&#039;&amp;lt;/code&amp;gt; have been &#039;&#039;&#039;removed completely&#039;&#039;&#039;, and instead, any machine which is considered as &amp;quot;verified&amp;quot; is able to construct official builds. Also, the &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; parameter have been shortened to simply &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt;, in order to make things more consistent.&lt;br /&gt;
&lt;br /&gt;
=== Building specific components ===&lt;br /&gt;
Most components can be built seperately. For example, if you wish to rebuild &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; component, perform these steps:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cd base\ntos&amp;lt;/code&amp;gt; (you can also use &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; alias that razzle has set up for you)&lt;br /&gt;
* &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (alias for &amp;lt;code&amp;gt;build /cPZ&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Generally &amp;lt;code&amp;gt;postbuild.cmd&amp;lt;/code&amp;gt; is clever enough to include your changes properly without needing fresh build as it uses &amp;lt;code&amp;gt;bindiff&amp;lt;/code&amp;gt; to find differences.&lt;br /&gt;
&lt;br /&gt;
=== Generating new build number/name ===&lt;br /&gt;
Version information is stored in &amp;lt;code&amp;gt;\public\sdk\inc\ntverp.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;m0 set_builddate set_buildnum set_buildname&amp;lt;/code&amp;gt; to generate new build name quickly.&lt;br /&gt;
&lt;br /&gt;
=== Original CD filenames ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-standard_retail_en-us-NRMSFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: A600409482A5678EF6AF2B26D3576D6D9894178D)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-datacenter_retail_en-us-NRMDOEM_EN.iso&amp;lt;/code&amp;gt; (SHA1: E2B47A7CE45C6C6305594CEE4C1B64894805AAF4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-enterpriseserver_retail_en-us-NRMEFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 0309FFB4181BA5122C692A6E1079E9FC1D53FCE4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-webserver_retail_en-us-NRMWFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 46C1CCB2CFC96803E304A35BEF50CD71B2C1DE38)&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs.iso&amp;lt;/code&amp;gt; (converted from mdf; SHA1: CDB30C80FDE314C16CA11F5CD31650ECBEC7A214)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86chk_server-enterpriseserver_retail_en-us-NRMECHK_EN.iso&amp;lt;/code&amp;gt; (SHA1: EEF5F921CC8FC20FB29A862E1E132359E0D151BB)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64fre_server-enterprise_retail_en-us-ARMEXFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 076EDCF017EDE0B2D0D8067FA52CF3D44EEEF79A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64chk_server-enterprise_retail_en-us-AX2EXCFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 8916DFBB1D93A9CECB1FE8600BE2E2C752E85E7F)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-home_retail_en-us-WXHFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: B273C8D41E3844E3E46722F52F5A4CF9F206C8D0)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 1400DED4402D50F3864ED3D8DCF5CC52BA79A04A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86chk_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 017F10E4555D1A9280874B9B0243442F045F1B2D)&lt;br /&gt;
&lt;br /&gt;
=== Product keys ===&lt;br /&gt;
&lt;br /&gt;
* Evaluation (for all editions, if you set a timebomb. Default it set to 360 days):&lt;br /&gt;
** &amp;lt;code&amp;gt;99999-99999-99999-99999-99999&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DDDDD-DDDDD-DDDDD-DDDDD-DDDDD&amp;lt;/code&amp;gt;&lt;br /&gt;
* Standard Edition: &amp;lt;code&amp;gt;M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition: &amp;lt;code&amp;gt;QW32K-48T2T-3D2PJ-DXBWY-C6WRJ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition (x64): &amp;lt;code&amp;gt;KK2WD-BFYJ6-77X87-8TRBF-9B343&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=54</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=54"/>
		<updated>2025-08-27T15:48:33Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenKernel&#039;&#039;&#039; (also: &#039;&#039;OK, OpenWin&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
The pure basis of the OpenKernel would be the Server 2003 RTM + Windows Research Kernel. In contrary of original one, the IA-64 native support will be removed entirely, due to absence of this architecture and very rare opportunity of Intel Itanium machines. Also, the MinWin-ish approach is planned: kernel will turn more modular and expandable, among with dealing with culprits of undocumented routines and internally improving all sub-modules of kernel. The precise construction of kernel is following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;ntoskrnl.exe&#039;&#039;&#039;&amp;lt;/code&amp;gt; - unified kernel which combines all features of multi/uniprocessor machines. This will turn as ultimate replacement for &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; for multiprocessors too. The additional kernels will be added, but they will support relatively newer processor features,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelCore.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - a pure grounding for exportable functions of kernel. This serves as a in-place replacement of &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt; and combines all functions from &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; files. The latter two will be delivered as stubs, which will route the necessary functions into kernel core,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - schema orchestrating mechanism for adding additional APIs into system. This allows for third-party sides to create their custom Kernel Extension modules and therefore, use them when OpenKernel is loaded. Approach will allow to port newer Windows DLLs and functionality directly into OpenKernel without recompiling or rebuilding entire project,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;hal.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - enhanced and updated Hardware Abstraction Layer. Updated HAL will allow to run OpenKernel under ancient and modern hardware, by implementing custom HALs and adding new capabilities of ACPI, AHCI and many more components,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;halSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - same approach of orchestrating custom HALs and their management for &amp;lt;code&amp;gt;hal.dll&amp;lt;/code&amp;gt;, with practically same ability levels, only for Hardware Abstraction Layers.&lt;br /&gt;
&lt;br /&gt;
=== Compilers ===&lt;br /&gt;
OpenKernel will be implemented by switching compilers stack: thus, the NASM will turn the direct replacement for Microsoft&#039;s MASM, which is proprietary and have Microsoft-specific instructions set. Also, the compiler will be switched into Tiny CC (aka TCC), in order to be cross-platform compatible and allow more enhanced ports into foreign architectures, e.g. ARM and RISC-V.&lt;br /&gt;
&lt;br /&gt;
Also the ability to make ELF-compatible kernel is in plans too, for leveraging work in easier way and allowing better hot-patching mechanism for OpenKernel.&lt;br /&gt;
&lt;br /&gt;
== Sub-projects ==&lt;br /&gt;
Among with OpenKernel, additional projects will be developed in parallel, to enhance OpenKernel with additional functionality, ultimately replacing Windows NT ones. These projects will use same development principles and will be tied with OpenKernel as additional dependencies.&lt;br /&gt;
&lt;br /&gt;
=== OpenCRT ===&lt;br /&gt;
OpenC(++) Language Runtime is a one-in replacement for MSVC Runtime, with extra functionality such as support for newer C(++) standards and libraries, cross-platform source code and easy integration in other operating systems, such as Linux-based ones, macOS and more. As a compatibility layer, &amp;lt;code&amp;gt;msvcrt.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ucrtbase.dll&amp;lt;/code&amp;gt; will be provided as stubs linking to OpenCRT DLL files, additionally making runtime more reliable and faster.&lt;br /&gt;
&lt;br /&gt;
=== Env ===&lt;br /&gt;
Env is a virtual environment which can initialize multiple virtual environments at once, work in completely separate environments in order to bypass system breaking capabilities. With enhancements of &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; type files, the Env project will provide extra syntax features, turning it into a make-like syntax tuned platform. Env will be capable to replace legacy Razzle environment shipped with earlier versions of Windows NT.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=53</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=53"/>
		<updated>2025-08-26T12:49:34Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenKernel&#039;&#039;&#039; (also: &#039;&#039;OK, OpenWin&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
The pure basis of the OpenKernel would be the Server 2003 RTM + Windows Research Kernel. In contrary of original one, the IA-64 native support will be removed entirely, due to absence of this architecture and very rare opportunity of Intel Itanium machines. Also, the MinWin-ish approach is planned: kernel will turn more modular and expandable, among with dealing with culprits of undocumented routines and internally improving all sub-modules of kernel. The precise construction of kernel is following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;ntoskrnl.exe&#039;&#039;&#039;&amp;lt;/code&amp;gt; - unified kernel which combines all features of multi/uniprocessor machines. This will turn as ultimate replacement for &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; for multiprocessors too. The additional kernels will be added, but they will support relatively newer processor features,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelCore.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - a pure grounding for exportable functions of kernel. This serves as a in-place replacement of &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt; and combines all functions from &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; files. The latter two will be delivered as stubs, which will route the necessary functions into kernel core,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;kernelSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - schema orchestrating mechanism for adding additional APIs into system. This allows for third-party sides to create their custom Kernel Extension modules and therefore, use them when OpenKernel is loaded. Approach will allow to port newer Windows DLLs and functionality directly into OpenKernel without recompiling or rebuilding entire project,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;hal.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - enhanced and updated Hardware Abstraction Layer. Updated HAL will allow to run OpenKernel under ancient and modern hardware, by implementing custom HALs and adding new capabilities of ACPI, AHCI and many more components,&lt;br /&gt;
* &amp;lt;code&amp;gt;&#039;&#039;&#039;halSchema.dll&#039;&#039;&#039;&amp;lt;/code&amp;gt; - same approach of orchestrating custom HALs and their management for &amp;lt;code&amp;gt;hal.dll&amp;lt;/code&amp;gt;, with practically same ability levels, only for Hardware Abstraction Layers.&lt;br /&gt;
&lt;br /&gt;
=== Compilers ===&lt;br /&gt;
OpenKernel will be implemented by switching compilers stack: thus, the NASM will turn the direct replacement for Microsoft&#039;s MASM, which is proprietary and have Microsoft-specific instructions set. Also, the compiler will be switched into Tiny CC (aka TCC), in order to be cross-platform compatible and allow more enhanced ports into foreign architectures, e.g. ARM and RISC-V.&lt;br /&gt;
&lt;br /&gt;
Also the ability to make ELF-compatible kernel is in plans too, for leveraging work in easier way and allowing better hot-patching mechanism for OpenKernel.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=52</id>
		<title>OpenWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenWin&amp;diff=52"/>
		<updated>2025-08-25T11:48:15Z</updated>

		<summary type="html">&lt;p&gt;Ashific: openkernel start&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenKernel&#039;&#039;&#039; (short name` &#039;&#039;OK&#039;&#039;), is an internal attempt to rewrite/rejuvenate Windows NT kernel to turn it more capable and modern, by integrating similar solutions implemented in [[MinWin]] and adding more features which doesn&#039;t exist in original NT project.&lt;br /&gt;
&lt;br /&gt;
Originally OpenKernel&#039;s need have been raised in order to replace the Windows Server 2003&#039;s kernel with structurally same but different in approach kernel, which will fix most of compatibility issues for both old and new machines. This project doesn&#039;t have similar aims as ReactOS does, however, OpenKernel tends to be free for use and open-source. This approach will make OK eventually replace NT.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=51</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=51"/>
		<updated>2025-08-21T09:25:45Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Welcome to The OpenXP Wiki!}}&lt;br /&gt;
Welcome to the [[OpenXP]] Project&#039;s official wiki! Here you can find useful guides to compile Windows XP/Server 2003 leaked source code, as well as to master in following stuff:&lt;br /&gt;
&lt;br /&gt;
* [[Getting Started|Getting started]] on configuring [[Razzle|environment]], [[Certificate Generation|generating certificates]] and performing successful build,&lt;br /&gt;
* Adjusting source code with custom patches, enhancements and tweaks,&lt;br /&gt;
* Knowing more about [[Windows Internals]] (in most real way), as well as to introducing more fundamentals,&lt;br /&gt;
* And waffles! 🧇&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
If you want to stay connected with OpenXP, you can join our official [https://discord.com/invite/vS4bNfsZgh Discord server], as well to download source codes from our [[Download Center]] in safest way!&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Build&amp;diff=50</id>
		<title>Build</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Build&amp;diff=50"/>
		<updated>2025-08-19T17:55:09Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide tested under Windows XP, 7 SP1, 8.1 &amp;amp; 10 x86/x64, results may vary under other operating systems (if you will copy/paste source code at many times). For legacy version of the guide visit [https://rentry.co/build-win2k3 build-win2k3].&lt;br /&gt;
&lt;br /&gt;
== Preparing for Build ==&lt;br /&gt;
Disable any AV (and Windows Defender) before extracting and building, as both of those actions create a lot of new files, and AV scans for execution of them all - this also counts for any other tools that monitor files, such as voidtools&#039; Everything, but they aren&#039;t impacting much as your antivirus does. Also disable User Account Control. This can be accomplished via Control Panel, or via Registry Key: navigate to &amp;lt;code&amp;gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;EnableLUA&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Some versions may require restart after registry apply.&lt;br /&gt;
&lt;br /&gt;
After preparing your machine, extract source tree to a folder named &amp;lt;code&amp;gt;srv03rtm&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;srvrtm&amp;lt;/code&amp;gt; on the root of a drive, drive letter doesn&#039;t seem to matter (just don&#039;t use C:\ drive as that has some extra security). It is recommended to use &amp;lt;code&amp;gt;D:\srvrtm\&amp;lt;/code&amp;gt; as the path to match RTM binaries.&lt;br /&gt;
&lt;br /&gt;
=== For 2000/XP/2003 Users ===&lt;br /&gt;
Before initializing Razzle, you should update your build machine. If you&#039;re using Windows XP/Server 2003, and you haven&#039;t updated it yet with [https://legacyupdate.net Legacy Update], it&#039;s mandatory to install .NET Framework 1.1, because without it Razzle will fail to initialize environment normally (despite that two versions of .NET 1.1 are included in &amp;lt;code&amp;gt;tools\x86&amp;lt;/code&amp;gt;). The installation files are included in &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
=== Running environment ===&lt;br /&gt;
&lt;br /&gt;
* Run command-prompt as administrator (can usually be done by typing &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; into start menu, or by right click &amp;lt;code&amp;gt;Command Prompt&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Run as administrator&amp;lt;/code&amp;gt;)&lt;br /&gt;
* In the command-prompt, change to the source folder: &amp;lt;code&amp;gt;cd /d D:\srvrtm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Now start razzle: &amp;lt;code&amp;gt;tools\razzle.cmd free offline&amp;lt;/code&amp;gt; for 32-bit clients, and &amp;lt;code&amp;gt;tools\razzle64.cmd free offline&amp;lt;/code&amp;gt; for 64-bits. This initiates retail build of x86. The first time you run razzle inside that copy of the source code it&#039;ll need to initialize a few things, give it a few minutes, after a while a Notepad window will appear - make sure to close this for the initialization to continue.&lt;br /&gt;
* &#039;&#039;&#039;Important for first time!&#039;&#039;&#039; Run the prebuild script, if you&#039;re initiating source code for first time: &amp;lt;code&amp;gt;tools\prebuild&amp;lt;/code&amp;gt;. This scripts sets all read-only attributes for necessary stuff and makes 16-bit stuff workable for x64 environments.&lt;br /&gt;
If you want to have official builds, append &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument. This argument is modified and removed &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; argument, which previously checked build machine for eligibility of building official builds. &amp;lt;code&amp;gt;official&amp;lt;/code&amp;gt; argument sets necessary values for official build independently of your machine eligibility, because of it&#039;s moot behavior and requirement to be connected into legacy build servers.&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
Start to build via &amp;lt;code&amp;gt;build /cZP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (which is alias to first, so doesn&#039;t matter). &#039;&#039;&#039;Important:&#039;&#039;&#039; Build.exe doesn&#039;t seem to play well when building with many (up to 8) threads. If your build machine has more than that it&#039;s recommended to cap it to 8 threads maximum via the &amp;lt;code&amp;gt;-M 8&amp;lt;/code&amp;gt; switch, added to the build command (eg. &amp;lt;code&amp;gt;build /cZP -M 8&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;bcz -M 8&amp;lt;/code&amp;gt;). Use 8 threads if your host/virtual machine CPU have allocated 8 cores (or less). More than 8 threads build may lead to unforeseen behavior, such as inconsistent linkage and invalid generation of pieces of code, since some build programs were written back at time when CPUs should be limited in order to preserve proper frequency.&lt;br /&gt;
&lt;br /&gt;
As an alternative, you can use &amp;lt;code&amp;gt;tools\buildx.cmd&amp;lt;/code&amp;gt; script, which allows to build not only retail (fre) and debug (checked, or chk) builds, but also profile and meter builds, additionally by disabling compiler optimizations and specifically building for AMD64/IA64 architectures. The purpose of profile and meter builds is in investigations, as of time of guide enhancement.&lt;br /&gt;
&lt;br /&gt;
=== Post-build ===&lt;br /&gt;
&lt;br /&gt;
* Download the Missing Binaries pack from OpenXP Download Center, which contains missing binaries both for AMD64 and x86 builds.&lt;br /&gt;
* Extract the contents of the binaries folder for the build type you&#039;re building into your build trees binaries folder (e.g. &amp;lt;code&amp;gt;D:\binaries.x86fre&amp;lt;/code&amp;gt;, should have been created during the build), the 7z should contain files for all SKUs (uses &amp;lt;code&amp;gt;pidgen.dll&amp;lt;/code&amp;gt; from Win2003 Enterprise, so your builds should accept Enterprise product keys), &#039;&#039;&#039;When asked during extraction to overwrite folders select &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;, but when asked to overwrite files, make sure to select &amp;lt;code&amp;gt;No&amp;lt;/code&amp;gt;!&#039;&#039;&#039;&lt;br /&gt;
* Inside the razzle window run &amp;lt;code&amp;gt;tools\postbuild&amp;lt;/code&amp;gt;. You can use &amp;lt;code&amp;gt;-sku:{sku}&amp;lt;/code&amp;gt; if you want to process only specific one (no brackets!), expect &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors, if you haven&#039;t extracted missing binaries from &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt;. If you have a wish to do a full post-build, append &amp;lt;code&amp;gt;-full&amp;lt;/code&amp;gt; argument&lt;br /&gt;
&lt;br /&gt;
==== Issues ====&lt;br /&gt;
&lt;br /&gt;
* Once post-build has finished, assuming you used the &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; file above and followed the guide properly, it should have hopefully succeeded without errors, and there shouldn&#039;t be any &amp;lt;code&amp;gt;binaries.x86fre\build_logs\postbuild.err&amp;lt;/code&amp;gt; file!&lt;br /&gt;
* Otherwise take a look inside the &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; - most messages in here are negligible, but if you see &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors associated with the edition you want to use, you may need to re-run &amp;lt;code&amp;gt;tools\missing.cmd&amp;lt;/code&amp;gt;, or extract &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; again.&lt;br /&gt;
* If &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; contains messages like &amp;lt;code&amp;gt;(crypto.cmd) ERROR&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;(ntsign.cmd) ERROR&amp;lt;/code&amp;gt; try re-importing the &amp;lt;code&amp;gt;tools\driver.pfx&amp;lt;/code&amp;gt; key-file (double-click it, press Next through the prompts, password is empty), and make sure your system date is set to the current date.&lt;br /&gt;
* If postbuild.err has filechk errors about missing &amp;lt;code&amp;gt;hwcomp.dat&amp;lt;/code&amp;gt; files, try copying the following into a batch script and run it in a razzle prompt (after using postbuild once already)&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\pro\i386 -o:%_NTPOSTBLD%\.\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\per\i386 -o:%_NTPOSTBLD%\perinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\bla\i386 -o:%_NTPOSTBLD%\blainf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\sbs\i386 -o:%_NTPOSTBLD%\sbsinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\srv\i386 -o:%_NTPOSTBLD%\srvinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\ads\i386 -o:%_NTPOSTBLD%\entinf\hwcomp.dat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating ISO files ===&lt;br /&gt;
Execute &amp;lt;code&amp;gt;tools\oscdimg {sku} [destination-file (optional)]&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;{sku}&amp;lt;/code&amp;gt; is one of:&lt;br /&gt;
* &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; - Windows Server 2003 Standard Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs&amp;lt;/code&amp;gt; - Windows Server 2003 Small Business Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;ads&amp;lt;/code&amp;gt; - Windows Server 2003 Enterprise Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;dtc&amp;lt;/code&amp;gt; - Windows Server 2003 Datacenter Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;bla&amp;lt;/code&amp;gt; - Windows Server 2003 Web Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;per&amp;lt;/code&amp;gt; - Windows XP Home Edition&lt;br /&gt;
* &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; - Windows XP Professional&lt;br /&gt;
* &amp;lt;code&amp;gt;winpe&amp;lt;/code&amp;gt; - Windows Preinstallation Environment&lt;br /&gt;
ISO will be saved to &amp;lt;code&amp;gt;{build-drive}\{build-tag}_{sku}.iso&amp;lt;/code&amp;gt;, unless &amp;lt;code&amp;gt;[destination-file]&amp;lt;/code&amp;gt; is provided as a parameter.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get any problems during the build hopefully your problem might be answered in our Discord server, by lurking &lt;br /&gt;
&lt;br /&gt;
====== Certificate Import Wizard: An internal error occurred... ======&lt;br /&gt;
It&#039;s likely your PFX certificate isn&#039;t generated properly and you need to regenerate them. For that you should follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Check out the &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; and install from there &amp;lt;code&amp;gt;MSYS 1.0.11.exe&amp;lt;/code&amp;gt;, then hop up into your architecture folder (x32 or x64) and install &amp;lt;code&amp;gt;VC_redist&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;OpenSSL&amp;lt;/code&amp;gt;. Make sure OpenSSL is in your path (cause installer doesn&#039;t set it by default).&lt;br /&gt;
* Download the zip or do a &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; of CertUtil repository, or regenerate them using the original guide.&lt;br /&gt;
* Open MSYS and switch to directory where you extracted/cloned the repo.&lt;br /&gt;
* Attach all attributes via &amp;lt;code&amp;gt;chmod -r 0777 *&amp;lt;/code&amp;gt; and convert .sh to UNIX format with &amp;lt;code&amp;gt;dos2unix *.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;./generate.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the files from &amp;lt;code&amp;gt;srv03rtm.certs&amp;lt;/code&amp;gt; into source code tree (&amp;lt;code&amp;gt;D:\srv03rtm&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== After running razzle it shows a bunch of errors, &amp;quot;tfindcer not recognized&amp;quot; etc ======&lt;br /&gt;
You&#039;re likely on a 64-bit system but running &amp;lt;code&amp;gt;razzle.cmd&amp;lt;/code&amp;gt; directly, you should use &amp;lt;code&amp;gt;razzle64.cmd&amp;lt;/code&amp;gt; instead, this&#039;ll set things up so that razzle will use the correct tools for you. Hopefully with that the &amp;lt;code&amp;gt;tfindcer not recognized&amp;lt;/code&amp;gt; &amp;amp; other errors should go away.&lt;br /&gt;
&lt;br /&gt;
====== After a full build I get 1000+ errors, build.err has &amp;lt;code&amp;gt;has bad storage class&amp;lt;/code&amp;gt; errors inside ======&lt;br /&gt;
Seems to be caused by your locale, this is reported to happen with Simplified Chinese language, but can probably happen with other languages too.&lt;br /&gt;
&lt;br /&gt;
Besides changing your locale/language settings, you could also try editing the source files to remove the characters that cause problems, an anon posted a list of the files that need changes here&lt;br /&gt;
&lt;br /&gt;
====== I get a &amp;lt;code&amp;gt;TAPI.RES&amp;lt;/code&amp;gt; error during the build. ======&lt;br /&gt;
Try moving your source code folder closer to the root of the drive, ideally it should only be one folder up from the drive root (eg. &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== On Windows 7 and later I get NTVDM crashes while building ======&lt;br /&gt;
All NTVDM errors should have hopefully been solved in the v8 release of this guide/ZIP, but if you still run into any NTVDM error a copy of your build.log file would help a lot to figure out what caused it, if you ZIP that up and post in the thread hopefully we can figure something out. We consider to build code on Windows 10 build 1809 or newer, or use operating systems up to Windows Vista.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Kernel debugging can be enabled by editing the &amp;lt;code&amp;gt;C:\boot.ini&amp;lt;/code&amp;gt; file in your installed build, and adding &amp;lt;code&amp;gt;/debug /debugport=COM1 /baudrate=115200&amp;lt;/code&amp;gt; to the end of a config line.&lt;br /&gt;
&lt;br /&gt;
For example here&#039;s a &amp;lt;code&amp;gt;boot.ini&amp;lt;/code&amp;gt; with two choices, one with debugging &amp;amp; one without, with this NTLDR will show an OS boot choice menu at startup:&amp;lt;blockquote&amp;gt;[boot loader]&lt;br /&gt;
&lt;br /&gt;
timeout=30&lt;br /&gt;
&lt;br /&gt;
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;
&lt;br /&gt;
[operating systems]&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect /debug /debugport=COM1 /baudrate=115200&amp;lt;/blockquote&amp;gt;(even though they&#039;re named the same &amp;lt;code&amp;gt;Windows Server 2003, Enterprise&amp;lt;/code&amp;gt;, NTLDR will add a &amp;lt;code&amp;gt;[debugger enabled]&amp;lt;/code&amp;gt; tag to it on the OS selection menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chk (checked)&amp;lt;/code&amp;gt; builds are preferred for debugging as they enable asserts &amp;amp; debug messages, though &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt; will run a lot slower than &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds. &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds can also be debugged fine, but usually with a lot less debug output.&lt;br /&gt;
&lt;br /&gt;
Ideally you should also configure WinDbg to use the &amp;lt;code&amp;gt;binaries.{buildtype}\symbols.pri\retail&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;binaries.{buildtype}\symbols\retail&amp;lt;/code&amp;gt; symbols folders too, if WinDbg is running on the same machine that compiled the build it should then also be able to do source-level debugging against the actual source files.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using a VM to host your build on you&#039;ll have to pass-through the emulated COM port over to a pipe somehow, for WinDbg/KD/IDA/etc to make use of.&lt;br /&gt;
&lt;br /&gt;
There is apparently a way to get KDNET working on 2003 too (see &amp;lt;nowiki&amp;gt;https://github.com/MovAX0xDEAD/KDNET&amp;lt;/nowiki&amp;gt;), but this is as-of-yet untested with our builds, seems like it should have support for VMware&#039;s emulated network hardware at least.&lt;br /&gt;
&lt;br /&gt;
(TODO: add more VM guides here... if anyone wants to post one in the thread I&#039;m happy to add it here)&lt;br /&gt;
&lt;br /&gt;
=== VMware setup ===&lt;br /&gt;
&lt;br /&gt;
* For a VMware VM, just open the VM hardware options, &#039;&#039;&#039;remove the printer hardware&#039;&#039;&#039;, then click &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; and choose &amp;lt;code&amp;gt;Serial Port&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In the serial-port config panel, set it to &amp;lt;code&amp;gt;Use named pipe&amp;lt;/code&amp;gt;, and enter a pipe name into the textbox, eg. &amp;lt;code&amp;gt;\\.\pipe\vm&amp;lt;/code&amp;gt;. The pipe should be setup as &amp;lt;code&amp;gt;This end is the server&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;The other end is a virtual machine&amp;lt;/code&amp;gt;.&lt;br /&gt;
* It&#039;s apparently recommended to use the &amp;lt;code&amp;gt;Yield CPU on poll&amp;lt;/code&amp;gt; option, but I&#039;ve had success without it, it&#039;s up to you.&lt;br /&gt;
* With that setup now just open WinDbg, choose &amp;lt;code&amp;gt;Attach to kernel&amp;lt;/code&amp;gt;, open the &amp;lt;code&amp;gt;COM&amp;lt;/code&amp;gt; tab and enter the baud-rate and pipe name you selected for your VM, then hit OK.&lt;br /&gt;
* Now WinDbg should start with &amp;lt;code&amp;gt;Waiting for reconnect&amp;lt;/code&amp;gt; text showing, and hopefully when you next boot up your VM it&#039;ll connect up to WinDbg by itself.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Setup/Installation ===&lt;br /&gt;
A debugger can be attached to setup by pressing F8 at the right time - for text-mode setup the right time is when asked &amp;lt;code&amp;gt;Press F6 if you need to install a third party SCSI or RAID driver&amp;lt;/code&amp;gt;, spamming it while that message is showing should make it connect to COM1 with 19200 baud-rate (debug options can be changed inside &amp;lt;code&amp;gt;txtsetup.sif&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;SetupDebugOptions&amp;lt;/code&amp;gt; line specifies options to apply when F8 is pressed). After debug connection is made it might take a couple extra minutes for it to pass the &amp;lt;code&amp;gt;Setup is starting Windows&amp;lt;/code&amp;gt; stage.&lt;br /&gt;
&lt;br /&gt;
Similarly, GUI setup can be debugged by pressing F8 before the Windows bootloader starts (progress bar etc), this should bring up a menu with options for &amp;lt;code&amp;gt;Safe Mode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt;, etc. Choosing &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; will make it attach to COM1 before starting setup, again at 19200 baudrate.&lt;br /&gt;
&lt;br /&gt;
=== Changing default baudrate ===&lt;br /&gt;
The default 19200 baudrate can be changed by editing the &amp;lt;code&amp;gt;base\boot\kdcom\xxkdsup.c&amp;lt;/code&amp;gt; file, search for &amp;lt;code&amp;gt;BD_19200&amp;lt;/code&amp;gt; inside there and change it to e.g. &amp;lt;code&amp;gt;BD_115200&amp;lt;/code&amp;gt;, now it should use that by default without needing any &amp;lt;code&amp;gt;/baudrate&amp;lt;/code&amp;gt; parameter, or eg. when using &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; from the boot options menu.&lt;br /&gt;
&lt;br /&gt;
=== Un-filtering kernel messages ===&lt;br /&gt;
Even with a chk build you may notice that the kernel doesn&#039;t seem to output much over KD, this seems to be because most of the kernel components use &amp;lt;code&amp;gt;KdPrintEx&amp;lt;/code&amp;gt;, which allows filtering KD messages to certain components (although MS&#039;s docs seem to suggest KdPrintEx filtering was only used in Vista, it does seem that 2003 makes use of it too)&lt;br /&gt;
&lt;br /&gt;
To enable components you&#039;ll need to open the registry of your installed build to the following key (or create it if it doesn&#039;t exist)&amp;lt;blockquote&amp;gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter&amp;lt;/blockquote&amp;gt;Then create a DWORD value named the component you want to enable (eg. &amp;lt;code&amp;gt;LDR&amp;lt;/code&amp;gt;), and set the value to hexadecimal &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A list of the component registry names can be found inside &amp;lt;code&amp;gt;base\published\obj\i386\dpfiltercm.c&amp;lt;/code&amp;gt; after a build. This also contains the symbol names for the component (eg. &amp;lt;code&amp;gt;Kd_LDR_Mask&amp;lt;/code&amp;gt;), which can be set directly through WinDbg/KD via the symbol name. (eg. &amp;lt;code&amp;gt;ed nt!Kd_LDR_Mask 0xFFFFFFFF&amp;lt;/code&amp;gt;, with symbols loaded this should set the LDR components filter value in real-time)&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; components value (default &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) is added to every components value, essentially making &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; the default value for all components - so setting this to &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt; should make every component print to KD. You&#039;ll get a ton more debug output from this, but all the KD prints will likely slow down the system a lot (unfortunately it doesn&#039;t seem possible to disable a component when using WIN2000 to enable them all)&lt;br /&gt;
&lt;br /&gt;
If you need to enable components before your build is installed (eg. kernel is having problems before setup is completed), you&#039;ll need to edit the &amp;lt;code&amp;gt;mergedcomponents\setupinfs\hivesys.inx&amp;lt;/code&amp;gt; file, anon made a post about that here, though it hasn&#039;t been tried yet afaik.&lt;br /&gt;
&lt;br /&gt;
=== x64 build OS support ===&lt;br /&gt;
prepatched.zip v9 adds support for using x64 build OS&#039;s such as Win10 x64, this is done by wrapping certain 16-bit tools using &amp;lt;code&amp;gt;MS-DOS Player&amp;lt;/code&amp;gt;, using .bat files to redirect calls to use the player, changing some makefiles to use 32-bit equivalents, etc.&lt;br /&gt;
&lt;br /&gt;
Unfortunately some of the wrapped 16-bit tools can still randomly error without rhyme or reason for it, as a workaround the .bat files of the worst offenders will give it 5 attempts before failing, hopefully this should be enough to allow builds to complete fine, but there&#039;s still a chance one of the other 16-bit tools could error too... maybe in future I&#039;ll apply this 5-attempts bandaid over all the 16-bit tools.&lt;br /&gt;
&lt;br /&gt;
Huge thanks to the anon who initially worked on fixing the 16-bit tools over at &amp;lt;nowiki&amp;gt;https://rentry.co/16bit-msbuild&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
=== amd64 build support ===&lt;br /&gt;
As of update v10 an amd64 build can be created by initialising razzle with the &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; options, the build should mostly complete without errors, but note that postbuild+ hasn&#039;t been updated at all to work properly with amd64 yet.&lt;br /&gt;
&lt;br /&gt;
Unfortunately as the leak didn&#039;t come with exinit.obj/systime.obj for amd64 these need to be built from anon&#039;s decompilations instead. v10a adds newer exinit.c/systime.c decompilations that are apparently an exact match to the x86 .obj files included in the leak, hopefully these should work well with other architectures too.&lt;br /&gt;
&lt;br /&gt;
Some anons have been slowly working on amd64, being able to get past text-mode setup and start booting GUI-mode setup, though sadly as of this release nobody has been able to actually get GUI mode to fully start up.&lt;br /&gt;
&lt;br /&gt;
Note that this source code is from around ~2 years before amd64 was officially released by MS as Server2003 SP1, so there&#039;s likely a lot missing. (WRK may have some newer kernel-mode parts, being both based on SP1 and including support for amd64, though note that WRK also has many things removed too...)&lt;br /&gt;
&lt;br /&gt;
However there&#039;s also many indications in the leak that MS did have amd64 running at this point, so it should eventually be possible for us to get it working too.&lt;br /&gt;
&lt;br /&gt;
=== Timebomb ===&lt;br /&gt;
&lt;br /&gt;
* Time can be adjusted by editing &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; variable inside &amp;lt;code&amp;gt;\tools\postbuildscripts\timebomb.cmd&amp;lt;/code&amp;gt; (line 44)&lt;br /&gt;
* Setting &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will disable the timebomb.&lt;br /&gt;
* Only certain &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; parameters are valid (0, 5, 15, 30, 60, 90, 120, 150, 180, 240, 360, 444)&lt;br /&gt;
&lt;br /&gt;
=== Different build options ===&lt;br /&gt;
You can modify your razzle shortcut (or execute it manually inside your source folder) to include (or remove) additional argument(s):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; - build &#039;free&#039; bits (production, omitting it will generated checked bits)&lt;br /&gt;
* &amp;lt;code&amp;gt;chkkernel&amp;lt;/code&amp;gt; - build &#039;checked&#039; (testing) kernel/hal/ntdll when building &#039;free&#039; bits&lt;br /&gt;
* &amp;lt;code&amp;gt;no_opts&amp;lt;/code&amp;gt; - disable binary optimization (useful for debugging, but will most likely fail a full build, some code can&#039;t be built without optimization)&lt;br /&gt;
* &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt; - enable verbose output of the build process&lt;br /&gt;
* &amp;lt;code&amp;gt;binaries_dir &amp;lt;basepath&amp;gt;&amp;lt;/code&amp;gt; - specifies custom output directory (default is &amp;lt;code&amp;gt;binaries&amp;lt;/code&amp;gt;, the suffix added after &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; is non-customizable)&lt;br /&gt;
* &amp;lt;code&amp;gt;officialbuild&amp;lt;/code&amp;gt; - sets razzle to build this as an &amp;quot;official&amp;quot; build, requires updating BuildMachines.txt, see the section below&lt;br /&gt;
* &amp;lt;code&amp;gt;win64&amp;lt;/code&amp;gt; - builds for Intel Itanium-64 machines&lt;br /&gt;
* &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; - builds for amd64 instead of x86, see &amp;lt;code&amp;gt;amd64 build support&amp;lt;/code&amp;gt; section above&lt;br /&gt;
* &amp;lt;code&amp;gt;pocketpc&amp;lt;/code&amp;gt; - builds for ARMv4 targets. Currently there are no any supportive headers and libraries for AMD clients, and work is undergoing.&lt;br /&gt;
&lt;br /&gt;
Other options are not described here, see &amp;lt;code&amp;gt;razzle.cmd /?&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
=== &#039;OfficialBuild&#039; parameter / BuildMachines.txt ===&lt;br /&gt;
The &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; razzle parameter changes a few things in the build, which will make it match up closer to the retail builds, should be useful if you need to compare against retail for any reason.&lt;br /&gt;
&lt;br /&gt;
For a list of things affected by the OfficialBuild parameter see &amp;lt;nowiki&amp;gt;https://pastebin.com/VgVph3Xv&amp;lt;/nowiki&amp;gt; &amp;amp; &amp;lt;nowiki&amp;gt;https://pastebin.com/gYzWGLM5&amp;lt;/nowiki&amp;gt;, thanks to the anon that compiled them! (note that these aren&#039;t complete lists, and not all things mentioned here are guaranteed to take effect).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;However, using this parameter requires a file to be updated with info about your build machine first!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An easy way to update the file required is to run the following command inside a razzle window, at the root of the source tree:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;echo %COMPUTERNAME%,primary,%_BuildBranch%,%_BuildArch%,%_BuildType%,ntblus &amp;gt;&amp;gt; tools\BuildMachines.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you can run &amp;lt;code&amp;gt;tools\verifybuildmachine&amp;lt;/code&amp;gt; to make sure it was setup correctly, if there&#039;s any problem an error message will show, otherwise the command will return without any message.&lt;br /&gt;
&lt;br /&gt;
With that in place you should now be able to use the &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; parameter next time you init razzle, eg. &amp;lt;code&amp;gt;tools\razzle.cmd free offline officialbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some small notes to be aware of:&lt;br /&gt;
&lt;br /&gt;
* if you change build arch or build type (eg. to amd64, or to a checked build) you&#039;ll need to run the echo command again to add your machine for that build arch/type combination&lt;br /&gt;
* if you see &amp;lt;code&amp;gt;Clearing OFFICIAL_BUILD_MACHINE variable&amp;lt;/code&amp;gt; after initializing razzle, rerun the echo command and then close down/re-initalize razzle again, else the build won&#039;t properly count itself as official.&lt;br /&gt;
&lt;br /&gt;
=== Building specific components ===&lt;br /&gt;
Most components can be built seperately. For example, if you wish to rebuild &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; component, perform these steps:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cd base\ntos&amp;lt;/code&amp;gt; (you can also use &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; alias that razzle has set up for you)&lt;br /&gt;
* &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (alias for &amp;lt;code&amp;gt;build /cPZ&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Generally &amp;lt;code&amp;gt;postbuild.cmd&amp;lt;/code&amp;gt; is clever enough to include your changes properly without needing fresh build as it uses &amp;lt;code&amp;gt;bindiff&amp;lt;/code&amp;gt; to find differences.&lt;br /&gt;
&lt;br /&gt;
=== Generating new build number/name ===&lt;br /&gt;
Version information is stored in &amp;lt;code&amp;gt;\public\sdk\inc\ntverp.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;m0 set_builddate set_buildnum set_buildname&amp;lt;/code&amp;gt; to generate new build name quickly.&lt;br /&gt;
&lt;br /&gt;
=== Original CD filenames ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-standard_retail_en-us-NRMSFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: A600409482A5678EF6AF2B26D3576D6D9894178D)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-datacenter_retail_en-us-NRMDOEM_EN.iso&amp;lt;/code&amp;gt; (SHA1: E2B47A7CE45C6C6305594CEE4C1B64894805AAF4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-enterpriseserver_retail_en-us-NRMEFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 0309FFB4181BA5122C692A6E1079E9FC1D53FCE4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-webserver_retail_en-us-NRMWFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 46C1CCB2CFC96803E304A35BEF50CD71B2C1DE38)&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs.iso&amp;lt;/code&amp;gt; (converted from mdf; SHA1: CDB30C80FDE314C16CA11F5CD31650ECBEC7A214)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86chk_server-enterpriseserver_retail_en-us-NRMECHK_EN.iso&amp;lt;/code&amp;gt; (SHA1: EEF5F921CC8FC20FB29A862E1E132359E0D151BB)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64fre_server-enterprise_retail_en-us-ARMEXFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 076EDCF017EDE0B2D0D8067FA52CF3D44EEEF79A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64chk_server-enterprise_retail_en-us-AX2EXCFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 8916DFBB1D93A9CECB1FE8600BE2E2C752E85E7F)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-home_retail_en-us-WXHFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: B273C8D41E3844E3E46722F52F5A4CF9F206C8D0)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 1400DED4402D50F3864ED3D8DCF5CC52BA79A04A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86chk_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 017F10E4555D1A9280874B9B0243442F045F1B2D)&lt;br /&gt;
&lt;br /&gt;
=== Product keys ===&lt;br /&gt;
&lt;br /&gt;
* Evaluation (for all editions, if you set a timebomb. Default it set to 360 days):&lt;br /&gt;
** &amp;lt;code&amp;gt;99999-99999-99999-99999-99999&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DDDDD-DDDDD-DDDDD-DDDDD-DDDDD&amp;lt;/code&amp;gt;&lt;br /&gt;
* Standard Edition: &amp;lt;code&amp;gt;M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition: &amp;lt;code&amp;gt;QW32K-48T2T-3D2PJ-DXBWY-C6WRJ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition (x64): &amp;lt;code&amp;gt;KK2WD-BFYJ6-77X87-8TRBF-9B343&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Build&amp;diff=49</id>
		<title>Build</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Build&amp;diff=49"/>
		<updated>2025-08-19T17:21:06Z</updated>

		<summary type="html">&lt;p&gt;Ashific: buildX&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide tested under Windows XP, 7 SP1, 8.1 &amp;amp; 10 x86/x64, results may vary under other operating systems (if you will copy/paste source code at many times). For legacy version of the guide visit [https://rentry.co/build-win2k3 build-win2k3].&lt;br /&gt;
&lt;br /&gt;
== Preparing for Build ==&lt;br /&gt;
&lt;br /&gt;
* Disable any AV (and Windows Defender) before extracting and building, as both of those actions create a lot of new files, and AV scans for execution of them all - this also counts for any other tools that monitor files, such as voidtools&#039; Everything, but they aren&#039;t impacting much as your antivirus does.&lt;br /&gt;
* Also disable User Account Control. This can be accomplished via Control Panel, or via Registry Key: navigate to &amp;lt;code&amp;gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;EnableLUA&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Some versions may require restart after registry apply.&lt;br /&gt;
* Extract source tree to a folder named &amp;lt;code&amp;gt;srv03rtm&amp;lt;/code&amp;gt; on the root of a drive, drive letter doesn&#039;t seem to matter (just don&#039;t use C:\ drive as that has some extra security). It is recommended to use &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt; as the path to match RTM binaries.&lt;br /&gt;
&lt;br /&gt;
=== For 2000/XP/2003 Users ===&lt;br /&gt;
Before initializing Razzle, it&#039;s mandatory to install .NET Framework 1.1, because without it Razzle will fail to initialize environment normally (despite that two versions of .NET 1.1 are included in &amp;lt;code&amp;gt;tools\x86&amp;lt;/code&amp;gt;). The installer is included at &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Running environment ===&lt;br /&gt;
&lt;br /&gt;
* Run command-prompt as administrator (can usually be done by typing &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; into start menu, right click &amp;lt;code&amp;gt;Command Prompt&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Run as administrator&amp;lt;/code&amp;gt;)&lt;br /&gt;
* In the command-prompt, change to the source folder: &amp;lt;code&amp;gt;cd /d D:\srv03rtm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Now start razzle: &amp;lt;code&amp;gt;tools\razzle.cmd free offline&amp;lt;/code&amp;gt; for 32-bit clients, and &amp;lt;code&amp;gt;tools\razzle64.cmd free offline&amp;lt;/code&amp;gt; for 64-bits. This initiates retail build of x86. The first time you run razzle inside that copy of the source code it&#039;ll need to initialize a few things, give it a few minutes, after a while a Notepad window will appear - make sure to close this for the initialization to continue.&lt;br /&gt;
* &#039;&#039;&#039;Important for first time!&#039;&#039;&#039; Run the prebuild script, if you&#039;re initiating source code for first time: &amp;lt;code&amp;gt;tools\prebuild&amp;lt;/code&amp;gt;. This scripts sets all read-only attributes for necessary stuff and makes 16-bit stuff workable for x64 environments.&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
Start to build via &amp;lt;code&amp;gt;build /cZP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (which is alias to first, so doesn&#039;t matter). &#039;&#039;&#039;Important:&#039;&#039;&#039; Build.exe doesn&#039;t seem to play well when building with many (up to 8) threads. If your build machine has more than that it&#039;s recommended to cap it to 8 threads maximum via the &amp;lt;code&amp;gt;-M 8&amp;lt;/code&amp;gt; switch, added to the build command (eg. &amp;lt;code&amp;gt;build /cZP -M 8&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;bcz -M 8&amp;lt;/code&amp;gt;). Use 8 threads if your host/virtual machine CPU have allocated 8 cores (or less). More than 8 threads build may lead to unforeseen behavior, such as inconsistent linkage and invalid generation of pieces of code, since some build programs were written back at time when CPUs should be limited in order to preserve proper frequency.&lt;br /&gt;
&lt;br /&gt;
As an alternative, you can use &amp;lt;code&amp;gt;tools\buildx.cmd&amp;lt;/code&amp;gt; script, which allows to build not only retail (fre) and debug (checked, or chk) builds, but also profile and meter builds, additionally by disabling compiler optimizations and specifically building for AMD64/IA64 architectures. The purpose of profile and meter builds is in investigations, as of time of guide enhancement.&lt;br /&gt;
&lt;br /&gt;
=== Post-build ===&lt;br /&gt;
&lt;br /&gt;
* Download the Missing Binaries pack, which contains missing binaries both for AMD64 and x86 builds.&lt;br /&gt;
* From that 7z, extract the contents of the binaries folder for the build type you&#039;re building into your build trees binaries folder (eg. &amp;lt;code&amp;gt;D:\binaries.x86fre&amp;lt;/code&amp;gt;, should have been created during the build), the 7z should contain files for all SKUs (uses pidgen.dll from Win2003 Enterprise, so your builds should accept Enterprise product keys), &#039;&#039;&#039;When asked during extraction to overwrite folders select &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;, but when asked to overwrite files, make sure to select &amp;lt;code&amp;gt;No&amp;lt;/code&amp;gt;!&#039;&#039;&#039;&lt;br /&gt;
* Inside the razzle window run &amp;lt;code&amp;gt;tools\postbuild&amp;lt;/code&amp;gt; (use &amp;lt;code&amp;gt;-sku:{sku}&amp;lt;/code&amp;gt; if you want to process only specific one (no brackets!), expect &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors if you ignore this and didn&#039;t use missing.7z / missing.cmd with every sku). For first time you can use &amp;lt;code&amp;gt;tools\postbuild -full&amp;lt;/code&amp;gt;, altrough it isn&#039;t necessary.&lt;br /&gt;
&lt;br /&gt;
==== Issues ====&lt;br /&gt;
&lt;br /&gt;
* Once postbuild has finished, assuming you used the &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; file above and followed the guide properly, it should have hopefully succeeded without errors, and there shouldn&#039;t be any &amp;lt;code&amp;gt;binaries.x86fre\build_logs\postbuild.err&amp;lt;/code&amp;gt; file!&lt;br /&gt;
* Otherwise take a look inside the &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; - most messages in here are negligible, but if you see &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors associated with the edition you want to use, you may need to re-run &amp;lt;code&amp;gt;tools\missing.cmd&amp;lt;/code&amp;gt;, or extract &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; again.&lt;br /&gt;
* If &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; contains messages like &amp;lt;code&amp;gt;(crypto.cmd) ERROR&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;(ntsign.cmd) ERROR&amp;lt;/code&amp;gt; try re-importing the &amp;lt;code&amp;gt;tools\driver.pfx&amp;lt;/code&amp;gt; key-file (double-click it, press Next through the prompts, password is empty), and make sure your system date is set to the current date.&lt;br /&gt;
* If postbuild.err has filechk errors about missing &amp;lt;code&amp;gt;hwcomp.dat&amp;lt;/code&amp;gt; files, try copying the following into a batch script and run it in a razzle prompt (after using postbuild once already)&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\pro\i386 -o:%_NTPOSTBLD%\.\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\per\i386 -o:%_NTPOSTBLD%\perinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\bla\i386 -o:%_NTPOSTBLD%\blainf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\sbs\i386 -o:%_NTPOSTBLD%\sbsinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\srv\i386 -o:%_NTPOSTBLD%\srvinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\ads\i386 -o:%_NTPOSTBLD%\entinf\hwcomp.dat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating ISO files ===&lt;br /&gt;
&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;tools\oscdimg {sku} [destination-file (optional)]&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;{sku}&amp;lt;/code&amp;gt; is one of:&lt;br /&gt;
** &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; - Windows Server 2003 Standard Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;sbs&amp;lt;/code&amp;gt; - Windows Server 2003 Small Business Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;ads&amp;lt;/code&amp;gt; - Windows Server 2003 Enterprise Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;dtc&amp;lt;/code&amp;gt; - Windows Server 2003 Datacenter Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;bla&amp;lt;/code&amp;gt; - Windows Server 2003 Web Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;per&amp;lt;/code&amp;gt; - Windows XP Home Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; - Windows XP Professional&lt;br /&gt;
** &amp;lt;code&amp;gt;winpe&amp;lt;/code&amp;gt; - Windows Preinstallation Environment&lt;br /&gt;
* ISO will be saved to &amp;lt;code&amp;gt;{build-drive}\{build-tag}_{sku}.iso&amp;lt;/code&amp;gt;, unless &amp;lt;code&amp;gt;[destination-file]&amp;lt;/code&amp;gt; is provided as a parameter.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get any problems during the build hopefully your problem might be answered here, if it&#039;s not feel free to post in the thread.&lt;br /&gt;
&lt;br /&gt;
====== Certificate Import Wizard: An internal error occurred... ======&lt;br /&gt;
It&#039;s likely your PFX certificate isn&#039;t generated properly and you need to regenerate them. For that you should follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Check out the &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; and install from there &amp;lt;code&amp;gt;MSYS 1.0.11.exe&amp;lt;/code&amp;gt;, then hop up into your architecture folder (x32 or x64) and install &amp;lt;code&amp;gt;VC_redist&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;OpenSSL&amp;lt;/code&amp;gt;. Make sure OpenSSL is in your path (cause installer doesn&#039;t set it by default).&lt;br /&gt;
* Download the zip or do a &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; of CertUtil repository, or regenerate them using the original guide.&lt;br /&gt;
* Open MSYS and switch to directory where you extracted/cloned the repo.&lt;br /&gt;
* Attach all attributes via &amp;lt;code&amp;gt;chmod -r 0777 *&amp;lt;/code&amp;gt; and convert .sh to UNIX format with &amp;lt;code&amp;gt;dos2unix *.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;./generate.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the files from &amp;lt;code&amp;gt;srv03rtm.certs&amp;lt;/code&amp;gt; into source code tree (&amp;lt;code&amp;gt;D:\srv03rtm&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== After running razzle it shows a bunch of errors, &amp;quot;tfindcer not recognized&amp;quot; etc ======&lt;br /&gt;
You&#039;re likely on a 64-bit system but running &amp;lt;code&amp;gt;razzle.cmd&amp;lt;/code&amp;gt; directly, you should use &amp;lt;code&amp;gt;razzle64.cmd&amp;lt;/code&amp;gt; instead, this&#039;ll set things up so that razzle will use the correct tools for you. Hopefully with that the &amp;lt;code&amp;gt;tfindcer not recognized&amp;lt;/code&amp;gt; &amp;amp; other errors should go away.&lt;br /&gt;
&lt;br /&gt;
====== After a full build I get 1000+ errors, build.err has &amp;lt;code&amp;gt;has bad storage class&amp;lt;/code&amp;gt; errors inside ======&lt;br /&gt;
Seems to be caused by your locale, this is reported to happen with Simplified Chinese language, but can probably happen with other languages too.&lt;br /&gt;
&lt;br /&gt;
Besides changing your locale/language settings, you could also try editing the source files to remove the characters that cause problems, an anon posted a list of the files that need changes here&lt;br /&gt;
&lt;br /&gt;
====== I get a &amp;lt;code&amp;gt;TAPI.RES&amp;lt;/code&amp;gt; error during the build. ======&lt;br /&gt;
Try moving your source code folder closer to the root of the drive, ideally it should only be one folder up from the drive root (eg. &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== On Windows 7 and later I get NTVDM crashes while building ======&lt;br /&gt;
All NTVDM errors should have hopefully been solved in the v8 release of this guide/ZIP, but if you still run into any NTVDM error a copy of your build.log file would help a lot to figure out what caused it, if you ZIP that up and post in the thread hopefully we can figure something out. We consider to build code on Windows 10 build 1809 or newer, or use operating systems up to Windows Vista.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Kernel debugging can be enabled by editing the &amp;lt;code&amp;gt;C:\boot.ini&amp;lt;/code&amp;gt; file in your installed build, and adding &amp;lt;code&amp;gt;/debug /debugport=COM1 /baudrate=115200&amp;lt;/code&amp;gt; to the end of a config line.&lt;br /&gt;
&lt;br /&gt;
For example here&#039;s a boot.ini with two choices, one with debugging &amp;amp; one without, with this NTLDR will show an OS boot choice menu at startup:&amp;lt;blockquote&amp;gt;[boot loader]&lt;br /&gt;
&lt;br /&gt;
timeout=30&lt;br /&gt;
&lt;br /&gt;
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;
&lt;br /&gt;
[operating systems]&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect /debug /debugport=COM1 /baudrate=115200&amp;lt;/blockquote&amp;gt;(even though they&#039;re named the same &amp;lt;code&amp;gt;Windows Server 2003, Enterprise&amp;lt;/code&amp;gt;, NTLDR will add a &amp;lt;code&amp;gt;[debugger enabled]&amp;lt;/code&amp;gt; tag to it on the OS selection menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chk (checked)&amp;lt;/code&amp;gt; builds are preferred for debugging as they enable asserts &amp;amp; debug messages, though &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt; will run a lot slower than &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds. &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds can also be debugged fine, but usually with a lot less debug output.&lt;br /&gt;
&lt;br /&gt;
Ideally you should also configure WinDbg to use the &amp;lt;code&amp;gt;binaries.{buildtype}\symbols.pri\retail&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;binaries.{buildtype}\symbols\retail&amp;lt;/code&amp;gt; symbols folders too, if WinDbg is running on the same machine that compiled the build it should then also be able to do source-level debugging against the actual source files.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using a VM to host your build on you&#039;ll have to pass-through the emulated COM port over to a pipe somehow, for WinDbg/KD/IDA/etc to make use of.&lt;br /&gt;
&lt;br /&gt;
There is apparently a way to get KDNET working on 2003 too (see &amp;lt;nowiki&amp;gt;https://github.com/MovAX0xDEAD/KDNET&amp;lt;/nowiki&amp;gt;), but this is as-of-yet untested with our builds, seems like it should have support for VMware&#039;s emulated network hardware at least.&lt;br /&gt;
&lt;br /&gt;
(TODO: add more VM guides here... if anyone wants to post one in the thread I&#039;m happy to add it here)&lt;br /&gt;
&lt;br /&gt;
=== VMware setup ===&lt;br /&gt;
&lt;br /&gt;
* For a VMware VM, just open the VM hardware options, &#039;&#039;&#039;remove the printer hardware&#039;&#039;&#039;, then click &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; and choose &amp;lt;code&amp;gt;Serial Port&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In the serial-port config panel, set it to &amp;lt;code&amp;gt;Use named pipe&amp;lt;/code&amp;gt;, and enter a pipe name into the textbox, eg. &amp;lt;code&amp;gt;\\.\pipe\vm&amp;lt;/code&amp;gt;. The pipe should be setup as &amp;lt;code&amp;gt;This end is the server&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;The other end is a virtual machine&amp;lt;/code&amp;gt;.&lt;br /&gt;
* It&#039;s apparently recommended to use the &amp;lt;code&amp;gt;Yield CPU on poll&amp;lt;/code&amp;gt; option, but I&#039;ve had success without it, it&#039;s up to you.&lt;br /&gt;
* With that setup now just open WinDbg, choose &amp;lt;code&amp;gt;Attach to kernel&amp;lt;/code&amp;gt;, open the &amp;lt;code&amp;gt;COM&amp;lt;/code&amp;gt; tab and enter the baud-rate and pipe name you selected for your VM, then hit OK.&lt;br /&gt;
* Now WinDbg should start with &amp;lt;code&amp;gt;Waiting for reconnect&amp;lt;/code&amp;gt; text showing, and hopefully when you next boot up your VM it&#039;ll connect up to WinDbg by itself.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Setup/Installation ===&lt;br /&gt;
A debugger can be attached to setup by pressing F8 at the right time - for text-mode setup the right time is when asked &amp;lt;code&amp;gt;Press F6 if you need to install a third party SCSI or RAID driver&amp;lt;/code&amp;gt;, spamming it while that message is showing should make it connect to COM1 with 19200 baud-rate (debug options can be changed inside &amp;lt;code&amp;gt;txtsetup.sif&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;SetupDebugOptions&amp;lt;/code&amp;gt; line specifies options to apply when F8 is pressed). After debug connection is made it might take a couple extra minutes for it to pass the &amp;lt;code&amp;gt;Setup is starting Windows&amp;lt;/code&amp;gt; stage.&lt;br /&gt;
&lt;br /&gt;
Similarly, GUI setup can be debugged by pressing F8 before the Windows bootloader starts (progress bar etc), this should bring up a menu with options for &amp;lt;code&amp;gt;Safe Mode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt;, etc. Choosing &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; will make it attach to COM1 before starting setup, again at 19200 baudrate.&lt;br /&gt;
&lt;br /&gt;
=== Changing default baudrate ===&lt;br /&gt;
The default 19200 baudrate can be changed by editing the &amp;lt;code&amp;gt;base\boot\kdcom\xxkdsup.c&amp;lt;/code&amp;gt; file, search for &amp;lt;code&amp;gt;BD_19200&amp;lt;/code&amp;gt; inside there and change it to e.g. &amp;lt;code&amp;gt;BD_115200&amp;lt;/code&amp;gt;, now it should use that by default without needing any &amp;lt;code&amp;gt;/baudrate&amp;lt;/code&amp;gt; parameter, or eg. when using &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; from the boot options menu.&lt;br /&gt;
&lt;br /&gt;
=== Un-filtering kernel messages ===&lt;br /&gt;
Even with a chk build you may notice that the kernel doesn&#039;t seem to output much over KD, this seems to be because most of the kernel components use &amp;lt;code&amp;gt;KdPrintEx&amp;lt;/code&amp;gt;, which allows filtering KD messages to certain components (although MS&#039;s docs seem to suggest KdPrintEx filtering was only used in Vista, it does seem that 2003 makes use of it too)&lt;br /&gt;
&lt;br /&gt;
To enable components you&#039;ll need to open the registry of your installed build to the following key (or create it if it doesn&#039;t exist)&amp;lt;blockquote&amp;gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter&amp;lt;/blockquote&amp;gt;Then create a DWORD value named the component you want to enable (eg. &amp;lt;code&amp;gt;LDR&amp;lt;/code&amp;gt;), and set the value to hexadecimal &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A list of the component registry names can be found inside &amp;lt;code&amp;gt;base\published\obj\i386\dpfiltercm.c&amp;lt;/code&amp;gt; after a build. This also contains the symbol names for the component (eg. &amp;lt;code&amp;gt;Kd_LDR_Mask&amp;lt;/code&amp;gt;), which can be set directly through WinDbg/KD via the symbol name. (eg. &amp;lt;code&amp;gt;ed nt!Kd_LDR_Mask 0xFFFFFFFF&amp;lt;/code&amp;gt;, with symbols loaded this should set the LDR components filter value in real-time)&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; components value (default &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) is added to every components value, essentially making &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; the default value for all components - so setting this to &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt; should make every component print to KD. You&#039;ll get a ton more debug output from this, but all the KD prints will likely slow down the system a lot (unfortunately it doesn&#039;t seem possible to disable a component when using WIN2000 to enable them all)&lt;br /&gt;
&lt;br /&gt;
If you need to enable components before your build is installed (eg. kernel is having problems before setup is completed), you&#039;ll need to edit the &amp;lt;code&amp;gt;mergedcomponents\setupinfs\hivesys.inx&amp;lt;/code&amp;gt; file, anon made a post about that here, though it hasn&#039;t been tried yet afaik.&lt;br /&gt;
&lt;br /&gt;
=== x64 build OS support ===&lt;br /&gt;
prepatched.zip v9 adds support for using x64 build OS&#039;s such as Win10 x64, this is done by wrapping certain 16-bit tools using &amp;lt;code&amp;gt;MS-DOS Player&amp;lt;/code&amp;gt;, using .bat files to redirect calls to use the player, changing some makefiles to use 32-bit equivalents, etc.&lt;br /&gt;
&lt;br /&gt;
Unfortunately some of the wrapped 16-bit tools can still randomly error without rhyme or reason for it, as a workaround the .bat files of the worst offenders will give it 5 attempts before failing, hopefully this should be enough to allow builds to complete fine, but there&#039;s still a chance one of the other 16-bit tools could error too... maybe in future I&#039;ll apply this 5-attempts bandaid over all the 16-bit tools.&lt;br /&gt;
&lt;br /&gt;
Huge thanks to the anon who initially worked on fixing the 16-bit tools over at &amp;lt;nowiki&amp;gt;https://rentry.co/16bit-msbuild&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
=== amd64 build support ===&lt;br /&gt;
As of update v10 an amd64 build can be created by initialising razzle with the &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; options, the build should mostly complete without errors, but note that postbuild+ hasn&#039;t been updated at all to work properly with amd64 yet.&lt;br /&gt;
&lt;br /&gt;
Unfortunately as the leak didn&#039;t come with exinit.obj/systime.obj for amd64 these need to be built from anon&#039;s decompilations instead. v10a adds newer exinit.c/systime.c decompilations that are apparently an exact match to the x86 .obj files included in the leak, hopefully these should work well with other architectures too.&lt;br /&gt;
&lt;br /&gt;
Some anons have been slowly working on amd64, being able to get past text-mode setup and start booting GUI-mode setup, though sadly as of this release nobody has been able to actually get GUI mode to fully start up.&lt;br /&gt;
&lt;br /&gt;
Note that this source code is from around ~2 years before amd64 was officially released by MS as Server2003 SP1, so there&#039;s likely a lot missing. (WRK may have some newer kernel-mode parts, being both based on SP1 and including support for amd64, though note that WRK also has many things removed too...)&lt;br /&gt;
&lt;br /&gt;
However there&#039;s also many indications in the leak that MS did have amd64 running at this point, so it should eventually be possible for us to get it working too.&lt;br /&gt;
&lt;br /&gt;
=== Timebomb ===&lt;br /&gt;
&lt;br /&gt;
* Time can be adjusted by editing &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; variable inside &amp;lt;code&amp;gt;\tools\postbuildscripts\timebomb.cmd&amp;lt;/code&amp;gt; (line 44)&lt;br /&gt;
* Setting &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will disable the timebomb.&lt;br /&gt;
* Only certain &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; parameters are valid (0, 5, 15, 30, 60, 90, 120, 150, 180, 240, 360, 444)&lt;br /&gt;
&lt;br /&gt;
=== Different build options ===&lt;br /&gt;
You can modify your razzle shortcut (or execute it manually inside your source folder) to include (or remove) additional argument(s):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; - build &#039;free&#039; bits (production, omitting it will generated checked bits)&lt;br /&gt;
* &amp;lt;code&amp;gt;chkkernel&amp;lt;/code&amp;gt; - build &#039;checked&#039; (testing) kernel/hal/ntdll when building &#039;free&#039; bits&lt;br /&gt;
* &amp;lt;code&amp;gt;no_opts&amp;lt;/code&amp;gt; - disable binary optimization (useful for debugging, but will most likely fail a full build, some code can&#039;t be built without optimization)&lt;br /&gt;
* &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt; - enable verbose output of the build process&lt;br /&gt;
* &amp;lt;code&amp;gt;binaries_dir &amp;lt;basepath&amp;gt;&amp;lt;/code&amp;gt; - specifies custom output directory (default is &amp;lt;code&amp;gt;binaries&amp;lt;/code&amp;gt;, the suffix added after &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; is non-customizable)&lt;br /&gt;
* &amp;lt;code&amp;gt;officialbuild&amp;lt;/code&amp;gt; - sets razzle to build this as an &amp;quot;official&amp;quot; build, requires updating BuildMachines.txt, see the section below&lt;br /&gt;
* &amp;lt;code&amp;gt;win64&amp;lt;/code&amp;gt; - builds for Intel Itanium-64 machines&lt;br /&gt;
* &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; - builds for amd64 instead of x86, see &amp;lt;code&amp;gt;amd64 build support&amp;lt;/code&amp;gt; section above&lt;br /&gt;
* &amp;lt;code&amp;gt;pocketpc&amp;lt;/code&amp;gt; - builds for ARMv4 targets. Currently there are no any supportive headers and libraries for AMD clients, and work is undergoing.&lt;br /&gt;
&lt;br /&gt;
Other options are not described here, see &amp;lt;code&amp;gt;razzle.cmd /?&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
=== &#039;OfficialBuild&#039; parameter / BuildMachines.txt ===&lt;br /&gt;
The &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; razzle parameter changes a few things in the build, which will make it match up closer to the retail builds, should be useful if you need to compare against retail for any reason.&lt;br /&gt;
&lt;br /&gt;
For a list of things affected by the OfficialBuild parameter see &amp;lt;nowiki&amp;gt;https://pastebin.com/VgVph3Xv&amp;lt;/nowiki&amp;gt; &amp;amp; &amp;lt;nowiki&amp;gt;https://pastebin.com/gYzWGLM5&amp;lt;/nowiki&amp;gt;, thanks to the anon that compiled them! (note that these aren&#039;t complete lists, and not all things mentioned here are guaranteed to take effect).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;However, using this parameter requires a file to be updated with info about your build machine first!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An easy way to update the file required is to run the following command inside a razzle window, at the root of the source tree:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;echo %COMPUTERNAME%,primary,%_BuildBranch%,%_BuildArch%,%_BuildType%,ntblus &amp;gt;&amp;gt; tools\BuildMachines.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you can run &amp;lt;code&amp;gt;tools\verifybuildmachine&amp;lt;/code&amp;gt; to make sure it was setup correctly, if there&#039;s any problem an error message will show, otherwise the command will return without any message.&lt;br /&gt;
&lt;br /&gt;
With that in place you should now be able to use the &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; parameter next time you init razzle, eg. &amp;lt;code&amp;gt;tools\razzle.cmd free offline officialbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some small notes to be aware of:&lt;br /&gt;
&lt;br /&gt;
* if you change build arch or build type (eg. to amd64, or to a checked build) you&#039;ll need to run the echo command again to add your machine for that build arch/type combination&lt;br /&gt;
* if you see &amp;lt;code&amp;gt;Clearing OFFICIAL_BUILD_MACHINE variable&amp;lt;/code&amp;gt; after initializing razzle, rerun the echo command and then close down/re-initalize razzle again, else the build won&#039;t properly count itself as official.&lt;br /&gt;
&lt;br /&gt;
=== Building specific components ===&lt;br /&gt;
Most components can be built seperately. For example, if you wish to rebuild &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; component, perform these steps:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cd base\ntos&amp;lt;/code&amp;gt; (you can also use &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; alias that razzle has set up for you)&lt;br /&gt;
* &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (alias for &amp;lt;code&amp;gt;build /cPZ&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Generally &amp;lt;code&amp;gt;postbuild.cmd&amp;lt;/code&amp;gt; is clever enough to include your changes properly without needing fresh build as it uses &amp;lt;code&amp;gt;bindiff&amp;lt;/code&amp;gt; to find differences.&lt;br /&gt;
&lt;br /&gt;
=== Generating new build number/name ===&lt;br /&gt;
Version information is stored in &amp;lt;code&amp;gt;\public\sdk\inc\ntverp.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;m0 set_builddate set_buildnum set_buildname&amp;lt;/code&amp;gt; to generate new build name quickly.&lt;br /&gt;
&lt;br /&gt;
=== Original CD filenames ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-standard_retail_en-us-NRMSFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: A600409482A5678EF6AF2B26D3576D6D9894178D)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-datacenter_retail_en-us-NRMDOEM_EN.iso&amp;lt;/code&amp;gt; (SHA1: E2B47A7CE45C6C6305594CEE4C1B64894805AAF4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-enterpriseserver_retail_en-us-NRMEFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 0309FFB4181BA5122C692A6E1079E9FC1D53FCE4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-webserver_retail_en-us-NRMWFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 46C1CCB2CFC96803E304A35BEF50CD71B2C1DE38)&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs.iso&amp;lt;/code&amp;gt; (converted from mdf; SHA1: CDB30C80FDE314C16CA11F5CD31650ECBEC7A214)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86chk_server-enterpriseserver_retail_en-us-NRMECHK_EN.iso&amp;lt;/code&amp;gt; (SHA1: EEF5F921CC8FC20FB29A862E1E132359E0D151BB)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64fre_server-enterprise_retail_en-us-ARMEXFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 076EDCF017EDE0B2D0D8067FA52CF3D44EEEF79A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64chk_server-enterprise_retail_en-us-AX2EXCFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 8916DFBB1D93A9CECB1FE8600BE2E2C752E85E7F)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-home_retail_en-us-WXHFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: B273C8D41E3844E3E46722F52F5A4CF9F206C8D0)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 1400DED4402D50F3864ED3D8DCF5CC52BA79A04A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86chk_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 017F10E4555D1A9280874B9B0243442F045F1B2D)&lt;br /&gt;
&lt;br /&gt;
=== Product keys ===&lt;br /&gt;
&lt;br /&gt;
* Evaluation (for all editions, if you set a timebomb. Default it set to 360 days):&lt;br /&gt;
** &amp;lt;code&amp;gt;99999-99999-99999-99999-99999&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DDDDD-DDDDD-DDDDD-DDDDD-DDDDD&amp;lt;/code&amp;gt;&lt;br /&gt;
* Standard Edition: &amp;lt;code&amp;gt;M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition: &amp;lt;code&amp;gt;QW32K-48T2T-3D2PJ-DXBWY-C6WRJ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition (x64): &amp;lt;code&amp;gt;KK2WD-BFYJ6-77X87-8TRBF-9B343&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=48</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=48"/>
		<updated>2025-08-08T17:17:46Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
* Community&lt;br /&gt;
** https://theopenxp.org|OpenXP Website&lt;br /&gt;
** https://discord.gg/vS4bNfsZgh|Discord&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Sandbox:OpenKernel&amp;diff=46</id>
		<title>Sandbox:OpenKernel</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Sandbox:OpenKernel&amp;diff=46"/>
		<updated>2025-07-28T08:24:52Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Revision|revision=1}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OpenKernel&#039;&#039;&#039; (shortly` &#039;&#039;ONT&#039;&#039;, &#039;&#039;OK&#039;&#039;, longer` &#039;&#039;OpenXP Kernel&#039;&#039;) is a new, upcoming sub-project of [[OpenXP]], intended to gradually replace Windows NT kernel provided in Windows Server 2003 source code tree. In difference of ReactOS, OpenKernel will be intended for more stability, reliability and optimized behavior, in order to be flexible and expandable in modern terms of operating system development.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
OpenKernel is an inspiration of combining original NT kernel with Microsoft&#039;s MinWin project, which is the partial refactor of the first one. Also huge accent will be placed into Linux principles of kernel development, because NT structure is itself great and promising, therefore rewrite of NT kernel is need, to turn NT into a really portable system. The architectural differences in contrary of NT Kernel are following:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;All functionalities into one kernel, instead of multiple ones&#039;&#039;&#039;: this allows to reduce amount of produced binaries, and provide single in-replacement file for &amp;lt;code&amp;gt;ntoskrnl.exe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ntkrnlmp.exe&amp;lt;/code&amp;gt; and it&#039;s siblings, which differ from each other with enabled code of processor-specific features (e.g. PAE extension support or config for multi-processors),&lt;br /&gt;
# &#039;&#039;&#039;Ability to support multiple boot loaders&#039;&#039;&#039;: support will go beyond NTLDR and BOOTMGR, and will include open-source solutions such as GRUB, and will introduce special API to add support for third-party boot loaders, even self-made ones,&lt;br /&gt;
# &#039;&#039;&#039;Less architecture-specific code&#039;&#039;&#039;: instead kernel should also provide HAL-different API for separate architectures, in order to expand/fix architecture-specific culprits, which may be brought up during kernel development,&lt;br /&gt;
# &#039;&#039;&#039;Open Source with GPL license&#039;&#039;&#039;: this kernel will be available for everyone for free and navigated development, and will be expandable for everyone who wants to master OpenKernel.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
Since OpenKernel is planned to be expandable even beyond OpenXP, these following mini-projects will be planned for beyond:&lt;br /&gt;
&lt;br /&gt;
* Unique replacement for MSVCRT, which includes latest C/C++ specifications and features, and will contain lightweight implementations,&lt;br /&gt;
* Enhanced boot loader from 0, like NTLDR but on steroids. Will be shipped as an illustration of boot loader expandable APIs of OpenKernel in action,&lt;br /&gt;
* New HAL architecture, which will support both legacy and proprietary HALs, and will allow everyone to write custom HAL for custom hardware.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Sandbox:OpenKernel&amp;diff=45</id>
		<title>Sandbox:OpenKernel</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Sandbox:OpenKernel&amp;diff=45"/>
		<updated>2025-07-28T06:22:39Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Revision|revision=1}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OpenKernel&#039;&#039;&#039; is a new, upcoming sub-project of [[OpenXP]], intended to gradually replace Windows NT kernel provided in Windows Server 2003 source code tree. In difference of ReactOS, OpenKernel will be intended for more stability, reliability and optimized behavior, in order to be flexible and expandable in modern terms of operating system development.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
OpenKernel is an inspiration of combining original NT kernel with Microsoft&#039;s MinWin project, which is the partial refactor of the first one. Also huge accent will be placed into Linux principles of kernel development, because NT structure is itself great and promising, therefore rewrite of NT kernel is need, to turn NT into a really portable system.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Template:Revision&amp;diff=44</id>
		<title>Template:Revision</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Template:Revision&amp;diff=44"/>
		<updated>2025-07-28T06:22:05Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;&amp;lt;div style=&amp;quot;margin: .5rem 0 .5rem 0; padding: 1rem; background-color: #00000010;&amp;quot;&amp;gt; &amp;#039;&amp;#039;This article is subject to further change and upheavals. Revision &amp;#039;&amp;#039;&amp;#039;{{{revision}}}&amp;#039;&amp;#039;&amp;#039;.&amp;#039;&amp;#039; &amp;lt;/div&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;margin: .5rem 0 .5rem 0; padding: 1rem; background-color: #00000010;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;This article is subject to further change and upheavals. Revision &#039;&#039;&#039;{{{revision}}}&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Branch&amp;diff=43</id>
		<title>Branch</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Branch&amp;diff=43"/>
		<updated>2025-07-28T06:18:14Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Branch&#039;&#039;&#039; is a development lab, initialized by OpenXP developers for making development more organized and consistent. Branches have different development structure and meaning, therefore their hierarchy is simpler and easier in plan of organization.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
The topmost branch is &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;, which contains the latest changes and edits, which are mostly stable. Other branches are deriving directly from it, containing up-to-date changes in themselves too.&lt;br /&gt;
&lt;br /&gt;
Compilations derived from branches can be &#039;&#039;&#039;online&#039;&#039;&#039; and &#039;&#039;&#039;offline&#039;&#039;&#039;, with the main difference being the inclusion of developer&#039;s username after branch name in &#039;&#039;&#039;online&#039;&#039;&#039; compiles (for example &amp;lt;code&amp;gt;master(&#039;&#039;&#039;ash&#039;&#039;&#039;)&amp;lt;/code&amp;gt;), indicating of inclusion of in-development and partially private pieces of code.&lt;br /&gt;
&lt;br /&gt;
Plenty of others are included in following structure:&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
General branches are main development branches, which include new stuff, often not synchronized with &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt;, but fetching stabilized changes from other branches below. They are intended for keeping most groundbreaking changes, which have been tested properly and guarantee stability of their work. Future patch kits and releases of OpenXP are derived from these branches. &lt;br /&gt;
&lt;br /&gt;
=== Feature branch leverage ===&lt;br /&gt;
Feature branch leverage branches (&amp;lt;code&amp;gt;fbl&amp;lt;/code&amp;gt;) are intermediate branches, which are intended for long term development, which will be integrated into the system consequently. e.g. ` implementation of a package manager or rejuvenated Feedback Tool. These branches are serving as a foundation to merge into General branches, and they are not guarantee for stability.&lt;br /&gt;
&lt;br /&gt;
[[vNext]] branches are also belong to Feature branch leverage and they contain fundamental changes in kernel, back ports of multiple features and more. Apart of this, vNext branches are logical continuation of new, future releases and are first candidates to be merged into General ones usually.&lt;br /&gt;
&lt;br /&gt;
=== Funny ===&lt;br /&gt;
This kind of branches contain very sensitive and unstable improvements, with their consequences and developing behavior may seem... funny. Yeah, lots of informal (and maybe even rude) expressions, crappy working programs and etc are here, and if you run build from these branches, never except anything, not talking about even stability.&lt;br /&gt;
* &#039;&#039;&#039;Fundamental&#039;&#039;&#039; branches (&amp;lt;code&amp;gt;fun&amp;lt;/code&amp;gt;) are for crucial changes inside build environment and core facilities, leveraging platform changes and behavior. It may break compatibility with older applications, and it is in active development, meaning that core improvements will appear.&lt;br /&gt;
* &#039;&#039;&#039;Funny&#039;&#039;&#039; branches (&amp;lt;code&amp;gt;lol&amp;lt;/code&amp;gt; and similar) are for lots of informal descriptions, preliminary naming, graphics, early programs and more. Even internal functionality may differ from that, but don&#039;t worry - these branches aren&#039;t for retail release, and they mostly exist in private circles of developers.&lt;br /&gt;
&lt;br /&gt;
== Legacy mechanism ==&lt;br /&gt;
Before [[development reset]], OpenXP used labs system. &amp;lt;code&amp;gt;master&amp;lt;/code&amp;gt; was still in existence, therefore most of branches didn&#039;t have any prefixes for their meaning, and used direct naming convention instead: &amp;lt;code&amp;gt;canary&amp;lt;/code&amp;gt; was the pre-release improvements branch, and &amp;lt;code&amp;gt;fundamental&amp;lt;/code&amp;gt; included all compiler enhancements. However, this branching mechanism was abandoned due to it&#039;s unusable and messy behavior.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Build&amp;diff=42</id>
		<title>Build</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Build&amp;diff=42"/>
		<updated>2025-07-23T18:35:16Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide tested under Windows XP, 7 SP1, 8.1 &amp;amp; 10 x86/x64, results may vary under other operating systems (if you will copy/paste source code at many times). For legacy version of the guide visit [https://rentry.co/build-win2k3 build-win2k3].&lt;br /&gt;
&lt;br /&gt;
== Preparing for Build ==&lt;br /&gt;
&lt;br /&gt;
* Disable any AV (and Windows Defender) before extracting and building, as both of those actions create a lot of new files, and AV scans for execution of them all - this also counts for any other tools that monitor files, such as voidtools&#039; Everything, but they aren&#039;t impacting much as your antivirus does.&lt;br /&gt;
* Also disable User Account Control. This can be accomplished via Control Panel, or via Registry Key: navigate to &amp;lt;code&amp;gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System&amp;lt;/code&amp;gt; and set &amp;lt;code&amp;gt;EnableLUA&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;. Some versions may require restart after registry apply.&lt;br /&gt;
* Extract source tree to a folder named &amp;lt;code&amp;gt;srv03rtm&amp;lt;/code&amp;gt; on the root of a drive, drive letter doesn&#039;t seem to matter (just don&#039;t use C:\ drive as that has some extra security). It is recommended to use &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt; as the path to match RTM binaries.&lt;br /&gt;
&lt;br /&gt;
=== For 2000/XP/2003 Users ===&lt;br /&gt;
Before initializing Razzle, it&#039;s mandatory to install .NET Framework 1.1, because without it Razzle will fail to initialize environment normally (despite that two versions of .NET 1.1 are included in &amp;lt;code&amp;gt;tools\x86&amp;lt;/code&amp;gt;). The installer is included at &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Running environment ===&lt;br /&gt;
&lt;br /&gt;
* Run command-prompt as administrator (can usually be done by typing &amp;lt;code&amp;gt;cmd&amp;lt;/code&amp;gt; into start menu, right click &amp;lt;code&amp;gt;Command Prompt&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Run as administrator&amp;lt;/code&amp;gt;)&lt;br /&gt;
* In the command-prompt, change to the source folder: &amp;lt;code&amp;gt;cd /d D:\srv03rtm&amp;lt;/code&amp;gt;&lt;br /&gt;
* Now start razzle: &amp;lt;code&amp;gt;tools\razzle.cmd free offline&amp;lt;/code&amp;gt; for 32-bit clients, and &amp;lt;code&amp;gt;tools\razzle64.cmd free offline&amp;lt;/code&amp;gt; for 64-bits. This initiates retail build of x86. The first time you run razzle inside that copy of the source code it&#039;ll need to initialize a few things, give it a few minutes, after a while a Notepad window will appear - make sure to close this for the initialization to continue.&lt;br /&gt;
* &#039;&#039;&#039;Important for first time!&#039;&#039;&#039; Run the prebuild script, if you&#039;re initiating source code for first time: &amp;lt;code&amp;gt;tools\prebuild&amp;lt;/code&amp;gt;. This scripts sets all read-only attributes for necessary stuff and makes 16-bit stuff workable for x64 environments.&lt;br /&gt;
* Start to build via &amp;lt;code&amp;gt;build /cZP&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (which is alias to first, so doesn&#039;t matter). &#039;&#039;&#039;Important:&#039;&#039;&#039; Build.exe doesn&#039;t seem to play well when building with many (up to 8) threads. If your build machine has more than that it&#039;s recommended to cap it to 8 threads maximum via the &amp;lt;code&amp;gt;-M 8&amp;lt;/code&amp;gt; switch, added to the build command (eg. &amp;lt;code&amp;gt;build /cZP -M 8&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;bcz -M 8&amp;lt;/code&amp;gt;). Use 8 threads if your host/virtual machine CPU have allocated 8 cores (or less). More than 8 threads build may lead to unforeseen behavior, such as inconsistent linkage and invalid generation of pieces of code, since some build programs were written back at time when CPUs should be limited in order to preserve proper frequency.&lt;br /&gt;
&lt;br /&gt;
=== Post-build ===&lt;br /&gt;
&lt;br /&gt;
* Download the Missing Binaries pack, which contains missing binaries both for AMD64 and x86 builds.&lt;br /&gt;
* From that 7z, extract the contents of the binaries folder for the build type you&#039;re building into your build trees binaries folder (eg. &amp;lt;code&amp;gt;D:\binaries.x86fre&amp;lt;/code&amp;gt;, should have been created during the build), the 7z should contain files for all SKUs (uses pidgen.dll from Win2003 Enterprise, so your builds should accept Enterprise product keys), &#039;&#039;&#039;When asked during extraction to overwrite folders select &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;, but when asked to overwrite files, make sure to select &amp;lt;code&amp;gt;No&amp;lt;/code&amp;gt;!&#039;&#039;&#039;&lt;br /&gt;
* Inside the razzle window run &amp;lt;code&amp;gt;tools\postbuild&amp;lt;/code&amp;gt; (use &amp;lt;code&amp;gt;-sku:{sku}&amp;lt;/code&amp;gt; if you want to process only specific one (no brackets!), expect &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors if you ignore this and didn&#039;t use missing.7z / missing.cmd with every sku). For first time you can use &amp;lt;code&amp;gt;tools\postbuild -full&amp;lt;/code&amp;gt;, altrough it isn&#039;t necessary.&lt;br /&gt;
&lt;br /&gt;
==== Issues ====&lt;br /&gt;
&lt;br /&gt;
* Once postbuild has finished, assuming you used the &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; file above and followed the guide properly, it should have hopefully succeeded without errors, and there shouldn&#039;t be any &amp;lt;code&amp;gt;binaries.x86fre\build_logs\postbuild.err&amp;lt;/code&amp;gt; file!&lt;br /&gt;
* Otherwise take a look inside the &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; - most messages in here are negligible, but if you see &amp;lt;code&amp;gt;filechk&amp;lt;/code&amp;gt; errors associated with the edition you want to use, you may need to re-run &amp;lt;code&amp;gt;tools\missing.cmd&amp;lt;/code&amp;gt;, or extract &amp;lt;code&amp;gt;misbin.7z&amp;lt;/code&amp;gt; again.&lt;br /&gt;
* If &amp;lt;code&amp;gt;postbuild.err&amp;lt;/code&amp;gt; contains messages like &amp;lt;code&amp;gt;(crypto.cmd) ERROR&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;(ntsign.cmd) ERROR&amp;lt;/code&amp;gt; try re-importing the &amp;lt;code&amp;gt;tools\driver.pfx&amp;lt;/code&amp;gt; key-file (double-click it, press Next through the prompts, password is empty), and make sure your system date is set to the current date.&lt;br /&gt;
* If postbuild.err has filechk errors about missing &amp;lt;code&amp;gt;hwcomp.dat&amp;lt;/code&amp;gt; files, try copying the following into a batch script and run it in a razzle prompt (after using postbuild once already)&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\pro\i386 -o:%_NTPOSTBLD%\.\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\per\i386 -o:%_NTPOSTBLD%\perinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\bla\i386 -o:%_NTPOSTBLD%\blainf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\sbs\i386 -o:%_NTPOSTBLD%\sbsinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\srv\i386 -o:%_NTPOSTBLD%\srvinf\hwcomp.dat&lt;br /&gt;
hwdatgen -i:%_NTPOSTBLD%\ads\i386 -o:%_NTPOSTBLD%\entinf\hwcomp.dat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating ISO files ===&lt;br /&gt;
&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;tools\oscdimg {sku} [destination-file (optional)]&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;{sku}&amp;lt;/code&amp;gt; is one of:&lt;br /&gt;
** &amp;lt;code&amp;gt;srv&amp;lt;/code&amp;gt; - Windows Server 2003 Standard Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;sbs&amp;lt;/code&amp;gt; - Windows Server 2003 Small Business Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;ads&amp;lt;/code&amp;gt; - Windows Server 2003 Enterprise Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;dtc&amp;lt;/code&amp;gt; - Windows Server 2003 Datacenter Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;bla&amp;lt;/code&amp;gt; - Windows Server 2003 Web Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;per&amp;lt;/code&amp;gt; - Windows XP Home Edition&lt;br /&gt;
** &amp;lt;code&amp;gt;pro&amp;lt;/code&amp;gt; - Windows XP Professional&lt;br /&gt;
** &amp;lt;code&amp;gt;winpe&amp;lt;/code&amp;gt; - Windows Preinstallation Environment&lt;br /&gt;
* ISO will be saved to &amp;lt;code&amp;gt;{build-drive}\{build-tag}_{sku}.iso&amp;lt;/code&amp;gt;, unless &amp;lt;code&amp;gt;[destination-file]&amp;lt;/code&amp;gt; is provided as a parameter.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get any problems during the build hopefully your problem might be answered here, if it&#039;s not feel free to post in the thread.&lt;br /&gt;
&lt;br /&gt;
====== Certificate Import Wizard: An internal error occurred... ======&lt;br /&gt;
It&#039;s likely your PFX certificate isn&#039;t generated properly and you need to regenerate them. For that you should follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Check out the &amp;lt;code&amp;gt;tools\prereq&amp;lt;/code&amp;gt; and install from there &amp;lt;code&amp;gt;MSYS 1.0.11.exe&amp;lt;/code&amp;gt;, then hop up into your architecture folder (x32 or x64) and install &amp;lt;code&amp;gt;VC_redist&amp;lt;/code&amp;gt; and then &amp;lt;code&amp;gt;OpenSSL&amp;lt;/code&amp;gt;. Make sure OpenSSL is in your path (cause installer doesn&#039;t set it by default).&lt;br /&gt;
* Download the zip or do a &amp;lt;code&amp;gt;git clone&amp;lt;/code&amp;gt; of CertUtil repository, or regenerate them using the original guide.&lt;br /&gt;
* Open MSYS and switch to directory where you extracted/cloned the repo.&lt;br /&gt;
* Attach all attributes via &amp;lt;code&amp;gt;chmod -r 0777 *&amp;lt;/code&amp;gt; and convert .sh to UNIX format with &amp;lt;code&amp;gt;dos2unix *.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Execute &amp;lt;code&amp;gt;./generate.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copy the files from &amp;lt;code&amp;gt;srv03rtm.certs&amp;lt;/code&amp;gt; into source code tree (&amp;lt;code&amp;gt;D:\srv03rtm&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== After running razzle it shows a bunch of errors, &amp;quot;tfindcer not recognized&amp;quot; etc ======&lt;br /&gt;
You&#039;re likely on a 64-bit system but running &amp;lt;code&amp;gt;razzle.cmd&amp;lt;/code&amp;gt; directly, you should use &amp;lt;code&amp;gt;razzle64.cmd&amp;lt;/code&amp;gt; instead, this&#039;ll set things up so that razzle will use the correct tools for you. Hopefully with that the &amp;lt;code&amp;gt;tfindcer not recognized&amp;lt;/code&amp;gt; &amp;amp; other errors should go away.&lt;br /&gt;
&lt;br /&gt;
====== After a full build I get 1000+ errors, build.err has &amp;lt;code&amp;gt;has bad storage class&amp;lt;/code&amp;gt; errors inside ======&lt;br /&gt;
Seems to be caused by your locale, this is reported to happen with Simplified Chinese language, but can probably happen with other languages too.&lt;br /&gt;
&lt;br /&gt;
Besides changing your locale/language settings, you could also try editing the source files to remove the characters that cause problems, an anon posted a list of the files that need changes here&lt;br /&gt;
&lt;br /&gt;
====== I get a &amp;lt;code&amp;gt;TAPI.RES&amp;lt;/code&amp;gt; error during the build. ======&lt;br /&gt;
Try moving your source code folder closer to the root of the drive, ideally it should only be one folder up from the drive root (eg. &amp;lt;code&amp;gt;D:\srv03rtm\&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
====== On Windows 7 and later I get NTVDM crashes while building ======&lt;br /&gt;
All NTVDM errors should have hopefully been solved in the v8 release of this guide/ZIP, but if you still run into any NTVDM error a copy of your build.log file would help a lot to figure out what caused it, if you ZIP that up and post in the thread hopefully we can figure something out. We consider to build code on Windows 10 build 1809 or newer, or use operating systems up to Windows Vista.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Kernel debugging can be enabled by editing the &amp;lt;code&amp;gt;C:\boot.ini&amp;lt;/code&amp;gt; file in your installed build, and adding &amp;lt;code&amp;gt;/debug /debugport=COM1 /baudrate=115200&amp;lt;/code&amp;gt; to the end of a config line.&lt;br /&gt;
&lt;br /&gt;
For example here&#039;s a boot.ini with two choices, one with debugging &amp;amp; one without, with this NTLDR will show an OS boot choice menu at startup:&amp;lt;blockquote&amp;gt;[boot loader]&lt;br /&gt;
&lt;br /&gt;
timeout=30&lt;br /&gt;
&lt;br /&gt;
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS&lt;br /&gt;
&lt;br /&gt;
[operating systems]&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect&lt;br /&gt;
&lt;br /&gt;
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=&amp;quot;Windows Server 2003, Enterprise&amp;quot; /fastdetect /debug /debugport=COM1 /baudrate=115200&amp;lt;/blockquote&amp;gt;(even though they&#039;re named the same &amp;lt;code&amp;gt;Windows Server 2003, Enterprise&amp;lt;/code&amp;gt;, NTLDR will add a &amp;lt;code&amp;gt;[debugger enabled]&amp;lt;/code&amp;gt; tag to it on the OS selection menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chk (checked)&amp;lt;/code&amp;gt; builds are preferred for debugging as they enable asserts &amp;amp; debug messages, though &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt; will run a lot slower than &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds. &amp;lt;code&amp;gt;fre&amp;lt;/code&amp;gt; builds can also be debugged fine, but usually with a lot less debug output.&lt;br /&gt;
&lt;br /&gt;
Ideally you should also configure WinDbg to use the &amp;lt;code&amp;gt;binaries.{buildtype}\symbols.pri\retail&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;binaries.{buildtype}\symbols\retail&amp;lt;/code&amp;gt; symbols folders too, if WinDbg is running on the same machine that compiled the build it should then also be able to do source-level debugging against the actual source files.&lt;br /&gt;
&lt;br /&gt;
Note that if you&#039;re using a VM to host your build on you&#039;ll have to pass-through the emulated COM port over to a pipe somehow, for WinDbg/KD/IDA/etc to make use of.&lt;br /&gt;
&lt;br /&gt;
There is apparently a way to get KDNET working on 2003 too (see &amp;lt;nowiki&amp;gt;https://github.com/MovAX0xDEAD/KDNET&amp;lt;/nowiki&amp;gt;), but this is as-of-yet untested with our builds, seems like it should have support for VMware&#039;s emulated network hardware at least.&lt;br /&gt;
&lt;br /&gt;
(TODO: add more VM guides here... if anyone wants to post one in the thread I&#039;m happy to add it here)&lt;br /&gt;
&lt;br /&gt;
=== VMware setup ===&lt;br /&gt;
&lt;br /&gt;
* For a VMware VM, just open the VM hardware options, &#039;&#039;&#039;remove the printer hardware&#039;&#039;&#039;, then click &amp;lt;code&amp;gt;Add...&amp;lt;/code&amp;gt; and choose &amp;lt;code&amp;gt;Serial Port&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In the serial-port config panel, set it to &amp;lt;code&amp;gt;Use named pipe&amp;lt;/code&amp;gt;, and enter a pipe name into the textbox, eg. &amp;lt;code&amp;gt;\\.\pipe\vm&amp;lt;/code&amp;gt;. The pipe should be setup as &amp;lt;code&amp;gt;This end is the server&amp;lt;/code&amp;gt; &amp;amp; &amp;lt;code&amp;gt;The other end is a virtual machine&amp;lt;/code&amp;gt;.&lt;br /&gt;
* It&#039;s apparently recommended to use the &amp;lt;code&amp;gt;Yield CPU on poll&amp;lt;/code&amp;gt; option, but I&#039;ve had success without it, it&#039;s up to you.&lt;br /&gt;
* With that setup now just open WinDbg, choose &amp;lt;code&amp;gt;Attach to kernel&amp;lt;/code&amp;gt;, open the &amp;lt;code&amp;gt;COM&amp;lt;/code&amp;gt; tab and enter the baud-rate and pipe name you selected for your VM, then hit OK.&lt;br /&gt;
* Now WinDbg should start with &amp;lt;code&amp;gt;Waiting for reconnect&amp;lt;/code&amp;gt; text showing, and hopefully when you next boot up your VM it&#039;ll connect up to WinDbg by itself.&lt;br /&gt;
&lt;br /&gt;
=== Debugging Setup/Installation ===&lt;br /&gt;
A debugger can be attached to setup by pressing F8 at the right time - for text-mode setup the right time is when asked &amp;lt;code&amp;gt;Press F6 if you need to install a third party SCSI or RAID driver&amp;lt;/code&amp;gt;, spamming it while that message is showing should make it connect to COM1 with 19200 baud-rate (debug options can be changed inside &amp;lt;code&amp;gt;txtsetup.sif&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;SetupDebugOptions&amp;lt;/code&amp;gt; line specifies options to apply when F8 is pressed). After debug connection is made it might take a couple extra minutes for it to pass the &amp;lt;code&amp;gt;Setup is starting Windows&amp;lt;/code&amp;gt; stage.&lt;br /&gt;
&lt;br /&gt;
Similarly, GUI setup can be debugged by pressing F8 before the Windows bootloader starts (progress bar etc), this should bring up a menu with options for &amp;lt;code&amp;gt;Safe Mode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt;, etc. Choosing &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; will make it attach to COM1 before starting setup, again at 19200 baudrate.&lt;br /&gt;
&lt;br /&gt;
=== Changing default baudrate ===&lt;br /&gt;
The default 19200 baudrate can be changed by editing the &amp;lt;code&amp;gt;base\boot\kdcom\xxkdsup.c&amp;lt;/code&amp;gt; file, search for &amp;lt;code&amp;gt;BD_19200&amp;lt;/code&amp;gt; inside there and change it to e.g. &amp;lt;code&amp;gt;BD_115200&amp;lt;/code&amp;gt;, now it should use that by default without needing any &amp;lt;code&amp;gt;/baudrate&amp;lt;/code&amp;gt; parameter, or eg. when using &amp;lt;code&amp;gt;Debugging Mode&amp;lt;/code&amp;gt; from the boot options menu.&lt;br /&gt;
&lt;br /&gt;
=== Un-filtering kernel messages ===&lt;br /&gt;
Even with a chk build you may notice that the kernel doesn&#039;t seem to output much over KD, this seems to be because most of the kernel components use &amp;lt;code&amp;gt;KdPrintEx&amp;lt;/code&amp;gt;, which allows filtering KD messages to certain components (although MS&#039;s docs seem to suggest KdPrintEx filtering was only used in Vista, it does seem that 2003 makes use of it too)&lt;br /&gt;
&lt;br /&gt;
To enable components you&#039;ll need to open the registry of your installed build to the following key (or create it if it doesn&#039;t exist)&amp;lt;blockquote&amp;gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter&amp;lt;/blockquote&amp;gt;Then create a DWORD value named the component you want to enable (eg. &amp;lt;code&amp;gt;LDR&amp;lt;/code&amp;gt;), and set the value to hexadecimal &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A list of the component registry names can be found inside &amp;lt;code&amp;gt;base\published\obj\i386\dpfiltercm.c&amp;lt;/code&amp;gt; after a build. This also contains the symbol names for the component (eg. &amp;lt;code&amp;gt;Kd_LDR_Mask&amp;lt;/code&amp;gt;), which can be set directly through WinDbg/KD via the symbol name. (eg. &amp;lt;code&amp;gt;ed nt!Kd_LDR_Mask 0xFFFFFFFF&amp;lt;/code&amp;gt;, with symbols loaded this should set the LDR components filter value in real-time)&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; components value (default &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) is added to every components value, essentially making &amp;lt;code&amp;gt;WIN2000&amp;lt;/code&amp;gt; the default value for all components - so setting this to &amp;lt;code&amp;gt;FFFFFFFF&amp;lt;/code&amp;gt; should make every component print to KD. You&#039;ll get a ton more debug output from this, but all the KD prints will likely slow down the system a lot (unfortunately it doesn&#039;t seem possible to disable a component when using WIN2000 to enable them all)&lt;br /&gt;
&lt;br /&gt;
If you need to enable components before your build is installed (eg. kernel is having problems before setup is completed), you&#039;ll need to edit the &amp;lt;code&amp;gt;mergedcomponents\setupinfs\hivesys.inx&amp;lt;/code&amp;gt; file, anon made a post about that here, though it hasn&#039;t been tried yet afaik.&lt;br /&gt;
&lt;br /&gt;
=== x64 build OS support ===&lt;br /&gt;
prepatched.zip v9 adds support for using x64 build OS&#039;s such as Win10 x64, this is done by wrapping certain 16-bit tools using &amp;lt;code&amp;gt;MS-DOS Player&amp;lt;/code&amp;gt;, using .bat files to redirect calls to use the player, changing some makefiles to use 32-bit equivalents, etc.&lt;br /&gt;
&lt;br /&gt;
Unfortunately some of the wrapped 16-bit tools can still randomly error without rhyme or reason for it, as a workaround the .bat files of the worst offenders will give it 5 attempts before failing, hopefully this should be enough to allow builds to complete fine, but there&#039;s still a chance one of the other 16-bit tools could error too... maybe in future I&#039;ll apply this 5-attempts bandaid over all the 16-bit tools.&lt;br /&gt;
&lt;br /&gt;
Huge thanks to the anon who initially worked on fixing the 16-bit tools over at &amp;lt;nowiki&amp;gt;https://rentry.co/16bit-msbuild&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
=== amd64 build support ===&lt;br /&gt;
As of update v10 an amd64 build can be created by initialising razzle with the &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; options, the build should mostly complete without errors, but note that postbuild+ hasn&#039;t been updated at all to work properly with amd64 yet.&lt;br /&gt;
&lt;br /&gt;
Unfortunately as the leak didn&#039;t come with exinit.obj/systime.obj for amd64 these need to be built from anon&#039;s decompilations instead. v10a adds newer exinit.c/systime.c decompilations that are apparently an exact match to the x86 .obj files included in the leak, hopefully these should work well with other architectures too.&lt;br /&gt;
&lt;br /&gt;
Some anons have been slowly working on amd64, being able to get past text-mode setup and start booting GUI-mode setup, though sadly as of this release nobody has been able to actually get GUI mode to fully start up.&lt;br /&gt;
&lt;br /&gt;
Note that this source code is from around ~2 years before amd64 was officially released by MS as Server2003 SP1, so there&#039;s likely a lot missing. (WRK may have some newer kernel-mode parts, being both based on SP1 and including support for amd64, though note that WRK also has many things removed too...)&lt;br /&gt;
&lt;br /&gt;
However there&#039;s also many indications in the leak that MS did have amd64 running at this point, so it should eventually be possible for us to get it working too.&lt;br /&gt;
&lt;br /&gt;
=== Timebomb ===&lt;br /&gt;
&lt;br /&gt;
* Time can be adjusted by editing &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; variable inside &amp;lt;code&amp;gt;\tools\postbuildscripts\timebomb.cmd&amp;lt;/code&amp;gt; (line 44)&lt;br /&gt;
* Setting &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; will disable the timebomb.&lt;br /&gt;
* Only certain &amp;lt;code&amp;gt;DAYS&amp;lt;/code&amp;gt; parameters are valid (0, 5, 15, 30, 60, 90, 120, 150, 180, 240, 360, 444)&lt;br /&gt;
&lt;br /&gt;
=== Different build options ===&lt;br /&gt;
You can modify your razzle shortcut (or execute it manually inside your source folder) to include (or remove) additional argument(s):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; - build &#039;free&#039; bits (production, omitting it will generated checked bits)&lt;br /&gt;
* &amp;lt;code&amp;gt;chkkernel&amp;lt;/code&amp;gt; - build &#039;checked&#039; (testing) kernel/hal/ntdll when building &#039;free&#039; bits&lt;br /&gt;
* &amp;lt;code&amp;gt;no_opts&amp;lt;/code&amp;gt; - disable binary optimization (useful for debugging, but will most likely fail a full build, some code can&#039;t be built without optimization)&lt;br /&gt;
* &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt; - enable verbose output of the build process&lt;br /&gt;
* &amp;lt;code&amp;gt;binaries_dir &amp;lt;basepath&amp;gt;&amp;lt;/code&amp;gt; - specifies custom output directory (default is &amp;lt;code&amp;gt;binaries&amp;lt;/code&amp;gt;, the suffix added after &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; is non-customizable)&lt;br /&gt;
* &amp;lt;code&amp;gt;officialbuild&amp;lt;/code&amp;gt; - sets razzle to build this as an &amp;quot;official&amp;quot; build, requires updating BuildMachines.txt, see the section below&lt;br /&gt;
* &amp;lt;code&amp;gt;win64&amp;lt;/code&amp;gt; - builds for Intel Itanium-64 machines&lt;br /&gt;
* &amp;lt;code&amp;gt;win64 amd64&amp;lt;/code&amp;gt; - builds for amd64 instead of x86, see &amp;lt;code&amp;gt;amd64 build support&amp;lt;/code&amp;gt; section above&lt;br /&gt;
* &amp;lt;code&amp;gt;pocketpc&amp;lt;/code&amp;gt; - builds for ARMv4 targets. Currently there are no any supportive headers and libraries for AMD clients, and work is undergoing.&lt;br /&gt;
&lt;br /&gt;
Other options are not described here, see &amp;lt;code&amp;gt;razzle.cmd /?&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
=== &#039;OfficialBuild&#039; parameter / BuildMachines.txt ===&lt;br /&gt;
The &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; razzle parameter changes a few things in the build, which will make it match up closer to the retail builds, should be useful if you need to compare against retail for any reason.&lt;br /&gt;
&lt;br /&gt;
For a list of things affected by the OfficialBuild parameter see &amp;lt;nowiki&amp;gt;https://pastebin.com/VgVph3Xv&amp;lt;/nowiki&amp;gt; &amp;amp; &amp;lt;nowiki&amp;gt;https://pastebin.com/gYzWGLM5&amp;lt;/nowiki&amp;gt;, thanks to the anon that compiled them! (note that these aren&#039;t complete lists, and not all things mentioned here are guaranteed to take effect).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;However, using this parameter requires a file to be updated with info about your build machine first!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An easy way to update the file required is to run the following command inside a razzle window, at the root of the source tree:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;echo %COMPUTERNAME%,primary,%_BuildBranch%,%_BuildArch%,%_BuildType%,ntblus &amp;gt;&amp;gt; tools\BuildMachines.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you can run &amp;lt;code&amp;gt;tools\verifybuildmachine&amp;lt;/code&amp;gt; to make sure it was setup correctly, if there&#039;s any problem an error message will show, otherwise the command will return without any message.&lt;br /&gt;
&lt;br /&gt;
With that in place you should now be able to use the &amp;lt;code&amp;gt;OfficialBuild&amp;lt;/code&amp;gt; parameter next time you init razzle, eg. &amp;lt;code&amp;gt;tools\razzle.cmd free offline officialbuild&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some small notes to be aware of:&lt;br /&gt;
&lt;br /&gt;
* if you change build arch or build type (eg. to amd64, or to a checked build) you&#039;ll need to run the echo command again to add your machine for that build arch/type combination&lt;br /&gt;
* if you see &amp;lt;code&amp;gt;Clearing OFFICIAL_BUILD_MACHINE variable&amp;lt;/code&amp;gt; after initializing razzle, rerun the echo command and then close down/re-initalize razzle again, else the build won&#039;t properly count itself as official.&lt;br /&gt;
&lt;br /&gt;
=== Building specific components ===&lt;br /&gt;
Most components can be built seperately. For example, if you wish to rebuild &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; component, perform these steps:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cd base\ntos&amp;lt;/code&amp;gt; (you can also use &amp;lt;code&amp;gt;ntos&amp;lt;/code&amp;gt; alias that razzle has set up for you)&lt;br /&gt;
* &amp;lt;code&amp;gt;bcz&amp;lt;/code&amp;gt; (alias for &amp;lt;code&amp;gt;build /cPZ&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Generally &amp;lt;code&amp;gt;postbuild.cmd&amp;lt;/code&amp;gt; is clever enough to include your changes properly without needing fresh build as it uses &amp;lt;code&amp;gt;bindiff&amp;lt;/code&amp;gt; to find differences.&lt;br /&gt;
&lt;br /&gt;
=== Generating new build number/name ===&lt;br /&gt;
Version information is stored in &amp;lt;code&amp;gt;\public\sdk\inc\ntverp.h&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use &amp;lt;code&amp;gt;m0 set_builddate set_buildnum set_buildname&amp;lt;/code&amp;gt; to generate new build name quickly.&lt;br /&gt;
&lt;br /&gt;
=== Original CD filenames ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-standard_retail_en-us-NRMSFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: A600409482A5678EF6AF2B26D3576D6D9894178D)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-datacenter_retail_en-us-NRMDOEM_EN.iso&amp;lt;/code&amp;gt; (SHA1: E2B47A7CE45C6C6305594CEE4C1B64894805AAF4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-enterpriseserver_retail_en-us-NRMEFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 0309FFB4181BA5122C692A6E1079E9FC1D53FCE4)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86fre_server-webserver_retail_en-us-NRMWFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 46C1CCB2CFC96803E304A35BEF50CD71B2C1DE38)&lt;br /&gt;
* &amp;lt;code&amp;gt;sbs.iso&amp;lt;/code&amp;gt; (converted from mdf; SHA1: CDB30C80FDE314C16CA11F5CD31650ECBEC7A214)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.0.srv03_rtm.030324-2048_x86chk_server-enterpriseserver_retail_en-us-NRMECHK_EN.iso&amp;lt;/code&amp;gt; (SHA1: EEF5F921CC8FC20FB29A862E1E132359E0D151BB)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64fre_server-enterprise_retail_en-us-ARMEXFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 076EDCF017EDE0B2D0D8067FA52CF3D44EEEF79A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.2.3790.1830.srv03_sp1_rtm.050324-1447_amd64chk_server-enterprise_retail_en-us-AX2EXCFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 8916DFBB1D93A9CECB1FE8600BE2E2C752E85E7F)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-home_retail_en-us-WXHFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: B273C8D41E3844E3E46722F52F5A4CF9F206C8D0)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86fre_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 1400DED4402D50F3864ED3D8DCF5CC52BA79A04A)&lt;br /&gt;
* &amp;lt;code&amp;gt;5.1.2600.0.xpclient.010817-1148_x86chk_client-professional_retail_en-us-WXPFPP_EN.iso&amp;lt;/code&amp;gt; (SHA1: 017F10E4555D1A9280874B9B0243442F045F1B2D)&lt;br /&gt;
&lt;br /&gt;
=== Product keys ===&lt;br /&gt;
&lt;br /&gt;
* Evaluation (for all editions, if you set a timebomb. Default it set to 360 days):&lt;br /&gt;
** &amp;lt;code&amp;gt;99999-99999-99999-99999-99999&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;DDDDD-DDDDD-DDDDD-DDDDD-DDDDD&amp;lt;/code&amp;gt;&lt;br /&gt;
* Standard Edition: &amp;lt;code&amp;gt;M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition: &amp;lt;code&amp;gt;QW32K-48T2T-3D2PJ-DXBWY-C6WRJ&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enterprise Edition (x64): &amp;lt;code&amp;gt;KK2WD-BFYJ6-77X87-8TRBF-9B343&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=MinWin&amp;diff=41</id>
		<title>MinWin</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=MinWin&amp;diff=41"/>
		<updated>2025-07-19T07:59:37Z</updated>

		<summary type="html">&lt;p&gt;Ashific: ported my article, which will be improved HERE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;MinWin&#039;&#039;&#039;, or &#039;&#039;&#039;Minimal Windows&#039;&#039;&#039;, 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
Technically, MinWin doesn&#039;t differ much from it&#039;s predecessors (files stored in &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ds&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;windows&amp;lt;/code&amp;gt; and so on) and simply contains refactored versions of them. In such manner, the NT kernel is stored in &amp;lt;code&amp;gt;minkernel\ntos&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;base\ntos&amp;lt;/code&amp;gt; prior from Windows 2000 to Vista.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The first 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. Meanwhile, 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.&lt;br /&gt;
&lt;br /&gt;
=== Windows 7 ===&lt;br /&gt;
The earliest available build to start implementing MinWin is Windows 7 build 6469, which adds &amp;lt;code&amp;gt;KernelBase.dll&amp;lt;/code&amp;gt;, which fetches a lot of &amp;lt;code&amp;gt;kernel32.dll&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;advapi32.dll&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;apisetschema.dll&amp;lt;/code&amp;gt; library was introduced, defining endpoints to newer virtual DLLs.&lt;br /&gt;
&lt;br /&gt;
9 days later after 6469 compilation, on October 13, 2007 at Microsoft&#039;s Channel9 network, a video of Eric Traut&#039;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.&amp;lt;ref&amp;gt;The presentation&#039;s video: https://web.archive.org/web/20071025182945/http://endeavour.acm.uiuc.edu/UIUC-ACM-RP07-Traut.wmv&amp;lt;/ref&amp;gt; Noticeably, it featured ASCII-based boot screen, which have never been observed or found in early Windows 7 leaked builds yet.&lt;br /&gt;
&lt;br /&gt;
=== Windows 8 ===&lt;br /&gt;
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&#039;s MinWin foundation.&lt;br /&gt;
&lt;br /&gt;
=== Windows 10 and later ===&lt;br /&gt;
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. [https://techcommunity.microsoft.com/blog/windowsosplatform/azure-host-os-%e2%80%93-cloud-host/3709528 Azure Host OS] is a lightweight operating system using MinWin as it&#039;s core, to engine Azure infrastructure servers. Also, Windows Core OS, among with it&#039;s derivatives, such as Windows 10X have been released but later abandoned due to unknown reasons.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Microsoft]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Category:NT_OS/2&amp;diff=40</id>
		<title>Category:NT OS/2</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Category:NT_OS/2&amp;diff=40"/>
		<updated>2025-07-05T14:03:21Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;Articles here are related to NT OS/2 Design Workbook, a book which references all internal capabilities and technical descriptions of original NT kernel. The hardcopy have been released to Smithsonian Institute, therefore the digital iteration have been published with Windows Research Kernel for non-commercial and academic use under the latter agreement.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Articles here are related to [[NT OS/2]] Design Workbook, a book which references all internal capabilities and technical descriptions of original NT kernel. The hardcopy have been released to Smithsonian Institute, therefore the digital iteration have been published with Windows Research Kernel for non-commercial and academic use under the latter agreement.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=NT_OS/2&amp;diff=39</id>
		<title>NT OS/2</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=NT_OS/2&amp;diff=39"/>
		<updated>2025-07-05T13:58:35Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;NT OS/2&amp;#039;&amp;#039;&amp;#039; system is a portable implementation of OS/2 developed in a high-level language. The initial release of NT OS/2 is targeted for Intel 860-based hardware, which includes both personal computers (&amp;#039;&amp;#039;Frazzle&amp;#039;&amp;#039;) and servers (&amp;#039;&amp;#039;Dazzle&amp;#039;&amp;#039;). The first systems based on a RISC microprocessor will be available for testing in the fall of 1990.  The ultimate goal of the NT OS/2 project is to develop a portable implementation of OS/2 executing on the Intel 860 and to e...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;NT OS/2&#039;&#039;&#039; system is a portable implementation of OS/2 developed in a high-level language. The initial release of NT OS/2 is targeted for Intel 860-based hardware, which includes both personal computers (&#039;&#039;Frazzle&#039;&#039;) and servers (&#039;&#039;Dazzle&#039;&#039;). The first systems based on a RISC microprocessor will be available for testing in the fall of 1990.&lt;br /&gt;
&lt;br /&gt;
The ultimate goal of the NT OS/2 project is to develop a portable implementation of OS/2 executing on the Intel 860 and to establish this combination of hardware and software as the standard for high-performance personal computers and server systems.&lt;br /&gt;
&lt;br /&gt;
== Goals ==&lt;br /&gt;
NT OS/2 has the following overall project goals (though not all these goals will be attained by the first implementation of NT OS/2):&lt;br /&gt;
&lt;br /&gt;
* Portability to a variety of hardware architectures. Though the first implementation is targeted to the Intel 860, the overall system design isolates the machine-dependent portions for portability to other architectures.&lt;br /&gt;
* Support for multiple processors with shared memory via symmetric multiprocessing. This provides performance improvements for multiprocessor workstations and servers.&lt;br /&gt;
* Compatibility with the OS/2 V2.0 32-bit application programming interface (API). Because the initial target system is not an Intel x86 architecture, all applications will have to be recompiled and relinked.  In addition, any assembly language code will have to be rewritten or converted to a higher level language such as C.&lt;br /&gt;
* Security at the C2 level with future versions achieving higher levels of security. This includes login/logout options on the personal computer and the server system, and declaration and enforcement of protection attributes for shareable resources (files, IPC, memory objects, etc.).&lt;br /&gt;
* Support for a POSIX-compliant API interface that passes the POSIX validation suites.&lt;br /&gt;
* Support for internationalization.&lt;br /&gt;
* Support for LANMAN networking and management of personal computers and servers.&lt;br /&gt;
* Support for the current Presentation Manager API running in both the OS/2 environment and the POSIX environment.&lt;br /&gt;
* Support for distributed applications. The network is integrated into the system to allow transparent distribution of applications and services within a network.&lt;br /&gt;
* Support for object-oriented file systems and object-oriented presentation manager.&lt;br /&gt;
* Easy extensibility by layering new features on the existing system without modifying the underlying system.&lt;br /&gt;
* Simultaneous execution by multiple users, each with a unique security profile.&lt;br /&gt;
* Interoperability and data interchange between OS/2 and POSIX applications.&lt;br /&gt;
* High reliability that prevents errant user programs from causing a system crash or exhausting system-wide resources. Resource quotas, a protected kernel, and protected objects are used to improve reliability.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
NT OS/2 consists of a highly integrated kernel / executive that executes in kernel mode. It provides the necessary services to allow the emulation of OS/2 and POSIX APIs via protected subsystems executing in user mode. Both the OS/2 and POSIX subsystems provide these services through remote procedure calls from a client to the server subsystem. The server subsystem, in turn, emulates the desired operation locally or by calling the executive, and returns the results to the caller. The following diagram illustrates the structure of NT OS/2.&lt;br /&gt;
&lt;br /&gt;
=== Functional Specifications ===&lt;br /&gt;
The following specifications are contained within this design workbook. Each specification contains an abstract of the component it describes, how that component fits into the system, the various APIs that are used to access the functionality, and enough detail to ensure the defined capability can be implemented.&lt;br /&gt;
&lt;br /&gt;
The goal of the specifications is to allow someone to understand the functionality provided by a particular piece of the system. It is NOT a goal to describe the actual implementation.&lt;br /&gt;
&lt;br /&gt;
Each specification addresses Cruiser and POSIX compatibility, if appropriate. The following is a list of design specifications included in this version of the workbook:&lt;br /&gt;
&lt;br /&gt;
# Kernel - Describes the function of the kernel, the objects implemented, and the various interfaces provided to manipulate these objects. This specification contains implementation details, where necessary, to reveal how multiprocessing and processor dispatching take place. This specification also describes synchronization, scheduling/dispatching, and Asynchronous Procedure Calls (APCs).&lt;br /&gt;
# Object Management - Describes how the executive deals with objects, what they are for, how they are protected, how they are named, how they are allocated, how they are accounted for, and how they are deleted. This specification also addresses object directories and how to access them using the file system directory operations.&lt;br /&gt;
# Process Structure - Describes the process and thread objects and the operations that can be performed on them. This specification also explains signals and how OS/2 compatibility and POSIX compliance are addressed.&lt;br /&gt;
# Virtual Memory - Describes the virtual memory objects and the operations that can be performed on these objects.&lt;br /&gt;
# I/O Management - Describes the APIs and objects available for I/O operations.&lt;br /&gt;
# Security - Describes how security is provided in the system, the ACL format, ACL access checking rules, login/logout, the authorization file, and the partial closure of covert channels. This specification also describes audit and alarm logging.&lt;br /&gt;
# Local Process Communication - Describes the client/server protected subsystem model, client impersonation, port objects, and connection/disconnection operations.&lt;br /&gt;
# Remote Procedure Call - Describes a transport-independent interface to remote procedure calls.&lt;br /&gt;
# Session Manager - Describes how the subsystems for OS/2 and POSIX are created, and how they interact with each other.&lt;br /&gt;
# File System - Describes the file systems, how they are put together, the functions they perform, and how they accomplish the tasks that they are given.&lt;br /&gt;
# Semaphores and Events - Describes the APIs and objects available for synchronization.&lt;br /&gt;
# Argument Validation - Describes the argument probing and capture requirements for system services.&lt;br /&gt;
# Timers - Describes the timer object, which is used to mark time, and the functions available to manipulate it.&lt;br /&gt;
# Coding Guidelines - Describes the naming and structure of NT OS/2 code.&lt;br /&gt;
# LAN Manager Software - Describes the network capabilities of the system, how network drivers fit together, and how the protocol stacks are managed.&lt;br /&gt;
# Exceptions - Describes the dispatching of hardware exceptions to the condition dispatcher and the arguments that accompany each exception. It also explains guard page handling, automatic stack expansion, and access violations on the user stack, as well as how signals are handled at the user level.&lt;br /&gt;
# OS/2 Emulation Subsystem - Describes the requirements and methods used to design and build the OS/2 emulation subsystem.&lt;br /&gt;
# Status values - Describes the format for status values return by NT OS/2 APIs.&lt;br /&gt;
# Subsystem Design Rational - Describes the rationale for designing OS/2 and POSIX emulation as subsystems as opposed to supporting the APIs directly in the executive.&lt;br /&gt;
# Shared Resource Specification - Describes the routines that implement multiple-readers, single-writer access to a share resource.&lt;br /&gt;
# Executive Support Routines - Describes executive support routines which are available in kernel mode and not documented in other chapters.&lt;br /&gt;
# Driver Model - Describes the device driver model, how I/O is managed throughout the system, how the file system and network capabilities fit into the system, and the objects and operations that are available to help manage the I/O system. It also presents I/O validation, queueing, page lockdown, double mapping, I/O completion, and error logging.&lt;br /&gt;
# POSIX Emulation Subsystem - Describes the requirements and methods used to design and build the POSIX emulation subsystem.&lt;br /&gt;
# Time Conversion Specification - Describes the APIs available for viewing time and converting to and from different formats.&lt;br /&gt;
# Mutant Specification - Describes the mutant object and services which operate upon the object.&lt;br /&gt;
# Transport Driver Interface - Describes the interface for the network transport layer.&lt;br /&gt;
# Network Driver Interface Specification - Describes the interface for the network physical layer.&lt;br /&gt;
# Lan Manager Server - Describes the design of the Lan Manager server and the operations supported.&lt;br /&gt;
# C Structured Exception Handling - Describes the extensions to C in the MS 860 compiler to support structured exception handling.&lt;br /&gt;
# NT C User&#039;s Guide - Describes the command syntax and language issues for the MS 860 C compiler.&lt;br /&gt;
# Prefix Table - Describes the prefix table package.&lt;br /&gt;
# System Startup Design Note - Describes system startup after phase one initialization.&lt;br /&gt;
# Debug Architecture - Describes the debug architecture for NT OS/2.&lt;br /&gt;
# Linker/Librarian - Describes the NT OS/2 linker, librarian, and image format.&lt;br /&gt;
# Caching Design Note - Describes the system-wide file caching implementation.&lt;br /&gt;
# Utility Design Specification - Describes the basic support routines for NT OS/2 utilities.&lt;br /&gt;
# OS/2 Environment Subsection Security - Describes the security features of the OS/2 environment subsystem.&lt;br /&gt;
# Security Account Manager Protected Server - Describes the security account manager which maintains user and group account information.&lt;br /&gt;
&lt;br /&gt;
[[Category:NT OS/2]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Category:OneCore_API&amp;diff=38</id>
		<title>Category:OneCore API</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Category:OneCore_API&amp;diff=38"/>
		<updated>2025-06-28T06:23:25Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;This is the category for OneCore API and it&amp;#039;s affiliate projects.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the category for [[OneCore API]] and it&#039;s affiliate projects.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OneCore_API&amp;diff=37</id>
		<title>OneCore API</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OneCore_API&amp;diff=37"/>
		<updated>2025-06-28T06:23:07Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OneCore API&#039;&#039;&#039; is an extended wrapper to Windows XP/Server 2003 operating systems, intended for adding compatibility and missing functionality from later versions of Windows. Project is based on ReactOS, and uses the latter&#039;s build environment. As a result, project is compatible with Windows Server 2003 SP2, Windows XP SP3 and Windows XP x64 SP2.&lt;br /&gt;
&lt;br /&gt;
OneCore API was created in 2016 by Skulltrail as a part of Shorthorn Project, which later started to dynamically grow up into separate one.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
OneCore API aims to extend compatibility with later versions of Windows, including Vista, 7, 8(.1) and beyond. By backporting ReactOS implementations, OneCore lets Windows XP/Server 2003 to impersonate later Windows versions and run programs, along with required but missing functionality. For running additional programs set, it is recommended to install Visual C++ distributives, 2015-2022 of which are possible to run with OneCore API.&lt;br /&gt;
&lt;br /&gt;
For running games and other heavy-graphics based applications, OneCore API also provides D3D-wrapper which allows to run applications for newer DirectX versions (9.0 and after). Partially, ReactOS based implementations for graphics also utilized, but they&#039;re not guaranteed as stable yet.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
For installing OneCore API, you should navigate to project&#039;s [https://github.com/shorthorn-project/One-Core-API-Binaries official GitHub repository for binaries], go to &amp;quot;Releases&amp;quot; page, and download latest one. OneCore provides following architectures:&lt;br /&gt;
&lt;br /&gt;
* x86,&lt;br /&gt;
* x86 for AVX,&lt;br /&gt;
* x86 for PAE,&lt;br /&gt;
* x64.&lt;br /&gt;
&lt;br /&gt;
Then after, extract the .zip installation file into your Windows XP/Server 2003 machine. You need to ensure that you haven&#039;t any OneCore API older installations. If you have, you must &#039;&#039;&#039;uninstall it&#039;&#039;&#039;. Otherwise, stability may be highly decreased and it is not guaranteed.&lt;br /&gt;
[[Category:OneCore API]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OneCore_API&amp;diff=36</id>
		<title>OneCore API</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OneCore_API&amp;diff=36"/>
		<updated>2025-06-28T06:22:45Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;OneCore API&amp;#039;&amp;#039;&amp;#039; is an extended wrapper to Windows XP/Server 2003 operating systems, intended for adding compatibility and missing functionality from later versions of Windows. Project is based on ReactOS, and uses the latter&amp;#039;s build environment. As a result, project is compatible with Windows Server 2003 SP2, Windows XP SP3 and Windows XP x64 SP2.  OneCore API was created in 2016 by Skulltrail as a part of Shorthorn Project, which later started to dynamically grow up i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OneCore API&#039;&#039;&#039; is an extended wrapper to Windows XP/Server 2003 operating systems, intended for adding compatibility and missing functionality from later versions of Windows. Project is based on ReactOS, and uses the latter&#039;s build environment. As a result, project is compatible with Windows Server 2003 SP2, Windows XP SP3 and Windows XP x64 SP2.&lt;br /&gt;
&lt;br /&gt;
OneCore API was created in 2016 by Skulltrail as a part of Shorthorn Project, which later started to dynamically grow up into separate one.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
OneCore API aims to extend compatibility with later versions of Windows, including Vista, 7, 8(.1) and beyond. By backporting ReactOS implementations, OneCore lets Windows XP/Server 2003 to impersonate later Windows versions and run programs, along with required but missing functionality. For running additional programs set, it is recommended to install Visual C++ distributives, 2015-2022 of which are possible to run with OneCore API.&lt;br /&gt;
&lt;br /&gt;
For running games and other heavy-graphics based applications, OneCore API also provides D3D-wrapper which allows to run applications for newer DirectX versions (9.0 and after). Partially, ReactOS based implementations for graphics also utilized, but they&#039;re not guaranteed as stable yet.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
For installing OneCore API, you should navigate to project&#039;s [https://github.com/shorthorn-project/One-Core-API-Binaries official GitHub repository for binaries], go to &amp;quot;Releases&amp;quot; page, and download latest one. OneCore provides following architectures:&lt;br /&gt;
&lt;br /&gt;
* x86,&lt;br /&gt;
* x86 for AVX,&lt;br /&gt;
* x86 for PAE,&lt;br /&gt;
* x64.&lt;br /&gt;
&lt;br /&gt;
Then after, extract the .zip installation file into your Windows XP/Server 2003 machine. You need to ensure that you haven&#039;t any OneCore API older installations. If you have, you must &#039;&#039;&#039;uninstall it&#039;&#039;&#039;. Otherwise, stability may be highly decreased and it is not guaranteed.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Sandbox:OpenKernel&amp;diff=35</id>
		<title>Sandbox:OpenKernel</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Sandbox:OpenKernel&amp;diff=35"/>
		<updated>2025-06-20T06:37:09Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;OpenKernel&amp;#039;&amp;#039;&amp;#039; is a new, upcoming sub-project of OpenXP, intended to gradually replace Windows NT kernel provided in Windows Server 2003 source code tree. In difference of ReactOS, OpenKernel will be intended for more stability, reliability and optimized behavior, in order to be flexible and expandable in modern terms of operating system development.  == Description == OpenKernel is an inspiration of combining original NT kernel with Microsoft&amp;#039;s MinWin project, whi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenKernel&#039;&#039;&#039; is a new, upcoming sub-project of [[OpenXP]], intended to gradually replace Windows NT kernel provided in Windows Server 2003 source code tree. In difference of ReactOS, OpenKernel will be intended for more stability, reliability and optimized behavior, in order to be flexible and expandable in modern terms of operating system development.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
OpenKernel is an inspiration of combining original NT kernel with Microsoft&#039;s MinWin project, which is the partial refactor of the first one. Also huge accent will be placed into Linux principles of kernel development, because NT structure is itself great and promising, therefore rewrite of NT kernel is need, to turn NT into a really portable system.&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenXP&amp;diff=34</id>
		<title>OpenXP</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenXP&amp;diff=34"/>
		<updated>2025-06-08T06:27:58Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenXP&#039;&#039;&#039; is a project dedicated to upgrade Windows XP/Server 2003 experience, by including newer functionality derived from Windows Vista and later.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The project was created on February 5, 2023 by the lead developer [[User:Ashific|Ash]], via a MessengerGeek post&amp;lt;ref&amp;gt;https://wink.messengergeek.com/t/windows-xp-server-2003-source-code-revisited/22711&amp;lt;/ref&amp;gt;, which included updated documentation for Windows Server 2003 source code compilation. The project started to gather interest and months later, on June 20, 2023, an official Discord server was created. Initially project was hosted on private Git server of one of members, but years later due to unexpected annihilation of latter, development of OpenXP have been moved into another Git server, uplifted by Ash itself.&lt;br /&gt;
&lt;br /&gt;
Soon after, in 2024, a Reddit post&amp;lt;ref&amp;gt;https://www.reddit.com/r/windowsxp/comments/1f8txt6/something_me_and_a_couple_of_friends_have_been/&amp;lt;/ref&amp;gt; was created about the project, which caused a massive interest growth, increasing Discord server members from ~150 to almost 600 members. Later, a video&amp;lt;ref&amp;gt;https://ia800803.us.archive.org/22/items/neptuned-yt/videos/Compiling%20%26%20Installing%20Windows%20XP%20%28via%20OpenXP%29%2C%20tech%20experiment.mp4&amp;lt;/ref&amp;gt; was created by Neptuned, which also expanded the interest in OpenXP.&lt;br /&gt;
&lt;br /&gt;
In November 2024, OpenXP got it&#039;s own official website - https://theopenxp.org, which includes the latest newsletter and project resources, among with this wiki.&lt;br /&gt;
&lt;br /&gt;
Currently, OpenXP releases patches for Windows Server 2003 source code, and in future plans to release relatively new and enhanced version of core of Windows Server to audience, with source code for public development.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Wiki:About&amp;diff=33</id>
		<title>Wiki:About</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Wiki:About&amp;diff=33"/>
		<updated>2025-06-08T06:25:22Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;{{DISPLAYTITLE:OpenXP Wiki}} &amp;#039;&amp;#039;&amp;#039;OpenXP Wiki&amp;#039;&amp;#039;&amp;#039; is the official encyclopedia of OpenXP project, dedicated to guides and helping articles related to it.  == Why? == Wiki holds many useful articles about compilation of Windows Server 2003 source code, enhancements into it and creating/fixing patches for the source. With fetching articles published by [https://en.wikipedia.org/wiki/4chan 4chan] anonymous members back in end of 2020 and doing further researches and invest...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:OpenXP Wiki}}&lt;br /&gt;
&#039;&#039;&#039;OpenXP Wiki&#039;&#039;&#039; is the official encyclopedia of [[OpenXP]] project, dedicated to guides and helping articles related to it.&lt;br /&gt;
&lt;br /&gt;
== Why? ==&lt;br /&gt;
Wiki holds many useful articles about compilation of Windows Server 2003 source code, enhancements into it and creating/fixing patches for the source. With fetching articles published by [https://en.wikipedia.org/wiki/4chan 4chan] anonymous members back in end of 2020 and doing further researches and investigations, we got multiple information about upgrading Windows Server 2003 code, which should be preserved and shared with publicity.&lt;br /&gt;
&lt;br /&gt;
Since publishing in anonymous note services may not be the best solution, our Discord server consists of &#039;&#039;#forum&#039;&#039;, where members can create topics and answer on existing ones, by sharing their own guides.&lt;br /&gt;
&lt;br /&gt;
Therefore, to keep ourself insured, we founded The OpenXP Wiki, which will also hold those guides, with multiple add-ons and fixes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; font-size: 150%;&amp;quot;&amp;gt;We very grateful to you, dear user, who visits this wiki and knows more about OpenXP and development of Windows leaked source!&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=OpenXP&amp;diff=32</id>
		<title>OpenXP</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=OpenXP&amp;diff=32"/>
		<updated>2025-06-08T06:16:54Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;OpenXP&#039;&#039;&#039; is a project dedicated to upgrade Windows XP/Server 2003 experience, by including newer functionality derived from Windows Vista and later.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The project was created on February 5, 2023 by the lead developer [[User:Ashific|Ash]], via [https://wink.messengergeek.com/t/windows-xp-server-2003-source-code-revisited/22711 a MessengerGeek post], which included updated documentation for Windows Server 2003 source code compilation. The project started to gather interest and months later, on June 20, 2023, an official Discord server was created. Initially project was hosted on private Git server of one of members, but years later due to unexpected annihilation of latter, development of OpenXP have been moved into another Git server, uplifted by Ash itself.&lt;br /&gt;
&lt;br /&gt;
Soon after, in 2024, [https://www.reddit.com/r/windowsxp/comments/1f8txt6/something_me_and_a_couple_of_friends_have_been/ a Reddit post] was created about the project, which caused a massive interest growth, increasing Discord server members from ~150 to almost 600 members. Later, [https://ia800803.us.archive.org/22/items/neptuned-yt/videos/Compiling%20%26%20Installing%20Windows%20XP%20%28via%20OpenXP%29%2C%20tech%20experiment.mp4 a video] was created by Neptuned, which also expanded the interest in OpenXP.&lt;br /&gt;
&lt;br /&gt;
In November 2024, OpenXP got it&#039;s own official website - https://theopenxp.org, which includes the latest newsletter and project resources, among with this wiki.&lt;br /&gt;
&lt;br /&gt;
Currently, OpenXP releases patches for Windows Server 2003 source code, and in future plans to release relatively new and enhanced version of core of Windows Server to audience, with source code for public development.&lt;br /&gt;
&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Razzle&amp;diff=30</id>
		<title>Razzle</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Razzle&amp;diff=30"/>
		<updated>2025-06-03T17:26:23Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Razzle&#039;&#039;&#039; is the build environment of Windows NT operating systems, which is used in OpenXP too. It is named after the codename of Windows NT 3.1 and it&#039;s purpose is to define building variables and set up an environment for building necessary components and source code of Windows NT. It was also used in OS/2 before the partnership refusal between Microsoft and IBM in plan of OS/2 development.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
The common arguments of Razzle are following:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; - retail build,&lt;br /&gt;
* &amp;lt;code&amp;gt;chk&amp;lt;/code&amp;gt; - checked build, which contains additional debugging information and therefore slower in execution,&lt;br /&gt;
* &amp;lt;code&amp;gt;offline&amp;lt;/code&amp;gt; - isolates source code from Source Depot or similar linked programs. Without this argument, Razzle tries to connect with the source server via &amp;lt;code&amp;gt;sd.exe&amp;lt;/code&amp;gt;, but due to internal addresses absence, it goes abrupt and errors start to appear. This workaround is fixed in OpenXP internally, changing points to Git.&lt;br /&gt;
&lt;br /&gt;
=== Architectures ===&lt;br /&gt;
By default, Razzle builds for x86 platforms. To specify another one, you should append one of these arguments after previous one:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;win64&amp;lt;/code&amp;gt; - choosing an Intel Itanium 64 (IA-64) target for build. If you append &amp;lt;code&amp;gt;amd64&amp;lt;/code&amp;gt;, it will build for AMD64 targets,&lt;br /&gt;
* &amp;lt;code&amp;gt;pocketpc&amp;lt;/code&amp;gt; - builds ARMv4 target, prevailingly for Windows CE 2003 (or Windows Mobile 2003).&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
Miscellaneous arguments of Razzle are these:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;verbose&amp;lt;/code&amp;gt; - executes Razzle script suite and outputs every action happening,&lt;br /&gt;
* &amp;lt;code&amp;gt;ntttest&amp;lt;/code&amp;gt; - builds NT test sources (if they exist),&lt;br /&gt;
* &amp;lt;code&amp;gt;emulation&amp;lt;/code&amp;gt; - builds sources runnable on various simulators of processors and their architectures,&lt;br /&gt;
* &amp;lt;code&amp;gt;chkkernel&amp;lt;/code&amp;gt; - builds checked versions of NT kernel,&lt;br /&gt;
* &amp;lt;code&amp;gt;no_opt&amp;lt;/code&amp;gt; - disables compiler optimizations which may lead to larger file sizes,&lt;br /&gt;
* &amp;lt;code&amp;gt;mui_magic&amp;lt;/code&amp;gt; - generates language-neutral (or pseudo language) build. Highly incomplete and needs workarounds,&lt;br /&gt;
* &amp;lt;code&amp;gt;no_binaries&amp;lt;/code&amp;gt; - compiles without creating specific directory for binaries (e.g. &amp;lt;code&amp;gt;binaries.x86fre&amp;lt;/code&amp;gt;),&lt;br /&gt;
* &amp;lt;code&amp;gt;binaries_dir&amp;lt;/code&amp;gt; - specifies custom path of binaries different from original one,&lt;br /&gt;
* &amp;lt;code&amp;gt;sepchar&amp;lt;/code&amp;gt; - replaces dot in binaries path with custom symbol, specified by user,&lt;br /&gt;
* &amp;lt;code&amp;gt;postbld_dir&amp;lt;/code&amp;gt; - specifies path of post-build directory,&lt;br /&gt;
* &amp;lt;code&amp;gt;temp&amp;lt;/code&amp;gt; - specifies custom temporary folder,&lt;br /&gt;
* &amp;lt;code&amp;gt;no_title&amp;lt;/code&amp;gt; - disallows title change of Command Prompt to &amp;quot;Build Environment&amp;quot;,&lt;br /&gt;
* &amp;lt;code&amp;gt;no_certcheck&amp;lt;/code&amp;gt; - doesn&#039;t check for code signing certificate existence,&lt;br /&gt;
* &amp;lt;code&amp;gt;no_sdrefresh&amp;lt;/code&amp;gt; - doesn&#039;t update Source Depot client (sd.exe),&lt;br /&gt;
* &amp;lt;code&amp;gt;restricted_path&amp;lt;/code&amp;gt; - sets path to the same restricted path that build uses (for debugging &amp;quot;why can&#039;t build find my tool&amp;quot; problems),&lt;br /&gt;
* &amp;lt;code&amp;gt;officialbuild&amp;lt;/code&amp;gt; - makes retail builds, reducing remnants of development code. It checks for tools/BuildMachines.txt, and if exists, the specific values to build official builds,&lt;br /&gt;
* &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt; - optional arguments to execute after Razzle initiation,&lt;br /&gt;
* &amp;lt;code&amp;gt;enigma&amp;lt;/code&amp;gt; - turns on CSP signing and CSP signature checks,&lt;br /&gt;
* &amp;lt;code&amp;gt;vaultsign&amp;lt;/code&amp;gt; - requires CSP&#039;s to be vault signed with the Microsoft key.&lt;br /&gt;
[[Category:OpenXP]]&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=User:Ashific&amp;diff=29</id>
		<title>User:Ashific</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=User:Ashific&amp;diff=29"/>
		<updated>2025-06-03T17:22:55Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;Hi, I&amp;#039;m the main developer of OpenXP. I am also known as LifesMinder, so: [https://youtube.com/@lifesminder @lifesminder].&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi, I&#039;m the main developer of OpenXP. I am also known as LifesMinder, so: [https://youtube.com/@lifesminder @lifesminder].&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=28</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=28"/>
		<updated>2025-06-03T17:21:53Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Welcome to The OpenXP Wiki!}}&lt;br /&gt;
Welcome to the [[OpenXP]] Project&#039;s official wiki! Here you can find useful guides to compile Windows XP/Server 2003 leaked source code, as well as to master in following stuff:&lt;br /&gt;
&lt;br /&gt;
* [[Getting Started|Getting started]] on configuring [[Razzle|environment]], [[Certificate Generation|generating certificates]] and performing successful build,&lt;br /&gt;
* Adjusting source code with custom patches, enhancements and tweaks,&lt;br /&gt;
* Knowing more about [[Windows Internals]] (in most real way), as well as to introducing more fundamentals,&lt;br /&gt;
* And waffles! 🧇&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
If you want to stay connected with OpenXP, you can join our official Discord server, as well to download source codes from our [[Download Center]] in safest way!&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=27</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=Welcome&amp;diff=27"/>
		<updated>2025-06-03T17:21:44Z</updated>

		<summary type="html">&lt;p&gt;Ashific: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the [[OpenXP]] Project&#039;s official wiki! Here you can find useful guides to compile Windows XP/Server 2003 leaked source code, as well as to master in following stuff:&lt;br /&gt;
&lt;br /&gt;
* [[Getting Started|Getting started]] on configuring [[Razzle|environment]], [[Certificate Generation|generating certificates]] and performing successful build,&lt;br /&gt;
* Adjusting source code with custom patches, enhancements and tweaks,&lt;br /&gt;
* Knowing more about [[Windows Internals]] (in most real way), as well as to introducing more fundamentals,&lt;br /&gt;
* And waffles! 🧇&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
If you want to stay connected with OpenXP, you can join our official Discord server, as well to download source codes from our [[Download Center]] in safest way!&lt;br /&gt;
&lt;br /&gt;
{{DISPLAYTITLE:Welcome to The OpenXP Wiki!}}&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
	<entry>
		<id>https://theopenxp.org/wiki/index.php?title=MediaWiki:Common.js&amp;diff=26</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://theopenxp.org/wiki/index.php?title=MediaWiki:Common.js&amp;diff=26"/>
		<updated>2025-06-03T17:18:46Z</updated>

		<summary type="html">&lt;p&gt;Ashific: Created page with &amp;quot;/**  * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally  * loaded for all users on every wiki page. If possible create a gadget that is  * enabled by default instead of adding it here (since gadgets are fully  * optimized ResourceLoader modules with possibility to add dependencies etc.)  *  * Since Common.js isn&amp;#039;t a gadget, there is no place to declare its  * dependencies, so we have to lazy load them with mw.loader.using on demand and  * then execu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally&lt;br /&gt;
 * loaded for all users on every wiki page. If possible create a gadget that is&lt;br /&gt;
 * enabled by default instead of adding it here (since gadgets are fully&lt;br /&gt;
 * optimized ResourceLoader modules with possibility to add dependencies etc.)&lt;br /&gt;
 *&lt;br /&gt;
 * Since Common.js isn&#039;t a gadget, there is no place to declare its&lt;br /&gt;
 * dependencies, so we have to lazy load them with mw.loader.using on demand and&lt;br /&gt;
 * then execute the rest in the callback. In most cases these dependencies will&lt;br /&gt;
 * be loaded (or loading) already and the callback will not be delayed. In case a&lt;br /&gt;
 * dependency hasn&#039;t arrived yet it&#039;ll make sure those are loaded before this.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/* global mw, $ */&lt;br /&gt;
/* jshint strict:false, browser:true */&lt;br /&gt;
&lt;br /&gt;
mw.loader.using( [ &#039;mediawiki.util&#039; ] ).done( function () {&lt;br /&gt;
	/* Begin of mw.loader.using callback */&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Map addPortletLink to mw.util&lt;br /&gt;
	 * @deprecated: Use mw.util.addPortletLink instead.&lt;br /&gt;
	 */&lt;br /&gt;
	mw.log.deprecate( window, &#039;addPortletLink&#039;, mw.util.addPortletLink, &#039;Use mw.util.addPortletLink instead&#039; );&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL&lt;br /&gt;
	 * @rev 6&lt;br /&gt;
	 */&lt;br /&gt;
	var extraCSS = mw.util.getParamValue( &#039;withCSS&#039; ),&lt;br /&gt;
		extraJS = mw.util.getParamValue( &#039;withJS&#039; );&lt;br /&gt;
&lt;br /&gt;
	if ( extraCSS ) {&lt;br /&gt;
		if ( extraCSS.match( /^MediaWiki:[^&amp;amp;&amp;lt;&amp;gt;=%#]*\.css$/ ) ) {&lt;br /&gt;
			mw.loader.load( &#039;/w/index.php?title=&#039; + extraCSS + &#039;&amp;amp;action=raw&amp;amp;ctype=text/css&#039;, &#039;text/css&#039; );&lt;br /&gt;
		} else {&lt;br /&gt;
			mw.notify( &#039;Only pages from the MediaWiki namespace are allowed.&#039;, { title: &#039;Invalid withCSS value&#039; } );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ( extraJS ) {&lt;br /&gt;
		if ( extraJS.match( /^MediaWiki:[^&amp;amp;&amp;lt;&amp;gt;=%#]*\.js$/ ) ) {&lt;br /&gt;
			mw.loader.load( &#039;/w/index.php?title=&#039; + extraJS + &#039;&amp;amp;action=raw&amp;amp;ctype=text/javascript&#039; );&lt;br /&gt;
		} else {&lt;br /&gt;
			mw.notify( &#039;Only pages from the MediaWiki namespace are allowed.&#039;, { title: &#039;Invalid withJS value&#039; } );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Collapsible tables; reimplemented with mw-collapsible&lt;br /&gt;
	 * Styling is also in place to avoid FOUC&lt;br /&gt;
	 *&lt;br /&gt;
	 * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].&lt;br /&gt;
	 * @version 3.0.0 (2018-05-20)&lt;br /&gt;
	 * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js&lt;br /&gt;
	 * @author [[User:R. Koot]]&lt;br /&gt;
	 * @author [[User:Krinkle]]&lt;br /&gt;
	 * @author [[User:TheDJ]]&lt;br /&gt;
	 * @deprecated Since MediaWiki 1.20: Use class=&amp;quot;mw-collapsible&amp;quot; instead which&lt;br /&gt;
	 * is supported in MediaWiki core. Shimmable since MediaWiki 1.32&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param {jQuery} $content&lt;br /&gt;
	 */&lt;br /&gt;
	function makeCollapsibleMwCollapsible( $content ) {&lt;br /&gt;
		var $tables = $content&lt;br /&gt;
			.find( &#039;table.collapsible:not(.mw-collapsible)&#039; )&lt;br /&gt;
			.addClass( &#039;mw-collapsible&#039; );&lt;br /&gt;
&lt;br /&gt;
		$.each( $tables, function ( index, table ) {&lt;br /&gt;
			// mw.log.warn( &#039;This page is using the deprecated class collapsible. Please replace it with mw-collapsible.&#039;);&lt;br /&gt;
			if ( $( table ).hasClass( &#039;collapsed&#039; ) ) {&lt;br /&gt;
				$( table ).addClass( &#039;mw-collapsed&#039; );&lt;br /&gt;
				// mw.log.warn( &#039;This page is using the deprecated class collapsed. Please replace it with mw-collapsed.&#039;);&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
		if ( $tables.length &amp;gt; 0 ) {&lt;br /&gt;
			mw.loader.using( &#039;jquery.makeCollapsible&#039; ).then( function () {&lt;br /&gt;
				$tables.makeCollapsible();&lt;br /&gt;
			} );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	mw.hook( &#039;wikipage.content&#039; ).add( makeCollapsibleMwCollapsible );&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse&lt;br /&gt;
	 *&lt;br /&gt;
	 * Maintainers: TheDJ&lt;br /&gt;
	 */&lt;br /&gt;
	function mwCollapsibleSetup( $collapsibleContent ) {&lt;br /&gt;
		var $element,&lt;br /&gt;
			$toggle,&lt;br /&gt;
			autoCollapseThreshold = 2;&lt;br /&gt;
		$.each( $collapsibleContent, function ( index, element ) {&lt;br /&gt;
			$element = $( element );&lt;br /&gt;
			if ( $element.hasClass( &#039;collapsible&#039; ) ) {&lt;br /&gt;
				$element.find( &#039;tr:first &amp;gt; th:first&#039; ).prepend( $element.find( &#039;tr:first &amp;gt; * &amp;gt; .mw-collapsible-toggle&#039; ) );&lt;br /&gt;
			}&lt;br /&gt;
			if ( $collapsibleContent.length &amp;gt;= autoCollapseThreshold &amp;amp;&amp;amp; $element.hasClass( &#039;autocollapse&#039; ) ) {&lt;br /&gt;
				$element.data( &#039;mw-collapsible&#039; ).collapse();&lt;br /&gt;
			} else if ( $element.hasClass( &#039;innercollapse&#039; ) ) {&lt;br /&gt;
				if ( $element.parents( &#039;.outercollapse&#039; ).length &amp;gt; 0 ) {&lt;br /&gt;
					$element.data( &#039;mw-collapsible&#039; ).collapse();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// because of colored backgrounds, style the link in the text color&lt;br /&gt;
			// to ensure accessible contrast&lt;br /&gt;
			$toggle = $element.find( &#039;.mw-collapsible-toggle&#039; );&lt;br /&gt;
			if ( $toggle.length ) {&lt;br /&gt;
				// Make the toggle inherit text color (Updated for T333357 2023-04-29)&lt;br /&gt;
				if ( $toggle.parent()[ 0 ].style.color ) {&lt;br /&gt;
					$toggle.css( &#039;color&#039;, &#039;inherit&#039; );&lt;br /&gt;
					$toggle.find( &#039;.mw-collapsible-text&#039; ).css( &#039;color&#039;, &#039;inherit&#039; );&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	mw.hook( &#039;wikipage.collapsibleContent&#039; ).add( mwCollapsibleSetup );&lt;br /&gt;
&lt;br /&gt;
	/* End of mw.loader.using callback */&lt;br /&gt;
} );&lt;br /&gt;
/* DO NOT ADD CODE BELOW THIS LINE */&lt;/div&gt;</summary>
		<author><name>Ashific</name></author>
	</entry>
</feed>