/kernel and 8.3 file names

Although the Windows file systems have supported filenames with more than 8 chanracters for years, it has still remained good practice (at least for native development) to name modules in 8.3 format. While modules not adhering to this practice normally work well, there is at least one situation where giving a module a long file name does make a real difference: the file name of the kernel.

The default kernel file name is ntoskrnl.exe. Using the /kernel boot parameter, this default can be overridden and an arbitrary file can be specified to be loaded as kernel — this is especially useful when you routinely switch between different kernels, such as the free and checked build.

If, however, you try to give your alternate kernel a non-8.3 name, you will be saluted with the following screen on next boot:

boot screen

Quite obviously, ntldr is not capable of loading a kernel from a non-8.3 file :)



About me

Johannes Passing lives in Berlin, Germany and works as a Solutions Architect at Google Cloud.

While mostly focusing on Cloud-related stuff these days, Johannes still enjoys the occasional dose of Win32, COM, and NT kernel mode development.

He also is the author of cfix, a C/C++ unit testing framework for Win32 and NT kernel mode, Visual Assert, a Visual Studio Unit Testing-AddIn, and NTrace, a dynamic function boundary tracing toolkit for Windows NT/x86 kernel/user mode code.

Contact Johannes: jpassing (at) hotmail com

LinkedIn Profile
Xing Profile
Github Profile

%d bloggers like this: