WinXPのHAL入れ替え方法

一昨日〜夕べにかけて、WindowsXP(MCE205) の HAL の入れ替えを、再インスコ&修復セタップ無しでなんとか現状の環境のまま入れ替えられないものかということで試行錯誤した結果、無事に入れ替えることに成功したのでそのやり方メモ。mixiのほうでやり方知りたいってことだったんで、まぁせっかくだから後の兵士のためにちゃんと残しておこうかなと。

まず、これは マルチプロセッサなのにHALがシングルプロセッサとして認識してしまっているという状況を、ハードウェアの実装通りマルチプロセッサとして認識させる、というのが主眼なので、それ以外の目的での HAL の入れ替えについては考慮していないので注意。
で、この手順を使うためには、3つの条件を満たしていないとダメ(といっても実質的には2つといっていいけど)。その条件は…
1) デバイスマネージャの"プロセッサ"で2つ以上のCPUが認識されていること
2) デバイスマネージャの"コンピュータ"が ACPI(Advanced Configuration and Power Interface)PC になっていること
3) マザー(BIOS)でACPIが有効に設定できること
という3つなんだけど、実際にはHT対応P4やCore2DuoみたいなCPUを載せるマザーでACPI非対応なんてことはまずアリエナーイので、実質的には2つってことになる。

次は具体的な作業内容。実は全然面倒じゃないというかむしろカンタン。つまるところこの手順に至るまで、いかにWindowsXPを再インスコしないで済ませられるかってところを調べる方がよほど手間だった罠 orz

1) SP2適用済のWindowsXPのCD-ROMでもISOイメージでもいいので用意する(これくらい自分でやれw)
2) i386フォルダにある、halaacpi.dl_ と halmacpi.dl_ をHDDの適当なディレクトリにコピー
3) コマンドプロンプトから(2)でコピーしたディレクトリに行って、標準コマンドの expand を使ってそれぞれの拡張子を dll にしたファイル名に展開する
4) 展開した二つの .dll を、Windowsシステムフォルダ(デフォルトなら c:\windows\system32だな)にコピー
5) boot.ini(普通は c:\boot.ini)をテキストエディタで開く。デフォルトではhiddenになってて見えないので何とかして編集できる状態にする。一番簡単なのはコントロールパネルの"システム"(orマイコンピュータのプロパティ)→"詳細設定"→"起動と回復"の設定→"編集" ね)
6) ごくごく普通の環境なら、[operating systems]セクション以下に、"multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=…"ってなってる行が見つかるから、それをコピーしてすぐ下の行にペーストして同じ行を2個作る
7) 2行目の方の最後に、/hal=halaacpi.dll って文字列を追加する( ""で囲まれている部分はメニュー項目として表示されるから、元々あった方と区別がつくように "" 内を書き換えておくとベター)
8) PCを再起動すると、WindowsXP の起動メニューが表示されるから、(7) で書き換えた方を選択する
9) うまくいけば WindowsXP がそのまま起動する、場合によっては、「新しいハードウェアがインストールされた」とか言われて再起動が必要な場合もある
10) (再起動を要求されたら再起動後)CTRL+ALT+DELを押して、タスクマネージャのパフォーマンスでCPU使用率のグラフが2個表示されていることと、デバイスマネージャのコンピュータ内にCPUが2個表示されていることを確認したら完成。
(11) すでにHALは更新されているから、boot.ini の複製した追加した行を削除してしまうとよりよい)

※念のため書いておくけどここに書いてある内容通りorアレンジして実行したことによって起こる結果については一切保証も関知もしないのですべては your own risk で :-p