Saturday, September 10, 2011

Windows 7 32-bit with full 4 GB or 8 GB RAM support


The kernel of the 32-bit version of Windows 7 has only a lock, which prevents access to more memory. More dramatically is this lock in the 32-bit version of Windows 7 Starter Edition: There the prohibition is much more rigorous and it only allows access to 2 GB of RAM:

In the 32-bit version of Windows 7 from 4 GB usually only 3.25 -3.5 GB of RAM are usable:

In general many people believe this "not usable" RAM
is occupied by the graphic card RAM:

The German computer magazine c't has made a test
with different graphic cards (c't 23/2009, page 165):
Graphic card RAM
Usable RAM from 4 GB
0 MB
3.5 GB
128 MB
3.5 GB
256 MB
3.25 GB
512 MB
3.25 GB
1024 MB
3.25 GB
These results are completely incomprehensible. Why is with no video card (0 MB, connection via Remote Desktop) 512 MB RAM blocked? Why blocked a graphic card with 128 MB also 512 MB RAM – and not 128 MB? And why blocked a graphic card with 1024 MB "only" 750 MB?
The Russian Programmers Group "staforce" has written a small program witch removes the lock in the kernel of the 32-bit version of Windows 7. The program automatically makes a copy of the kernel file, then removes the lock and integrates the new kernel file as an extra boot menu entry in the Windows 7 boot menu. So then you have the option to start Windows 7 either as usual with the original kernel file or with the modified kernel file.
With such a patched (modified) kernel the 32 bit version of Windows 7
suddenly can use almost the entire 4 GB of RAM:

For these screen shots a 32 MB onboard graphic card is used. So 32 MB is really "hardware reserved". The rest of 2 MB is reserved for I/O ports (USB port, serial-, parallel port, etc.).
And even 8 GB of RAM are now no longer a problem.
The original kernel still reports that 4898 MB are "Hardware Reserved" - what hardware?

The patched kernel then reports correct that only 34 MB is "Hardware Reserved":

The RAM limit of the 32-bit version of Windows 7 is therefore 64 GB - like Microsoft describes for the "Windows Server 2003 Datacenter Edition" (see above). More extensive details - still from Vista-times - see here by Geoff Chappell.

The patch

The program "4GB-7600.RTM.x86.04.08.2009.exe" (2,2 MB) that patches the kernel is not yet translated into English. But the patch-program has only one button which must be pressed:

The program makes automatically a copy of the kernel file, then removes the lock and integrates the new kernel file as an extra boot menu entry in the Windows 7 boot menu. So then you have the option to start Windows 7, either as usual with the original kernel file or with the modified kernel file.
What the patch is doing you can read here in German language or here in machine translation. So you also can do it manually.
The patch has two small but treatable side effects:
  • Because Windows 7 observed the changes the kernel can not boot normally. For the Microsoft programmers who often times work with patched kernel Microsoft has built in a boot parameter - an additional switch: "testsigning = Yes"). So they can test their patched kernels. With this switch the patched kernel can start easily.
  • But this switch leads to the fact that on the desktop background, lower right corner (above the clock) a hint ("Watermark") is displayed:

To remove this "watermark" the patch program delivers a separate program
"watermark remover" ("Watermark Remover"):

This currently doesn't work - or only with Russian watermarks. Therefore you can press "Y" for "yes" or "N" for "no". However other "Watermark remover" from the Internet work properly. Afterwards the PC immediately reboots. Upon reboot there are 2 boot options - either the old, unmodified kernel or the new, patched kernel.
In a Command Prompt with admin rights you can see with the command
"bcdedit" the new boot menu entry in detail:

The text that appears in the boot menu can be found under "description".
"testsigning = Yes"  allows the patched kernel to start despite modification.
The copied and modified kernel is called "ntkrlStaforce.exe".
With "pae = ForceEnable" the address extension for the RAM is activated.

No comments: