HAL v4リリースとアップデートを適用する方法
Windows 2000のHAL のアップデートv4を公開しました
ついでに今までの変更履歴についてまとめました
まず、v1
SRPv1 同梱のもの に KB958244 を以下の2つに適用
halmps.dll 5.0.2195.7007
halmacpi.dll 5.0.2195.7007
更に全部のHALに
KeAcquireInStackQueuedSpinLock
KeReleaseInStackQueuedSpinLock
を追加したもの。
v2
KeAcquireInStackQueuedSpinLock
KeReleaseInStackQueuedSpinLock
にバグがあったので、修正。
v3
halaacpi.dll を KB835730ベースに
halacpi.dll/halapic.dll をKB823748ベースに
差し替えて、マルチプロセッサカーネルにhltを挿入した上で、処理をXPベースのものに差し替えたバージョン
halsp.dllとhalborg.dllはXPも変更なしなので据え置き。
v4
XP版の halaacpi.dll と halmacpi.dll には C-State の処理関数が前処理で挿入されていたので、これを追加。
あと問題は、intel CPU ドライバが使えないことくらいですかね。
さて、この HAL アップデート。
Kernel Core やこのアップデートを インストールするだけじゃ、
適用できません。
デバイスマネージャーでコンピューターを開いて、手動で再インストールする必要があります。
改変ドライバなので、こんな風に聞かれます。
あとは再起動すれば適用されます。
適用されたかどうかは、 system32 の HAL.DLL のバージョンを確認してみましょう。
エプソンダイレクト製のNT9500Proに新規購入したHDDにOS込みでアプリケーション含め丸ごとコピー移行したが、不具合で日夜色々トライしていますが、改善せず。なにとぞご教示をお願い致します。
Ⅰ)DualCore切り替え;
①DouCPU仕様なので、拡張コアのカーネルv12a版の日本語版に変え貴殿の2008年11月12日の記事の「Windows2000をマルチコアで最適化する」で「RightMarkCPU Utility」をインストールし、「レジストリエントリのHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NDIS\Parameters にある、 ProcessorAffinityMaskの値」を「3」に変更したが変わらず。
②2010年05月30日の記事の「コア数変更用レジストリ(Registry Setting for number of cores Change)でKB979683-CoreChg.zip」をインストールしたが変わらず。
③「WinPE」でHAL.DLL のバージョンを確認すると「HALACPI.DLL」だったので、「HALAACPI.DLL」や、「HALMACPI.DLL」を「HAL.DLL」に変更し、入れ替再起動したら、ブラック画面にカーソルが点滅したままで立ち上がら無い。
④貴殿の2012年07月13日の記事で「Kernel Core やこのアップデートを インストールするだけじゃ、適用できません。デバイスマネージャーでコンピューターを開いて、手動で再インストールする必要があります。」との事から、手動で「APCIマルチCPU」のドライバーを選択しインストール後、再起動したら、
ブルー画面にSTOP;C0000249 Unknown HardErrorが表示され、立ち上がらず。尚、「WinPE」でSystem32のHAL.DLL のバージョンを確認すると、「HALMACPI.DLL」で正しいバージョンでした。
>マルチOS
まず、起動していたOSが起動しなくなったのか、新しくインストールして
起動できないのかがわからないので適切なアドバイスができません。
>DualCore切り替え
これは、パフォーマンスを改善するものであって、
不具合を解決するための処理ではありません。
HAL.DLLはOSが管理しているので、起動できなくなったのでなければ
手動で勝手に入れ替えたらPCが起動しなくなります。
HAL.DLLとセットでコピーしなければいけないファイルがあり、
レジストリもインストール時に変更されるので起動しなくなったPC
のHAL.DLLを熟知した上で修正するのでなければやってはいけません。
早速の返信本当に有難う御座います。
御質問等に対して下記回答及び御教示をお願いします。
Ⅰ)>マルチOS;
回答;
①NT9500Proを購入した時点は、WindowsXPsp2でしたので、sp3にアップデートし、正常動作確認後、内蔵HDD(NTFS;100GB)は外し、保管中。
②Windows2000sp4とWindowsXPsp3のマルチOSで使用していたNT5000の内蔵HDD(FAT32;300GB)をOS毎にTrueImageで外付けHDDにバックアップを作成保存した。
③外付けHDDに保存したバックアップを新規購入した内蔵HDD(FAT32;300GB)に復元した。
④今回ご教示をお願いしているのが、上記③項の新規購入した内蔵HDDのWindowsXPsp3を選択し、起動させると、ブルー画面になり、立ち上がりません。
早速の返信本当に有難う御座います。
経緯等は下記です。再度御教示をお願い致します。
Ⅰ)>DualCore切り替え;
回答;
貴殿のご指摘は、ごもっともで、反省します。ただ少しだけ弁明させて下さい。
①マイクロソフトのサポート情報の文書番号170756に「起動時に読み込まれる実際のハードウェア アブストラクション レイヤ (HAL) を定義します。このスイッチは、hal.dll という名前に変更せずに、複数の HAL を試してみる場合に便利です。
また、/kernel スイッチと組み合わせて使用する際に、マルチプロセッサ モードとシングル プロセッサ モードとを切り替えてブートを試したい場合にも、このスイッチは便利です。/HAL=halmps.dll のように指定します。
このように指定すると、System32 ディレクトリにある Halmps.dll というファイルがロードされます」と記載されていたので、BOOT.INIを編集しましたが、結果NGだった。
②そこで拡張コアのカーネルv12aのフォルダー内に「HALACPI.DLL」以外に「HALAACPI.DLL」や、「HALMACPI.DLL」があったので、「HAL.DLL」に変更すれば、問題無いのではと思ってトライしました。
「HAL.DLLとセットでコピーしなければいけないファイル」が何かを含め、なにとぞDualCore切り換え方法のご教示をお願い致します。
NT9500Proということですが、該当モデルは、
そもそもSingleCoreのみのCPUモデルとデュアルコアのモデルの2種類あります。
パソコン自体がもともと1Coreしか対応していないということはありませんか?
おそらくWindows 2000 のEnableBigLBA が有効になっていないため、300GのHDDのデータが
一部破壊されているのだと思います。XPから見ると壊れているのでBSoDで起動できないのです。
復旧手順としては
・300GのHDDにイメージを復元する
・Win2000は起動してはいけない
・XPで起動してREGEDITを起動して、Windows2000のレジストリハイブ(SYSTEM)を取り込む
・XP側のレジストリエディタで Win2000側のEnableBigLBAを有効にする
・ハイブをアンロードする
・Windows2000で起動しても問題ない状態になる。
となります。
多少専門用語がありますが、調べられたうえで、理解を深めてから操作することをお勧めします
黒翼猫殿;
お忙しい中、御教示有難う御座います。
先程訂正投稿の内容も混乱し、間違っていました。
今回2件纏めて投稿しました。
本当にすみません。
Ⅰ)マルチOS;
①EnableBigLBA を有効にしていた筈でしたが、念の為レジストリの「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters」を確認しました。
値の名前 : EnableBigLba、データ型 : REG_DWORD、値のデータ : 0x1に設定していました。
Ⅱ)DualCore切り替え;
①念の為、デバイスマネージャーや、仕様書でCPUモデルを確認しまし結果、間違い無く「Core Duo T2500(2Ghz)」でした。
EnableBigLBA は初めて起動する前にゆうこうになっていないとHDDを破壊してしまう
恐れがありますが、設定は、HDDの移行より前でしょうか?
シングルプロセッサから、マルチプロセッサへの変更は、デバイスマネージャーで
行ってください。詳しくはMicrosoftに説明があります
https://msdn.microsoft.com/ja-jp/library/cc782277%28v=ws.10%29.aspx
黒翼猫殿;
現状の経緯や現在のセット状況が正確に説明出来て無く、何度も御教示して頂き本当に有難う御座います。
Ⅰ)「マルチOS」に関するお問い合わせの回答です。
①NT5000を使用時代に内蔵HDDを既存の物から300GB(FAT32)に容量アップした時に「EnableBigLBA 」に設定しています。
②上記①の内蔵HDDをOS毎にTrueImageで外付けHDD(FAT32;500GB)にバックアップを作成保存しています。
②この外付けHDDに保存したバックアップを新規購入した内蔵HDD(FAT32;300GB)に復元しました結果、
Windows2000sp4は正常に立ち上がりますが、WindowsXPsp3を選択し、起動させると、ブルー画面になり、立ち上がらないと言う状況です。
XP のブルースクリーンのメッセージ内容 を見ないとちょっとわかんないですが
もしかして、別のPCのHDDイメージを復元して動かそうとしてるのでしょうか?
もしそうだとすると、デバイスドライバを全部インストールしなおさないと、不具合が生じます。
Windows 2000でマウスが正常に使えないのも、たまたまブルースクリーンにならないだけで
障害が表向き出てないだけで、それが原因だと思います。
XP のブルースクリーンのメッセージ内容 を見ないとちょっとわかんないですが
もしかして、別のPCのHDDイメージを復元して動かそうとしてるのでしょうか?
もしそうだとすると、デバイスドライバを全部インストールしなおさないと、不具合が生じます。
Windows 2000でマウスが正常に使えないのも、たまたまブルースクリーンにならないだけで
障害が表向き出てないだけで、それが原因だと思います。
黒翼猫殿;
早速の返信本当に有難う御座います。
黒翼殿自身が実際に目で確かめたら、簡単に原因がお解りになると思われますが、メールでは上手く説明出来ず申し訳御座いません。下記に回答しましたので、御教示をお願い致します。
「マルチOS」&「 DualCore切り替え」の回答;
①元々、NT5000の内蔵HDDを一旦外部HDDに一括イメージで保存し、それをNT9500Proに新規用意した内蔵HDDに復元しました。
②当然、NT9500Pro用のドライバーをインテル等のWebからダウンロードし使用していますが、何故か、「Realtek High Definition Audio Driver」だけが、正常にインストール出来ますが、
再起動したら、「PCIS.SYS」がNGになるので、現在インストールしていません。又 「Infineon Security Platformソフトウェア」も不要なのでインストールしてません。
③Xp のブルースクリーンのメッセージ内容は、「 STOP:0X0000007B(0XEB42384C、0xC0000034、0x00000000、0x00000000)
INACCESSIBL_BOOT_DEVICE」です。
④思い出しましたが、OSに関係無く、プライマリーアクティブに設定した側のOSは、正常に立ち上がりますが、セカンダリーに設定した側のOSを選択したら、
ブルースクリーンになり、メッセージ内容も、「 STOP:0X0000007B(0XEB42384C、0xC0000034、0x00000000、0x00000000)
INACCESSIBL_BOOT_DEVICE」で同じでした。
この辺に何か問題があるのでは?と推定しています。
やはり、別のマシンのイメージをそのまま動作させているのが原因です。
ドライバが異なっていてもあが、見た目エラーが出ずに動いてるものが不具合を引き起こしている
と思われます。
解消策として、XPや2000 を上書きインストール(修復インストール)することをお勧めします。
黒翼猫殿;
度々の返信有難う御座います。
黒翼猫殿の7/13のアドバイスのトライ前に最後の確認問合せをさせて下さい。
結果(推定)原因が、違うとの回答を頂ければトライしてみます。、
’15/7/13 7/11付けの回答の④項のプライマリーとか、セカンダリーの記述を部訂正します。
①内蔵HDDを、CドライブとDドライブにパーティションを設けています。
②Cドライブを常にアクティブに設定しています。
③現在は、Windows2000sp4をCドライブに、WindowsXpsp3をDドライブに復元していますが、
以前WindowsXpsp3をCドライブに、Windows2000sp4をDドライブに復元した時、CドライブのWindowsXpsp3はの起動は、
正常に立ち上がったが、DドライブのWindows2000sp4を起動しようとしたら、ブルースクリーンになり、メッセージ内容も、
「 STOP:0X0000007B(0XEB42384C、0xC0000034、0x00000000、0x00000000)
INACCESSIBL_BOOT_DEVICE」で同じでだった。
と言う事で原因はOSには関係無く、Cドライブのアクティブとパーティションの何かが関係している事はありませんか??
STOP:0X0000007B(0XEB42384C、0xC0000034、0x00000000、0x00000000)
はマザーボードの変更により、SATA のデバイス名と番号が変わってしまったため、該当するドライバが検出できなくなり、ドライバが起動時にロードされなくなったため、起動できなくなったことを意味します。
このまま復元するのは、レジストリを外部からいじる必要があり、知識も必要です。
上書きインストールするのがいいとおもいます
黒翼猫殿;
「マルチOS」&「 DualCore切り替え」の修復インストール手順に関する問合せでもって最後に致したいと思います。お忙しいと思いますが、御教示をお願い致します。御無理申して本当に有難う御座いました。
①以前別件で、修復インストールする機会があり、Windows2000sp4のCDを挿入して実行した処、虚思いですが、「カーネルがオリジナルと違います。
オリジナルに戻しますか?はい、いいえ」とポップアップ表示が出ました。
②その当時からカーネルを貴殿のWeb記事を読み変更していましたので、「いいえ」を選択したら、修復画面が終了し、修復出来ませんでした。
③その後、更にカーネルのバージョンを更新していますので、間違いが無いよう手順を確認させて下さい。
④一度カーネルをオリジナルに戻し、修復インストール後、再度カーネルを現状のバージョンに更新するのですか?
修復いんすとーるは基本的に回復コンソールからのいれかえですから、全部かきかえないと問題が出ます。
書き換え時にいいえを選ぶのは、WindowsFileProtectionの動作で上書きをされて困る場合です。
黒翼猫殿;
以前、USB機器を接続したら不明なデバイスとなり使用出来なかった件は、解決出来ず諦め寸前、だめもとでIntelのドライバをアップデートしたら、
原因は不明ですが、使用出来るようになりました。
現在何とか解決出来ればと希望しているのは
下記2件です。
お忙しい中、御教示して頂ければありがたいのですが。
Ⅰ)シングルCoreを仕様通りのマルチCoreに変更;
①halmacpi.dllをhal.dllに名前変更、Ntkrpamp.exeをNtkrnlpa.exeに名前変更、Ntkrnlmp.exeをNtoskrnl.exeに名前変更しましたが、電源投入後、ブルー画面になりSTOP:0X.C0000249と表示され正常にたちあがりません。
ネットで調べたが、「STATUS_IMAGE_MP_UP_MISMATCH;{UP/MP IMAGE MISMATCH}THE IMAGE HS HAS BEEN MODIFIED FOR USE ON A UNIPROCESSOR SYSTEM, BUT YOU ARE RUNNING IT ON A MULTIPROCESSOR MACHINE.PLEASE REINSTALL
THE IMAGE FILE}」以外情報が見つからず、更に「IMAGE FILE」は?全く判りません。
Ⅱ)音声が出ない;
①High Definition Audioドライバを貴殿のWebからダウンロードし、ドライバを更新したのですが、更新後再起動したら、「System.sys」ファイルが壊れれいて、立ち上がりません。
以上宜しくお願い致します。
|。・ω・)。o (①が二つあるのは何故なんだ…?)
ユニプロセッサ、マルチプロセッサの変更時には HAL.DLL とNT*.EXE以外に KERNEL32 とNTDLLの変更も必要です。
PEMAKERなどでどっちのバージョンか確認できるのでチェックしてください。
High Definition Audio 対応の音源ドライバはバージョンが細かく分かれており、少しでも違うものを入れると音が出ません。KB888111の後に入れたドライバを確認してください
正しいなら、INFファイルをいじるか、バージョンを変えてみてください
黒翼猫殿;
早速の回答有難う御座いました。
少し方向が見えたようなので、早速トライしてみます。
尚①が2ヶあるのは、Ⅰ)項とⅡ)項で内容が違うので①を夫々つけました。混乱さえて申し訳御座いませんでした。
PEMAKERに関して、知らない無いのですが、貴殿のWebで既に紹介されていましたか?
お忙しい中本当に有難う御座います。
以上
シングルCoreを仕様通りのマルチCoreに変更とHigh Definition Audioに関して色々アドバイスを頂きましたが、アキジイの技量が無い為、結局上手く実現出来ませんでした。諦めて、貴殿の記事の「Windows2000Hfslip統合イメージ作成ツールのRc15F」からSP4版のDVDを作成し、新規インストールし直し、更に拡張カーネルv2.8d及び拡張コアv16dを追記インストールしました。その結果、念願のマルチプロセッサとHigh Definition Audioは無事正常に動作しています。所が、今迄支障なく使用出来ていたIntelPROSet/Wirelessが、今回は何故か正常に動作しません。ネットワークコネクションアダプタも正常にインストールした時は、無線LANも正常に動作しますが、再起動すると、タスクバーに無線LAN起動時の丸形の青色が表示され、正常なら無線LANの赤色マークが橙色、青色と遷移する筈ですが、遷移せず丸形青色が無色になり且つ赤色×印がつき、「ネットワークコネクションアダプタが見つからない」状態になります。以前の貴殿の記事「2014年11月10日 XP 用Intel PROSet/Wireless Driver 15.3.1をWin2000に移植してみた 」で紹介されたファイルの「WiFiPRO2K.Zip」を展開リンクしたり、メーカ支給のネットワークコネクションアダプタをインストールした時出来たXP用ドライバフォルダの中身全てと一括交換ましたが、
結果は変わらず、再起動すると「ネットワークコネクションアダプタが見つからない」状態になります。ネットワークコネクションアダプタの型式は「3945ABG」です。又メーカから支給されているXP用でドライバのバージョンは10.5.1.84です。
お忙しいと思いますが、何とか具体的な操作方法等含め御教示をお願い致します。
・異常時に、デバイスドライバは正常に動作しているでしょうか?(デバイスマネージャー)
・動かなくなった場合、再インストールすると動くようになるのでしょうか?
早速の返信有難う御座います。御質問に関して下記回答します。
異常時もデバイスマネージャーデは正常に動作しています。
動かなくなった場合も、iProInst.exeを実行すれば、そのメニューに則り、新規インストールも、修正も可能で、無線Lanも正常に動作しますが
シャットダウン後再起動すると「ネットワークコネクションアダプタが見つからない」状態になります。
因みにWireless15.3.1Dx32.exeを実行すると、青色の電波マークの円周上に黄色の小丸が暫く点灯し、電波マーク含め全て消えます。
Wireless15.3.1×32.exeを実行すると、「MSIファイル””が見つかりません。」とセットアップエラ-が発生します。
結果どちらもNGです。
先般お忙しい中返答して頂き、本当に有難う御座いました。
アキジイから回答後、状況が止まったままなので、以前の貴殿の記事「2014年11月10日 XP 用Intel PROSet/Wireless Driver 15.3.1をWin2000に移植してみた 」で紹介されたファイルの「WiFiPRO2K.Zip」を解凍しInfファイルを調査した処、どのInfにも記事に記載されていた「Intel(R)PRO/Wireless 3945AGB Network Connection」用が見つからないのですが?、アキジの見間違いでしょうか?
Intel(R)PRO/Wireless 3945AG はNETwLx32 に格納されています。
記事にも書いていますが、ただ、 v13 – 15 のWifi ネットワークドライバは当方の環境では、うまく動作しないことが分かっています。(すべて無理なのかはわからないのでおいてある状態)
(ここで実験的に公開したものはv15)
なので、v15の無線ドライバは入れずに v12までのバージョンをお使いください。
早速の回答有難う御座いました。
貴殿のWebページを良く見ると2/5から更新されて無く、もしかしてインフルエンザに罹かられているのか?仕事がお忙しいのか?判らないのに回答を急がせたようで、本当に失礼しました。
貴殿からの回答のIntel(R)PRO/Wireless 3945AG用のドライバのバージョンV12はWeb上でIntel含め見つからないのですが、ドライバIntelL5300でもよいのでしょうか?XP 用Intel PROSet/Wireless Driver 15.3.1をWin2000に移植してみた 」でドライバをインストール中に、ドライバIntelL5300をインストールするよう表示が出ますので。
又「NETwLx32 に格納されています。」との事ですが、「NETwLx32INF」に記載が見つからなかったのですが、「NETwLx32cat」に格納されていると言うことでしょうか?
以上恐れ入りますが、御教示下さい。
・ドライバ v10~v12 は5300に対応していない
・ドライバ v15にはIntel(R)PRO/Wireless 3945AG用のドライバが入っているが、動作するかは不明
・すすめられるドライバが正しいとは限らない。
と言うのが回答です。