テスト用に残してあるVirtualBoxのWindows XP環境が突然「DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS」というエラーで起動できなくなりました。何個かスナップショットをとっているので元に戻して試したのですが、何をやってもまったくだめ。
毎回上記画面のようなブルースクリーンが表示されてフリーズしています。何もしていないのに(?)なぜ急にエラーがでるようになったのか、原因を探ってみました。
セーフモードで修正
検索してまず見つかったのが「Blue Screen (BSOD) on VirtualBox VM」というブログの記事です。症状は、Virtual BoxのWindows XPで、DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONSが、 intelppm.sysで引き起こされるという、全く同じもの。
解決方法は、F8を押してセーフモードで起動してコマンドプロンプトを開き、以下のコマンドのどれかを実行するというものです。
- sc config p3 start= disabled
- sc config intelppm start= disabled
- sc config processr= disabled
確かに「sc config intelppm start= disabled」で一応起動できるようになったのですが…、仮想環境のWindows XPは何も変更していないのに、なぜ設定を変えないといけないのか釈然としないものが残ります。
結論: VT-xが無効になっていた
ということで、さらに探して見つかった答えが「Windows XP virtual machine in VirtualBox fails to boot after disabling VT-x/AMD-V」という質問と回答。CPUの仮想化支援機能VT-xが無効になっていると、VirtualBoxが起動できなくなるというような事が書かれています。
そういえば最近USB3の調子が悪くてBIOSを更新していたのだった…と思って確認してみると…まさしくコレ。VT-xが無効化されていました(GIGABYTEのBIOSだとFeature > Intel Virtualization Technologyで設定可能)。
VT-xを有効にすると、見事Windows XPが復活しました。仮想化支援機能の有効、無効が切り替わると、使われるCPUを交換した場合と同じようにみなされるため、古いCPUドライバーが新しいCPUと衝突してこのような不具合を起こしたという理屈のようです。
気楽にBIOSアップデートしていい気になっていましたが、こんなところに落とし穴があるとは。BIOSアップデート時は設定値がどうなったのかしっかり確認しないと痛い目にあうという教訓になってしまいました。