Why Memtest86 Don’t Require An Operating System Support To Run

Memtest86 has both GUI and CLI versions of their tools. It seems that the new Memtest86+ v4.20 is only available for the CLI version while the older Memtest86 3.5.0 is available with both versions. The difference between these two versions is discussed in the following sections, but before that let’s have a quick look at the software architecture.

If you take a look at Memtest86 source code, you can find that it is a console mode application written in C language and there are no dependencies to any operating system libraries, so running from DOSbox/Win98 boot disks is possible. But if you have ever tried to run downloaded binaries on real hardware, you must have realized that it will not run from floppy disks or flash drives.

The reason behind this is that Memtest86 binary images are compressed using the UPX compression utility, a widely used executable packer that removes all data from binaries files except code and relocation data. It was designed primarily for executables but it also works with other file types.

In the older versions of Memtest86, there is a small ELF loader program at the DOS stub code section which loads all binary data from floppy disks when you boot from them and pass control to it. ELF (Extended Executable File Format) is used in Linux systems for executable files and shared libraries. Now if you use the GUI version of Memtest86, it will provide an option to directly pass control to the binary image file it creates during installation. Updating Memtest86 using official Windows packages is another way to get a newer version as older versions are not available now.

However, if you try to use any one of these solutions on real hardware for floppy booting or as a replacement for the DOS stub code, you will be greeted with an error message as no operating system is loaded. This is why Memtest86 now comes as a console application only and there are no floppy images available.

User-mode applications in Windows NT-based systems must have a file called application configuration (app.cfg) in their directory for configuration settings. But if you try to open the app.cfg file in Memtest86 directory, you will find that it doesn’t contain any configuration settings but just a list of files needed by Memtest86 shown below:

  • Configuration File for MemTest86 v4.20
  • !!FileList_632FEA54
  • !!FileList_632FEA58
  • !!FileList_632FEA5C
  • !URL,http://www.memtest86.com/,0,VCARD
  • !URL,mailto:support@memtest86.com,0,AUTO