Windows8とVirtualBoxのバージョンアップの際に起こった仮想マシン起動失敗について

Windows8上のVirtualBoxで仮想OSを使っていた。あるタイミングでWindowsを8.1にアップデートし、その後でVirtualBoxをバージョンアップしたところ、VirtualBox上の仮想OSの起動に失敗するようになってしまった。

【環境】
発生環境:Windows8.1
VirtualBox 5.0.14 r105127
仮想OS:CentOS 6.4(Final) 64bit

【状況】

  • 元々Windows8VirtualBox上でCentOSを動かしていた。
  • 2016年1月にWindows8を8.1にアップデートした。
  • その後、VirtualBoxを5.0.14 r105127にバージョンアップした。
  • 仮想CentOSを起動させようとすると以下のようにエラーメッセージが表示され起動失敗するようになってしまった。

f:id:kiliwave:20160129123048p:plain

VirtualBox - Error In supR3HardenedWinReSpawn
NtCreateFile(\Device\VBoxDrvStub) failed: 0xc0000034 STATUS_OBJECT_NAME_NOT_FOUND (0 retries)(rc=-101)
Make sure the kernel module has been loaded successfully.
where: supR3HardenedWinReSpawn
what: 3 VERR_OPEN_FAILED (-101) -File/Device open failed.
Driver is probably stuck stopping/starting.
Try 'sc.exe query vboxdrv' to get more information about its state. Rebooting may actually help.

さらに直後に日本語でもエラーがでました。

f:id:kiliwave:20160129123112p:plain

VirtualBox - エラー
仮想マシン"CentOS 6.4"のセッションを開けませんでした。
The virtual machine 'CentOS 6.4' has terminated unexpectedly during startup with exit code 1 (0x1).  
More details may be available in 'C:\Users\★★★\VirtualBox VMs\CentOS 6.4\Logs\VBoxHardening.log'.
終了コード : E_FAIL (0x80004005)
コンポーネント: MachineWrap
インターフェース: IMachine {f30138d4-e5ea-4b3a-8858-a059de4c93fd}

 エラーメッセージに書かれたログファイル(C:\Users\★★★\VirtualBox VMs\CentOS 6.4\Logs\VBoxHardening.log)では、

Driver is probably stuck stopping/starting. Try 'sc.exe query vboxdrv' to get more information about its state. Rebooting may actually help.
4a8.1330: Error -101 in supR3HardenedWinReSpawn! (enmWhat=3)
4a8.1330: NtCreateFile(\Device\VBoxDrvStub) failed: 0xc0000034 STATUS_OBJECT_NAME_NOT_FOUND (0 retries)

 とのことで、何やら面倒そうな話で困りました。Rebooting may actually help.ということで再起動しましたが状況変わらず。

【対応】
結論としては、KB3004394のアンインストールとVirtualBoxの再インストールを行い解決しました。

エラーメッセージでぐぐったところ

superuser.com

がヒット。Microsoft Windows (KB3004394) の更新プログラム」が影響あるのでアンインストールすると良いとのこと。

また

d.hatena.ne.jp


によれば、KB3004394 をアンインストールしてくれるパッチ KB3024777 も後から提供されているようです。取りあえずKB3004394をアンインストールして対応することにしました。

【手順】
1.コントロールパネル → プログラムと機能 → インストールされた更新プログラムで、「Microsoft Windows (KB3004394) の更新プログラム」を探し出し、右クリック&アンインストール。
2.Virtualboxをアンインストールする前に、念のため今の仮想イメージをエクスポートしました。※結果的にこれは不要でしたが、バックアップはあった方がいいのでやった方がベターかと。
「ファイル」→「仮想アプライアンスのエクスポート」を選択し、

f:id:kiliwave:20160129123807p:plain
対象の仮想マシンを選んで、

f:id:kiliwave:20160129123833p:plain

保存先を設定し、

f:id:kiliwave:20160129123912p:plain

アプライアンスを設定(デフォルトでOK)し、「エクスポート」を選択します。

f:id:kiliwave:20160129123930p:plain
3.コントロールパネル → プログラムと機能 から「Oracle VM VirtualBox」をアンインストールします。
4. VirtualBoxのダウンロードサイト(http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html)へ行き、最新版をダウンロード。そしてそのままインストール。

f:id:kiliwave:20160129124136p:plain

5. VirtualBoxを起動すると仮想マシンが無いまっさらな状態でヒヤッとしますが、

f:id:kiliwave:20160129124213p:plain

 「仮想マシン」メニューの「追加」を選択し、「C:\Users\★★★\VirtualBox VMs」の中を選択すると、

f:id:kiliwave:20160129124247p:plain
前に使っていた仮想マシンのイメージが入ったフォルダが見えます。

f:id:kiliwave:20160129124354p:plain

中にあるvbaxファイル(CentOS 6.4.vbax等)を選択すれば、

f:id:kiliwave:20160129124425p:plain

無事、前に使っていた仮想マシンが見えるようになりました。

f:id:kiliwave:20160129124457p:plain

6. 無事、仮想マシンが起動しました。

 

Windows8→8.1のアップデートでたまたま導入を控えていた更新データが入ってしまったのが悪かったのか、VirtualBoxのどの部分とコンフリクトするのかはよく分かりませんが、OS、ソフトのアップデートやバックアップには日ごろから注意したいところです。

 

以上。