Windows7起動時、CLASSPNP.SYSロード後ブルースクリーンエラー

DELLの少し古いPCで、Windows7が立ち上がらなくなった。

ボタン電池を交換後、何故か起動できなくなった。

*** STOP: 0x0000007B(0x80786B48,0xC0000034,0x00000000,0x00000000)

これはまた・・・。

セーフモードで起動詳細を見てみると、CLASSPNP.SYSのロード後にBSOD(Blue Screen of Death)となる。

ウィンドウズアップデート後や、ディスクがクラッシュしてのエラーではないので、デバイス系のエラーという事になるが、このエラーは「INACCESSIBLE_BOOT_DEVICE」(ブートデバイスにアクセス出来ない)となっており、また、CLASSPNP.SYSのロード時のエラーからSCSIやデバイス関係のエラーであることが分かる。ディスク自体のエラーもなく、クローンで複製しても状況変わらず。なので、SFCやDismコマンドを走らせても全く意味がない。また、CLASSPNP.SYS自体を入れ替えたり削除しても、その処置は全くお門違いとなる。

しかし、そんな簡単にBSODが出るものなのか。

回避策

DELLのサイトに記載があるように、AHCIモード(Serial ATA)に関係があるようだ。

ならばとBIOSを見てみる。

するとRAID Onとなっており、これをAHCIモードに変更する。そして、OS側のレジストリのSATAモードもそれに合わせ変更を行う。

マイクロソフトサイト:Windows XPブルースクリーンのトラブルシューティング

上記サイト記事によると、

  1. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci
  2. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IastorV

このどちらかのキー内、Start値を0にせよとあるが、今回のパターンでは逆に設定しないといけない為、0を1に変更する必要がある。

レジストリの変更方法としては、対象PCのWindowsインストールメディアか、ウィンドウズPEで起動し、DOSコマンドプロンプトからREGEDIT.EXEを起動する事で修正が可能。

これで無事、通常通り起動できた。

起動時のスタートアップ修復が出ているが、通常起動を選択し正常起動後、再起動すればそれは出なくなるのでスタートアップの修復は不要。

考察

マザーボードの電池を交換する事でBIOS設定が初期値に戻ってしまい、そのデバイスの設定がおかしいままウィンドウズを立ち上げた為、WindowsがSATAデバイスを無効と判断、自動的にレジストリが変更されてしまった。こうなるとタチが悪く、ぱっと見ではなかなか判断が付き辛くなってしまうから要注意だ。

結局、BISOが定めているデバイスと、ウィンドウズ側が求めているデバイスが合致しなかったためCLASSPNP.SYSを読み込んだ時点でBSODとなってしまった。

先ずは、何が原因でBSOD等のエラーが発生したのかを判断する必要がある。これをせず、無暗にウィンドウズの修復処理に頼ってしまうと泥沼に嵌る。今回は私もいい勉強になった。

また、この類のトラブルシューティングでの鉄則は、必ずクローンディスクを作成し、そのディスクで弄繰り回す事。何故なら、取り返しのつかない修正等、無茶をしてもすぐに元に戻せるからだ。