Windows XP 32ビットで4GBの制限を克服した方法

すぐに予約を行うと、名前の「克服」は、XPがシステムボードにインストールされているすべてのメモリを認識しているという事実のみを反映しています。 私は方法を思いついていませんでした、私はちょうどそれを使用し、今私はそれを共有したいです。

Windows XPの4ギガバイトのメモリ(ここおよび以下では32ビット)の問題は、インターネット上で何度も提起されてきました。 また、原則として4つ以上を表示することは不可能であり、機器もアドレススペースを必要とするため、さらに少ないと結論付けられました。 通常は3.25 GB程度です。 この問題の歴史については、 4ギガバイトのメモリ-達成不可能な目標ですか?



この質問も私を心配させました。 64ビットシステム、またはWindows Server(32ビットバージョンでもすべてのメモリが表示されます)をインストールできるように見えますが、Windows XPを使用したかったのです。 過去3年で2回Windows 7に切り替え、1回目は64ビットに、2回目は32ビットに切り替えましたが、最終的には両方ともXPに戻りました。

前回、私は文字通り2週間前に年配の女性を支持して7人を放棄しました。 さらに、7つは32ビットでしたが、使用可能なすべてのメモリを表示する機能はロック解除されていたことに注意する必要があります。 ロック解除方法はインターネットで利用可能です。 そして今、私はXPでこの問題を解決したかったのです。



このサイトにつながった検索: 4 GBを超えるメモリに対処するためにVistaのカーネルにパッチを適用

この記事はWindows Vistaのロック解除に関するものですが、コメントでは、2、3人の人々がWindows XPの同様の方法を説明しています。 私は彼らのアドバイスに従い、このテクニックを実際に試してみることにしました。



まず、Windows XP SP1ディストリビューションが必要です。 おそらく、最初のサービスパックも適しているのかもしれませんが、知りません。 一般に、そこに必要なファイルは1つだけです。 つまり、ハードウェアアブストラクションレイヤーライブラリファイルです。 2番目のサービスパックから開始して、このライブラリはPAEで「実際に」動作します。 拡張アドレス変換モードがオンになっていても、何もせず、4ギガバイトを超えません。 ただし、最初のサービスパックのライブラリは完全に機能し、32ビットWindows Serverがメモリを操作する方法と同様に、使用可能なすべてのメモリにアドレス指定できます。 インストールされたWindows XPでは、このファイルはhal.dllと呼ばれますが、ディストリビューションには複数のHALファイルが含まれており、インストールプロセス中にそのうちの1つだけがhal.dllという名前でシステムにインストールされます。 特定の機器で使用するファイルを見つける必要がありました。 これは単純に行われ、インストールされたWindowsのhal.dllファイルのエクスプローラーコンテキストメニューでプロパティを呼び出す必要があります。 ファイルは%systemroot%\ system32フォルダーにあり、これは私が見たものです:







I386フォルダーのWindows XP SP1ディストリビューションでは、HALMACPI.DL_ファイルを取得しました。 これは、halmacpi.dllを検索したファイルが1つあるアーカイブです。 WinRARで抽出しましたが、コマンドラインで取得できます。

HALMACPI.DL_を展開HALMACPI.DLL

結果のファイルは、%systemroot%\ system32フォルダーに配置する必要があります。 誰かが私の手順を繰り返したい場合、インストールされたWindows XPのhal.dllプロパティの「元のファイル名」プロパティで指定された名前でファイルを取得する必要があるという事実にもう一度注意を喚起したいと思います。



2番目に行うことは、Windowsカーネルのパッチバージョンを入手することです。 ご存知のように、4つのカーネルバージョンがあります。



私が使用した指示はntkrnlpa.exeカーネルについて語ったものであり、それはまさに私のWindowsインストールの内容でした。 別のコアが発生した場合の対処方法-正直わかりません。

まず、カーネルのコピーを作成し、krnl16.exeという名前を付けました。原則として、名前は重要ではありません。 次に、HEXエディター(古いメモリからDOS-Navigatorを使用しました)で、シーケンスを見つける必要があります



ここで、1000h = 4096 Mb、4000h = 16384 Mbに置き換えます。 つまり 制限を16GBに引き上げます。 原則として、より大きな数値を入力できます。 パッチを当てたファイルはsystem32にも配置する必要があります。



これで、boot.iniを編集できます。 既存の行をコピーして、いくつかのパラメーターを追加する必要があります。 私は行を持っていました:

マルチ(0)ディスク(0)rdisk(0)パーティション(1)\ WINDOWS.XP = "Microsoft Windows XP Professional RU" / FASTDETECT / USEPMTIMER / NOSERIALMICE / NOEXECUTE = OPTIN



/KERNEL=KRNL16.EXE /HAL=HALMACPI.DLL / PAEを追加した結果、次のようになりました。

マルチ(0)ディスク(0)rdisk(0)パーティション(1)\ WINDOWS.XP = "Microsoft Windows XP Professional RU 16Gb" / FASTDETECT / USEPMTIMER / NOSERIALMICE / NOEXECUTE = OPTIN /KERNEL=KRNL16.EXE / HAL = HALMACPI DLL / PAE

システムファイルを置き換えず、上記のboot.iniパラメーターを使用した作業に含まれる2つだけを追加したため、固有のメモリ制限を持つ標準のWindowsとパッチを適用したWindowsの両方を起動できるようになりました。



再起動!

そして... BSOD。

原則として、これは可能です。 ixbtの問題履歴のレビューからわかるように、Microsoftが上位メモリアドレス指定をオフにした理由は、さまざまなハードウェアの湾曲したドライバーの存在でしたが、その湾曲は完全なPAEモードでのみ現れました。 そのうちの1つが失敗する可能性が高く、6年間多くのことがシステムに蓄積されましたが、どれが失敗しますか? 私はセーフモードで起動しようとします、そして万歳! ここに、私のギガバイトがあります:







しかし、失敗したモジュールを識別する方法は? グーグル、私はこのためのテクニックを見つけました。これは、BSODでWindowsによって作成された小さなメモリダンプを分析することで構成されています。 分析はブルースクリーンビュープログラムによって実行されますが、ダンプ記録モードを有効にするために見つけたすべての方法は成功しませんでした。ダンプは作成されなかったため、科学的な方法を使用する必要がありました。 最初に、システムで見つかった不要なものをアンインストールしました。 つまり、Guardant保護ドライバーと古いビデオカードのATIドライバー。

再起動

結果は私の期待を超えました。 正直なところ、pokeメソッドがそのような結果をもたらすとは思っていませんでしたが、少なくとも何かをするためだけに試しました。 どのドライバーが問題を引き起こしていたのか、確かにわかりませんが、おそらくGuardantであると思います。

しかし、主なこと:目標は達成されており、現在、メモリを8 GBに拡張することを考えています。






All Articles