今更ながらに Windows XP が起動しなくなったので何とかして欲しい。との依頼を受けて見てみることに。パソコンは NEC PC-LL550BD の windows XP メモリー 768MB のパソコン。
立ち上げるとあるところまで進んで自動的に再起動がかかりセーフモード選択画面になるという症状。
よくよく見てみると一瞬ブルーバックの表示が出て再起動しているようだ。
とりあえず F8 で自動再起動をやめて起動してみることに。やっぱり出ていたブルースクリーン。エラーメッセージはこれ。
IRQL_NOT_LESS_OR_EQUAL
0x0000000A(0xFFFFFFE8, 0x00000002, 0x00000001, 0x804DB044)
Microsoft のサポートページ によると、このエラーは、プロセスの IRQL が高すぎる状態で、ページング可能なメモリに対するカーネル モードでのアクセスが行われたこときに発生するらしく、一般的にドライバーが不適切なメモリ アドレスを使用している場合に発生。もしくは、互換性のないデバイス ドライバーか、ハードウェアの問題、および互換性のないソフトウェアが原因となっている可能性もある。と書いてあった。ということは今回はデバイスに関する問題かな。
とりあえず疑うはメモリー。
Linux のディスクに含まれている memtest86+ でテストしてみることにした。1週しかしてないけど結果は真っ赤にはならなかった。ということはメモリーは除外。
思い当たるところは Flash Player の更新インストール中に止まったらしく電源切ったら不安定になったということらしいので、Flash Player を入れ直したり、更新履歴を見ると JAVA の更新もあったのでこれも入れ直したりとしてみたけどダメだった。
とりあえず、原因の起こる前までシステムの復元してみた。直った?
何回か再起動してみたけど再現しなかった。よしよし。とこの日は作業を終えた。
次の日、念のためもう一度起動してみると…止まったorz なんで~?
で、やっぱりハードウェアかデバイスドライバがやられたのかなと次の調査に 0x0000000A に続くパラメータの意味は
- parameter1 – 不適切な参照が行われたアドレス。
- parameter2 – そのメモリのアクセスに必要な IRQL。
- parameter3 – アクセスの種類。0 は読み取り操作、1 は書き込み操作です。
- parameter4 – parameter1 のメモリを参照した命令のアドレス。
ということらしい。
そうすると、0x804DB044 にある何かが、0xFFFFFFE8 に対してIRQL(0x00000002)を超えたレベルでの書き込み(0x00000001) を行おうとしたということになるのかな。この解釈であってるかな。
まあ、不正な参照を行おうとした命令のアドレス 0x804DB044 ってこれを含むデバイスってことで良いのかなと調べてみると 「PCIバス」が該当。対象が広いなぁ。
とりあえず絞り込むために、起動時に読み込もうとしたドライバを確認しようと ntbtlog.txt を見てみたのだけどストップする時とセーフモードで違いが出ない。あれ?…もしかしてストップした時のログを再起動がかかって起動したときのセーフモードが上書きしてるのか。ダメじゃん。
で、このアドレスを使うドライバはとメモリーマップ見ようと思ったけどツールが起動しないorz
といろいろやっていたらまた起動するようになった。不安定だ。たぶん明日も再現しそうだ。
確率的にネットワークアダプタが怪しいよという情報もあったけど、アドレス範囲違うし、問題出てるアドレス範囲の根本「PCIバス」をいっそのこと入れ直してみよう。と大胆な行動にでることにした。
「PCIバス」のドライバを削除して、再起動。いっぱい!マークがついてる~。っと、デバイスの更新ポチッとしたらドカドカっとドライバのインストールが始まった。すべて終わってもう一度再起動。エラーストップもなくなりたぶん直っただろうと作業終了。
次の日、再現はしなくなった。たぶん PCI に関わるドライバだったんだろうと思われるけどがっつりやっちゃったので正確な原因は不明。Flash Player の更新ってことだからもしかしたらビデオドライバかもしれない。
とりあえず持ち主に引き渡して終了。問題でなければ良いが…。
同時期に、これとは別でパソコンがたちあがらな~いと言われ見てみたらこちらはバッテリ切れ。ボタン電池が切れてたので毎回BIOSの初期設定してよ画面が出て止まるとまあ簡単なことでした。こちらは電池交換にて対応。
頼られるのは良いことだけど、便利屋さんですねぇ。