Kernel Versions

The NT Operating System Kernel (NTOSKRNL) is the defining module of the whole Windows architecture. This note is specifically about the different versions of the kernel as a file on disk. The generality of Windows version numbering is treated separately.

32-Bit Windows (x86)

The kernel is distributed with each 32-bit Windows package in as many as four files:

This multiplicity is even without the complication of free and checked builds. The latter are offered by Microsoft as an aid to debugging and since they are explicitly not for real-world use they are all but ignored at this website.

PAE stands for Physical Address Extension. It applies only to 32-bit (x86) builds. The point to having separate builds for PAE is that the memory manager is specialised to use 32-bit or 64-bit page table entries. This is not a choice that will change mid-flight and so the loaded kernel is better to have code for only one or the other, not both. In many versions, users can make the choice at boot time, through the /PAE and /NOPAE switches in BOOT.INI or the pae option in the Boot Configuration Data (BCD). Later versions also allow indirectly for selection of the PAE kernel to be forced by a /NOEXECUTE switch or nx option.

An installed system has either the single-processor kernels or the multi-processor kernels but not both. If the multi-processor kernels are installed, they are renamed to NTOSKRNL.EXE and NTKRNLPA.EXE as if for a single-processor system. Starting with version 6.2, an installed system has only the multi-processor PAE kernel, already renamed to NTOSKRNL.EXE.

Put another way, the kernel’s standard name is NTOSKRNL.EXE, except that where the kernel may be installed both with and without support for PAE, the kernel has the two standard names NTOSKRNL.EXE and NTKRNLPA.EXE. In the versions that install both, the loader has the two standard names hard-coded. All versions can be directed to load an alternative as specified by a /KERNEL switch or kernel option.

Builds

The following 32-bit (x86) builds have been inspected for these notes. Most are from MSDN discs. Some, especially since Microsoft greatly reduced its shipment of operating systems on MSDN discs, are from service packs downloaded (typically as self-extracting executables) from a Microsoft website.

Special mention must be made of the very oldest builds. Even among the many discs that I retain from MSDN subscriptions in the 1990s, what was then the new Windows that is entirely its own operating system rather than a large DOS program goes no further back than Windows NT 3.51. For all practical effect, Microsoft informally disowned the early versions, even for its so-called Archive editions. For decades I had little choice but to treat Windows NT 3.51 as the dawn of time for these notes. In 2017 someone pointed me to an online collection of earlier builds. The sample is inevitably incomplete. The provenance is unknown. I have since sought more: the WinWorld online museum is notable.

Builds are arranged in increasing order of the file version as recorded in the executable’s resources. This version number is readily visible using Windows Explorer either in a so-called infotip for the file or by accessing the Version tab in the Properties dialog for the file. Programmers know this version number as coming from the so-called root block of the version-information resource, specifically from the dwFileVersionMS and dwFileVersionLS members of a VS_FIXEDFILEINFO structure.

The date stamp shown for each version is more obscure. File dates are easily modified after the executable is built and are anyway liable to be shown differently when read from different time zones. However, there is in each executable’s header a date stamp which is set when the executable is built and which is not commonly changed afterwards. It is readily accessible to anyone with programming knowledge and appropriate tools, e.g., Microsoft’s own DUMPBIN utility.

Any study worth making of Windows—and please remember that the list below exists only as a catalogue of which builds are studied—is much too intensive to cover pre-release builds, hot fixes and other updates. Access to pre-release builds anyway tends to come with constraints and compromise that other researchers may tolerate (and even be happy with) but which I do not. None of this work is done with any sort of assistance from Microsoft beyond the binaries, as published by the tens and even hundreds of millions, and the same documentation that’s available to all Windows programmers.

The kernel files for each build are listed in the order: NTOSKRNL.EXE, NTKRNLMP.EXE, NTKRNLPA.EXE, NTKRPAMP.EXE. Not all versions have all four. Versions before 5.0 have only NTOSKRNL.EXE and NTKRNLMP.EXE. Versions from 6.0 onwards are built with both single-processor and multi-processor kernels in the same pattern as for earlier versions, but the installation image on the distribution media has only the multi-processor kernels, and these are already renamed to NTOSKRNL.EXE and NTKRNLPA.EXE. Version 6.2 and higher have only the multi-processor PAE kernel, already renamed to NTOSKRNL.EXE.

File Version File Header Date Stamp File Size Package
3.10.511.1 2C921D20 (11th September 1993)
2C921C62
788,964
798,724
Windows NT 3.1 Workstation
3.10.5098.1 2C51C0E8 (24th July 1993)
2C51C08A
788,964
798,724
Windows NT 3.1 Advanced Server
3.10.528.1 2E11BE21 (29th June 1994)
2E11BDA8
788,964
798,724
Windows NT 3.1 SP3
3.50.800.1 2E6A07F7 (4th September 1994)
2E6A0826
752,944
763,840
Windows NT 3.5
3.50.807.1 2FE8B905 (21st June 1995)
2FE8B916
755,504
767,424
Windows NT 3.5 SP3
3.51.1025.1 2FC653BC (27th May 1995)
2FC653E6
804,864
816,592
Windows NT 3.51
3.51.1057.3 3071868B (3rd October 1995)
307186CA
807,760
819,712
Windows NT 3.51 SP2,
Windows NT 3.51 SP3
3.51.1057.5 313B3DD8 (4th March 1996)
313B3E1D
808,256
820,208
Windows NT 3.51 SP4
3.51.1057.6 321A03D2 (21st August 1996)
321A03F0
809,488
821,296
Windows NT 3.51 SP5
4.0.1381.1 3255A915 (5th October 1996)
3255A937
868,288
884,928
Windows NT 4.0,
Windows NT 4.0 SP1
4.0.1381.3 32ADD131 (10th December 1996)
32ADD153
871,616
888,576
Windows NT 4.0 SP2
4.0.1381.4 337546BF (11th May 1997)
337546EF
914,688
934,016
Windows NT 4.0 SP3
4.0.1381.133 36224CDA (13th October 1998)
36224D24
927,552
947,584
Windows NT 4.0 SP4
4.0.1381.204 371CD681 (21st April 1999)
371CD6A1
928,576
948,544
Windows NT 4.0 SP5
4.0.1381.335 37E8005B (22nd September 1999)
37E80077
931,584
951,808
Windows NT 4.0 SP6
5.0.2195.1 384D9B17 (8th December 1999)
384D5A76
384D5A86
384D5A97
1,640,976
1,611,712
1,611,840
1,632,000
Windows 2000
5.0.2195.1620 39760637 (20th July 2000)
3975DFDF
3975DFFA
3975DFFA
1,702,800
1,677,696
1,677,760
1,698,304
Windows 2000 SP1
5.0.2195.5438 3D366B8B (18th July 2002)
3D362A77
3D362A90
3D362A99
1,712,720
1,687,552
1,687,360
1,707,904
Windows 2000 SP3
5.0.2195.6717 3EE6C002 (11th June 2003)
3EE650B3
3EE650C9
3EE650CD
1,719,056
1,694,976
1,694,080
1,715,008
Windows 2000 SP4
5.1.2600.0 3B7DE38F (18th August 2001)
3B7DC674
3B7D82F5
3B7D82F9
1,982,208
1,897,984
1,896,704
1,869,824
Windows XP
5.1.2600.1106 3D6DE35C (29th August 2002)
3D6DD59C
3D6DD59C
3D6DD59C
2,042,240
1,891,840
1,947,904
1,920,512
Windows XP SP1
5.1.2600.2180 41108004 (4th August 2004)
41107FAA
41107B0C
41107B0D
2,180,992
2,148,352
2,056,832
2,015,232
Windows XP SP2
5.1.2600.5512 48025EAB (14th April 2008)
48025DE7
4802516A
4802516A
2,188,928
2,145,280
2,065,792
2,023,936
Windows XP SP3
5.2.3790.0 3E800A79 (25th March 2003)
3E8015C6
3E800012
3E800013
2,201,600
2,401,792
2,062,848
2,105,344
Windows Server 2003
5.2.3790.1830 42435E33 (25th March 2005)
42435E60
42435B14
42435B14
2,414,592
2,452,480
2,266,624
2,306,560
Windows Server 2003 SP1
5.2.3790.3959 45D6A072 (17th February 2007)
45D6A0AF
45D69710
45D69710
2,430,464
2,469,888
2,280,960
2,321,408
Windows Server 2003 SP2
6.0.6000.16386 4549AD6C (2nd November 2006)
4549AE00
3,467,880
3,502,184
Windows Vista
6.0.6001.18000 47918B0A (19th January 2008)
47918B12
3,548,728
3,600,440
Windows Vista SP1,
Windows Server 2008
6.0.6002.18005 49E01996 (11th April 2009)
49E0199E
3,549,672
3,601,896
Windows Vista SP2
6.1.7600.16385 4A5BBFFC (14th July 2009)
4A5BC007
3,899,472
3,954,768
Windows 7
6.1.7601.17514 4CE78A06 (20th November 2010)
4CE78A09
3,911,040
3,966,848
Windows 7 SP1
6.2.9200.16384 5010ADF0 (25th July 2012) 5,563,120 Windows 8
6.3.9600.16384 52157309 (21st August 2013) 5,757,792 Windows 8.1
6.3.9600.17031 53085A16 (22nd February 2014) 5,786,968 Windows 8.1 With Update
10.0.10240.16384 559F3E62 (9th July 2015) 6,263,648 Windows 10
10.0.10586.0 5632D21B (29th October 2015) 5,797,728 Windows 10 Version 1511
10.0.14393.0 57898E79 (15th July 2016) 6,015,328 Windows 10 Version 1607
10.0.15063.0 58CCB6F3 (18th March 2017) 5,862,296 Windows 10 Version 1703
10.0.16299.15 59CDA2AC (28th September 2017) 6,404,504 Windows 10 Version 1709
10.0.17134.1 5ACD8A1D (11th April 2018) 6,717,856 Windows 10 Version 1803
10.0.17763.107 2485A890 6,919,992 Windows 10 Version 1809
10.0.18362.1 643D947E 7,067,152 Windows 10 Version 1903
10.0.18362.418 FDF958E2 7,069,200 Windows 10 Version 1909
10.0.19041.208 1FE3EFCB 7,239,480 Windows 10 Version 2004

Where two or more Windows packages are listed for a set of files, as with service packs 2 and 3 of Windows NT 3.51, the files with the same name in each package are the same, byte for byte.

Service-pack holdings are complete starting with version 4.0. That Windows 200 SP2 is omitted is because a self-extracting executable has been inspected for these notes but no kernels were found.

Each kernel in Windows Server 2008 is the same as in Windows Vista SP1, byte for byte. Similar correspondence between client and server editions of later Windows versions is so much expected that the server editions are not tracked explicitly for any of this study’s other pages.

How or why Microsoft gets the date stamps in the kernels from later releases of Windows 10 to be so obviously invalid is not yet understood. No, a few scraps tossed from a Microsoft blog do not count as how or why.

The 1909 release of Windows 10 was given its own place in the succession of roughly biannual updates named for year and month, but it has nothing like the significance of other such updates which each increased the build number by several hundred or even thousands. The 1909 release is listed here only because Microsoft presented it as a significant update. All the pages of this study of the Windows kernel treat the 1909 release as a minor bug-fix update of the 1903 release.

64-Bit Windows (x64)

Microsoft’s distribution of 64-bit Windows on MSDN discs in the early years was even less reliable than was my renewal of subscriptions. I seem never to have received a 64-bit edition of Windows XP, which is therefore not included in this study. (I suspect anyway that it was a build of version 5.2, i.e., of Windows Server 2003, rebadged for better marketing.) Though correspondents tell me that 64-bit Windows Vista was readily available the moment that Windows Vista was released, my experience is instead that a year-long MSDN subscription in 2007 produced no x64 build of the original Windows Vista. The copy inspected of that is instead from an OEM disc. Though all service-pack builds that have been inspected for this study have been available through MSDN subscriptions, some of the copies studied have instead been downloaded as self-extracting executables from Microsoft’s free websites since, for who knows what reason, it frequently happened that the MSDN site that I paid to access was intolerably slow—not that my tolerance was high, especially while Microsoft was at the time not just leaving me to the tedium of burning disks and labelling them, but telling me that their purpose was to be environmentally friendly.

Some Microsoft documentation, e.g., of the KeAcquireSpinLockRaiseToDpc function, talks of “64-bit versions of Windows 2000” but I certainly never received any such thing from MSDN subscriptions at the time and I don’t believe the MSDN site has ever listed such things even as being available to download. These notes are anyway just for the amd64 processor architecture, also commonly referred to as x64. Though early versions of Windows were small enough for the distribution media to have binaries for multiple processor architectures and later versions were supplied on separate media, I was never interested. I do still have them from MSDN subscriptions, but I have no intention of listing them.

The kernels for each build are listed in the order NTOSKRNL.EXE and then NTKRNLMP.EXE, but only version 5.2 has both. Versions from 6.0 onwards are built with both single-processor and multi-processor kernels, but the installation image on the distribution media has only a multi-processor kernel, which is already renamed to NTOSKRNL.EXE.

File Version File Header Date Stamp File Size Package
5.2.3790.1830 42436096 (25th March 2005)
42436123
4,443,648
4,416,000
Windows Server 2003 SP1
5.2.3790.3959 45D69A26 (17th February 2007)
45D69AB4
4,496,896
4,566,528
Windows Server 2003 SP2
6.0.6000.16386 4549B6C6 (2nd November 2006) 4,420,712 Windows Vista
6.0.6001.18000 479192B7 (19th January 2008) 4,694,072 Windows Vista SP1,
Windows Server 2008
6.0.6002.18005 49E0237F (11th April 2009) 4,699,608 Windows Vista SP2
6.1.7600.16385 4A5BC600 (14th July 2009) 5,511,248 Windows 7,
Windows Server 2008 R2
6.1.7601.17514 4CE7951A (20th November 2010) 5,563,776 Windows 7 SP1,
Windows Server 2008 R2 SP1
6.2.9200.16384 5010AC4B (25th July 2012) 6,969,584 Windows 8
6.3.9600.16384 5215D156 (22nd August 2013) 7,416,160 Windows 8.1
6.3.9600.17031 53085AF2 (22nd February 2014) 7,425,368 Windows 8.1 With Update
10.0.10240.16384 559F3C1A (9th July 2015) 8,020,832 Windows 10
10.0.10586.0 5632D2D1 (29th October 2015) 7,477,600 Windows 10 Version 1511
10.0.14393.0 578998F1 (15th July 2016) 7,814,496 Windows 10 Version 1607
10.0.15063.0 58CCBA4C (18th March 2017) 8,319,904 Windows 10 Version 1703
10.0.16299.15 59CDA780 (28th September 2017) 8,592,280 Windows 10 Version 1709
10.0.17134.1 5ACD8966 (11th April 2018) 9,159,072 Windows 10 Version 1803
10.0.17763.107 8BB5571E 9,696,256 Windows 10 Version 1809
10.0.18362.30 E2F1A52B 9,917,752 Windows 10 Version 1903
10.0.18362.418 FC9570F2 9,928,504 Windows 10 Version 1909
10.0.19041.208 6A8090CC 10,281,000 Windows 10 Version 2004

Where two packages are shown for the same build, the executables are identical. This identity is not just observed for Windows 7 SP1 and Windows Server 2008 R2 SP1 but is formalised in the sense that Microsoft provides the one self-extracting executable for both product names.