一時的にWindows 2000/XPのHALを変更する

 Windoes 2000/XPのHAL(Hardware Abstraction Layer)を変更する方法として、デバイスマネージャで変更する方法と、再インストール時に [F5} キーを押してHALを選択する方法があります。
 Windows NTのリソースキットにはHALを変更するツール「Uptomp.exe」がありましたが、Windows 2000のリソースキットにはありません(デバイスマネージャで変更できるので不要になったのでしょう)。
 しかしいずれの方法でも、HALの変更後にWindows 2000/XPが起動しなくなるといった危険があります。このため、HALを変更したいけれど起動しなくなるのが心配で変更していないという人もいると思います。
 そんな人に便利な機能をご紹介します。

 Windows NTのOSローダー(NTLDR)には「/hal」という隠しオプションがあります。これは一時的にHALを変更してOSを起動するものです。
 Windows 2000/XPでもこのオプションが使えます。この機能を使えば、一時的にHALを変更してWindows 2000/XPを起動してみて、うまく動作するようなら本当にHALを変更すればよいし、うまく動作しないようならば、元のHALに簡単に戻すことができます。

 具体的な方法は次のようにします。

1) Windows 2000/XPのCD-ROMから使いたいHALのDLLを取り出します。「I386」フォルダに次のファイルがあります。
hal.dl_
halapic.dl_
halaacpi.dl_
halmacpi.dl_
halsp.dl_
halborg.dl_  (Windows 2000のみ)
halacpi.dl_
halmps.dl_

これらは上から順に
Standard PC (Uni-Processor)
ACPI PIC-based PC (UP)
ACPI APIC-based PC (UP)
ACPI APIC-based PC (Milti-Processor)
Compaq SystemPro (MP)
SGI Visual Workstation (MP)  (Windows 2000のみ)
MPS (UP)
MPS (MP)
の各HALです。

これを「Expand」コマンドで解凍します。
例えば、「標準PC」で動作しているマシンをACPIのHALで動作させてみる場合は、
expand -r halaacpi.dl_ %x%halaacpi.dll (%x%は解凍先のパス)
でACPI用HALを取り出します。

2) 解凍したHALのdllを「\Winnt\System32」フォルダにコピーします。

3) 「Boot.ini」ファイルに「/hal」オプションを加えます。
例えば、
[boot loader]
timeout=10
default=multi(x)disk(x)rdisk(x)partition(x)\WINNT
[operating systems]
multi(x)disk(x)rdisk(x)partition(x)\WINNT="Microsoft Windows 2000
Professional" /fastdetect
となっていたら、

[boot loader]
timeout=10
default=multi(x)disk(x)rdisk(x)partition(x)\WINNT
[operating systems]
multi(x)disk(x)rdisk(x)partition(x)\WINNT="Microsoft Windows 2000
Professional (標準PC)" /fastdetect
multi(x)disk(x)rdisk(x)partition(x)\WINNT="Microsoft Windows 2000
Professional (ACPI PC)" /fastdetect /hal=halaacpi.dll
とします。

4) 再起動時に、ブートメニューで"Microsoft Windows 2000 Professional (ACPI PC)"を選択すると、ACPIでWindows 2000が起動します。最初の起動時に、プラグ&プレイでハードウェアをインストールしますので、必要があればドライバをインストールします。

以上が手順です。

 これでWindows 2000が起動しなかったならば、そのPCにHALが合っていないということになりますので、HALの変更はあきらめます。その場合は、"Microsoft Windows 2000 Professional (標準PC)"をブートメニューで選択すると、従来のHALで起動しますので、コピーしたdllを削除し、「Boot.ini」の追加行も削除します。
 新HALで無事に起動した場合は正常に動作するか確認します。正常なら、本当にHALを変更するために、アップグレードインストールを行います。
アップグレードインストールの再起動時にF5キーを押してHALを選択します。
 インストール後に、コピーしたdllを削除し、「Boot.ini」の追加行も削除します。
 なお、アップグレードインストールを行わずに、dllと「Boot.ini」をそのまま残しておけば、起動時に複数のHALを選択して起動することもできます。