32-bit Windows mit 4 GB Arbeitsspeicher (oder mehr)

Drucken E-Mail
Benutzerbewertung: / 19
SchwachPerfekt 
Geschrieben von: Vladislav Zorov   
Sonntag, den 15. November 2009 um 10:40 Uhr
cd

Die Speicherbegrenzung

Sie haben ein 32-Bit Betriebssystem und 4GB Arbeitsspeicher. Aber trotzdem sehen Sie überall nur ein Teil von Ihren 4GB (variiert meistens zwischen 3,4 und 3,6). Wenn Sie mehr Speicher haben, dann verlieren Sie sogar noch mehr. Sie haben es gekauft, Sie haben es bezahlt, aber Sie können es nicht nutzen. Hier zeige ich Ihnen, wie man Windows verändern kann, so dass man den ganzen Speicher nutzen kann.

PAE und das Windows-Lizenzmodell

Der allgemeine Irrglauben ist, dass 32-Bit Betriebssysteme auf 4 GB Arbeitsspeicher begrenzt sind. Selbst manche Experten wissen es nicht, dass es seit Pentium-Pro-Zeiten möglich ist nicht nur 32, sondern 36 Bit als Adresse zu nutzen. So liegt die Grenze bei 64 GB und nicht bei 4 GB.

Alle Windows Varianten von Vista und 7 unterstützen diese Erweiterung und haben es sogar meistens schon standardmäßig eingeschaltet. Manche würden sagen, dass man dadurch Leistung verlieren kann, aber Ihr System läuft jetzt schon in diesem Modus wenn Sie DEP (Data Execution Prevention) eingeschaltet haben (Standarteinstellung: Ein).

Warum sind wir dann auf 4 GB begrenzt? Der Grund ist nicht technisch, sondern wirtschaftlich. Microsoft hat es entschieden, PAE nur bei ihre Serversysteme zu lizensieren und die Desktop-Varianten auf 4 GB zu begrenzen. Viele Leute wissen es nicht, dass es in Wirklichkeit keine Begrenzung gibt und dass bestimmte Personen die Situation möglichst nicht zu verändern versuchen. Aber da gibt es Fälle, wo man einfach nichts machen kann, z.B. da sind keine Treiber für Windows 64-Bit oder Sie haben zwar 4 (oder mehr) GB Arbeitsspeicher, aber keine 64-Bit CPU etc.

Was können wir machen?

Am Anfang will ich sagen, dass ich nicht verantwortlich gehalten werden kann, egal was Sie mit dieser Information anstellen. Ich demonstriere es einfach, weil ich das Publikum aufklären will, aber diese Modifikation ist trotzdem nach den Microsoft-Richtlinien u.U. illegal! Wenn Sie offiziellen Support brauchen, müssen Sie eine Server-Lizenz bei Microsoft erwerben. Wenn Sie keine Lizenz (oder MSDN Subscription) haben, bitte kaufen Sie eine!

Die Idee ist, dass Windows beim Starten einfach eine Variable überprüft, um zu bestimmen, wo er schneiden soll. Wenn Sie genau 4 GB haben und er bei 4 GB schneidet, wird ein Teil von Ihrem Arbeitsspeicher von PCI Karten verdeckt (z.B. Ihre Grafikkarte braucht ihr ganzer Videospeicher im gleichen Adressraum). Die verdeckten Adressen können nie mehr im Arbeitsspeicher gelesen oder geschrieben werden, weil man nicht bestimmen kann, welches Gerät man ansprechen will. Aber wenn man diese Begrenzung im Windows abschafft, so können alle anderen Geräte ihre Adressen außerhalb von den 4 GB setzen - der ganze Arbeitsspeicher bleibt so ansprechbar. Diese Funktion heißt „Memory Remapping" und muss von deiner Hauptplatine unterstützt sein. Wenn Sie eine ziemlich neue Platine haben, können Sie ziemlich sicher sein, dass Sie es haben (normallerweise alle Modelle, die potenziell eine 64-Bit CPU unterstützen würden).

Werkzeuge

  • Hex-Editor (auch Binär-Editor genannt, z.B. HxD oder xvi32)
  • Das Windows SDK oder WDK für makecert und signtool (ist im Visual Studio enthalten)
  • Wenn Alles OK ist, auch removewatermark um der kleine Text unten zu entfernen

Der Patch

Hier besprechen wir die Datei „NTKRNLPA.EXE", die sich im „C:\WINDOWS\SYSTEM32" Verzeichnis befindet. Estellen Sie eine Kopie, und ab jetzt arbeiten wir mit diese Kopie (heißt bei mir ntkr128g.exe).
Öffnen Sie Ihr Hex-Editor und machen Sie die Datei auf. Wir suchen die Bytefolge "7C XX 8B 45 FC 85 C0 74 YY" – hier sind XX und YY unbekannt, aber das macht nichts aus, weil die mittleren bekannten Bytes sehr selten vorkommen und die 2 richtigen Stellen relativ einfach gefunden sind. Wir müssen dann Beide stellen mit "B8 00 00 02 00 90 90" ersetzen, wobei wir mit 8B anfangen (also, „7C XX" bleibt erhalten).

Das Original disassembliert zu:

jl default
mov eax,dword ptr [ebp-4]
test eax,eax
je default

Die Veränderung ist:

mov eax,00020000h
nop
nop

Alles noch mal überprüfen, abspeichern und im SYSTEM32 Verzeichnis einfügen.
Da wir die Kernel-Datei verändert haben, ist sie nicht mehr digital unterschrieben und Windows wird verweigern sie zu starten. Ich habe gehört, dass dieses Verhalten mit den Benutzerkonteneinstellungen zu tun hat, aber eine Unterschrift kann nicht schaden. Deshalb müssen wir unseren eigenen Schlüssel erstellen und die Datei unterschreiben. Im SDK (oder WDK) Verzeichnis finden Sie makecert.exe:

makecert -r -ss my -n "CN=Meine Name"

Und dann mit signtool die .exe Datei unterschreiben:

signtool sign -s my -n "Meine Name" ntkr128g.exe

Die Starteinstellungen

Jetzt werden wir im Boot-Menü einen neuen Eintrag erstellen, so dass wir zwischen die normale und veränderte Kernel-Datei wechseln können. Wenn alles so funktioniert, wie wir es uns vorstellen, können wir die veränderte Datei zu Standard machen.

bcdedit /copy {current} /d "Windows Vista 128G"

Wir kriegen eine lange Nummer (GUID), die unser Eintrag identifiziert. Die kopieren wir in die Zwischenablage und dann immer dort einfügen, wo {guid} steht.

bcdedit /set {guid} pae ForceEnable
bcdedit /set {guid} kernel ntkr128g.exe
bcdedit /set {guid} testsigning on

Neustarten und genießen :)

Starten Sie Ihren Rechner neu, und überprüfen Sie, ob alles in Ordnung ist. Es kann vorkommen, dass wirklich veraltete Treiber mit diesen Veränderungen nicht klarkommen, aber bei mir gab es auf paar verschiedene Rechner keine Probleme. Wenn Sie zufrieden sind, können Sie mit removewatermark den Text unten entfernen und in die Systemsteuerung den neuen Eintrag zu Standard machen. Zusätzlich können Sie dann ausprobieren, ob Ihr Windows noch eine Optimierung verträgt:

bcdedit /set IncreaseUserVa 2800

Vista_4GB_Screenshot


Quelle auf Englisch: http://www.geoffchappell.com/viewer.htm?doc=notes/windows/license/memory.htm

Share
Zuletzt aktualisiert am Samstag, den 17. Juli 2010 um 21:31 Uhr
 

Kommentare  

 
0 #1 pmang 2009-11-24 21:27
Leider kommt die Bytefolge bei WINXP 4mal vor
Zitieren
 
 
+1 #2 Vladislav Zorov 2009-11-25 00:18
zitiere pmang:
Leider kommt die Bytefolge bei WINXP 4mal vor


Ich habe Windows XP mit SP 3, und ich finde es nur 3 Mal. Aber das, was du sagst, stimmt - bei XP ist es nicht so einfach wie bei Vista oder 7.

Die 2 richtigen Stellen (für SP3) sind auf Adresse 000A6BBD und 000A9C36.
Das merkst du, weil die richtigen 2 ziemlich nah beieinander sind und die falsche - viel weiter weg.

EDIT: Ok, das funktioniert NICHT unter XP. Da gibt es EINE Möglichkeit, aber es ist zu gefährlich und führt hoch wahrscheinlich zu Abstürze und andere Probleme. Ich werde es nicht weiter empfehlen. Bei Vista und 7 ist immer noch alles in Ordnung.
Zitieren
 
 
0 #3 Jöran 2009-12-29 11:35
Moin,

ich check nich, wie ich das bearbeiten soll... bei Windows 7 Home Premium existiert die mehr als 5 mal... welche muss ich nun bearbeiten?
Ich habe bei dem Hex-Edit folgendes in die Suche gegeben: 8B 45 FC 85 C0 74

Wie muss ich das nun ändern? Ich möchte nämlich mehr als meine 2,25GB von 4,0GB nutzen...

Jöran
Zitieren
 
 
0 #4 Vladislav Zorov 2009-12-29 17:51
Hallo Jöran,

zitiere Jöran:
bei Windows 7 Home Premium existiert die mehr als 5 mal...


Suche nach diese Stellen, wo auch 7C und noch eine Zahl am Anfang steht.

2,25GB von 4GB scheint ziemlich extrem zu sein, bist du sicher das du alle Einstellungen im BIOS richtig hast?
Zitieren
 
 
0 #5 Jöran 2009-12-29 18:08
Ich hab' ne GraKa: NVidia GT230M CUDA 1GB
Medion
und 500GB Festplatte...

Wie kann ich dann nen Eintrag bearbeiten?

Und wie müsste der dann aussehen?
Zitieren
 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Login

Finden Sie uns auf

TwitterFaceBookfeed
Blogverzeichnis - Blog Verzeichnis bloggerei.de blogoscoop