仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

VirtualBoxでNS_ERROR_FAILURE(0x80004005)エラーが発生したときの原因と対処法

最近、あるシステムでVirtualBoxが動作しなくなりました。どの仮想マシンを起動しようとしても、必ず同じエラーが表示されるのです。ポップアップウィンドウには「仮想マシン[マシン名]のセッションを開けませんでした(Failed to open a session for the virtual machine)」と表示され、詳細欄には「NS_ERROR_FAILURE (0x80004005)」と記されていました。

困ったことに、このメッセージは非常に曖昧で汎用的なため、何が問題なのかすぐには把握できません。そこでトラブルシューティングに取り組み、試行錯誤を重ねた結果、本記事のようなガイドが完成しました。すべてのケースを解決できるわけではありませんが、自分の環境で何がうまくいっていないのかを突き止める手がかりは得られるはずです。それでは順を追って見ていきましょう。

VirtualBoxでNS_ERROR_FAILURE(0x80004005)エラーが発生したときの原因と対処法

問題の詳細

ポップアップメッセージからはほとんど情報が得られなかったため、システムログを確認することにしました。すると、はるかに有用な手がかりが見つかりました。どうやらVirtualBoxのVMSVGAグラフィックドライバーがクラッシュしており、エラーはlibX11共有ライブラリを指していたのです。

Feb  3 12:21:09 kernel: [] VMSVGA FIFO[11413]: segfault at f8 ip 00007fcf4df5ada4 sp 00007fced9329c40 error 4 in libX11.so.6.3.0[7fcf4df40000+133000]

この時点で、VirtualBoxインスタンス自体に何らかの不具合が生じていると判断しました。そこで、一つずつ段階的に調査を進めることにします。まずはvboxconfigコマンドでVirtualBoxカーネルモジュールを再構築します。この操作により、サービスも併せて再起動されます。

sudo vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.

しかし、これだけでは問題は解決しませんでした。そこで少し立ち止まって考えてみます。vboxconfigのセットアッププロセスではカバーされない部分で、他にどのコンポーネントが原因になり得るのか。そして思い当たったのが、VirtualBox Extension Pack(拡張パック)でした。

問題が発生しているシステムにインストールされているものを確認したところ、VirtualBox本体とExtension Packのバージョンが一致していないことに気づきました。これは好ましくない状態であり、予期しない動作を引き起こす可能性があります。実際、私の環境でもそれが起こったようです。Linuxではこの問題がさらに厄介になります。起動時、VirtualBoxはExtension Packの更新をチェックしてインストールを促しますが、本体プログラム自体はシステムアップデートに依存しているからです。もし「システムアップデート → 拡張パック更新」という順序で実行されなかった場合、上述のように仮想マシンが起動できなくなる事態に陥ることがあります。

VirtualBoxでNS_ERROR_FAILURE(0x80004005)エラーが発生したときの原因と対処法

VirtualBoxでNS_ERROR_FAILURE(0x80004005)エラーが発生したときの原因と対処法

解決策

ここでの修正方法は、問題のある拡張パックを削除し、VirtualBox本体のバージョンに一致するものをインストールし直すこと(またはその逆)です。いずれにせよ、両者のバージョンは必ず一致させてください。「ファイル > 環境設定 > 拡張機能」に移動し、「削除」ボタンをクリックしました。しかし、なんと拡張パックを削除しようとした瞬間、先ほどと同じエラーが発生したのです!

コマンドラインでのクリーンアップ

この2つ目の問題への対処法は、ターミナルでクリーンアップ操作を実行することです。このコマンドを使えば、拡張パックのインストールや削除(強制削除も含む)を行うこともできます。

VBoxManage extpack cleanup
Successfully performed extension pack cleanup

その後GUIに戻ると、今度は問題なく拡張パックを削除できました。続けて、メインプログラムのバージョンに一致する新しい拡張パックをダウンロードしてインストールします。

VirtualBoxでNS_ERROR_FAILURE(0x80004005)エラーが発生したときの原因と対処法

これで、仮想マシンは以前と同じように正常に起動するようになりました!

まとめ

ある意味、今回の問題は私自身が招いたものとも言えます。とはいえ、この仕組みをもっと堅牢にする方法はあるはずです。例えば、互換性のない拡張パックのインストールを許可しない、複数バージョンを保持しておいてデフォルトが失敗した場合の復元先として使えるようにする、より詳細なエラーメッセージを提供する、メインプログラムと同様にVirtualBox Linuxリポジトリ経由で拡張機能を配布する、といった改善が考えられます。

同様の問題に遭遇した場合は、このエラーコードが非常に幅広い問題を包含している可能性が高く、コードを見ただけで根本原因を特定できるとは限らない点に注意してください。同じ出発点でありながら、まったく異なる解決策や結果に至るバグレポートやフォーラム投稿をいくつも読むことになるかもしれません。本記事もその意味では例外ではありませんが、システムログの情報を注意深く追跡することで、焦点を絞り込み、真の原因を突き止めることができました。それでは今日はこの辺で。ごきげんよう。

それではまた。

  1. VirtualBoxでディスクをクローンする方法【VBoxManage活用チュートリアル】

    仮想化を業務でも趣味でも利用している方なら、VirtualBoxという強力かつ多用途な無料ソリューションを目にしたことがあるかもしれません。VirtualBoxは、デスクトップユーザーに対して、あらゆる形でOSを展開できる大きな柔軟性を提供してくれます。さらに、単なる趣味として仮想化を楽しんでいるだけでなく、仮想化を通じて新しいOSを学ぼうとする熱心なソフトウェア愛好家の方であれば、次のような場面に必ず直面することでしょう。それは「大量の仮想マシンを展開する必要がある」というシナリオです。一台ずつインストール作業を行う時間的な余裕はないはずです。実際、大規模に環境を展開する際に手動で一つずつマ

  2. VirtualBox 3.0.0 徹底レビュー!DirectX対応とネットワーク機能強化がすごい

    私のお気に入りのデスクトップ仮想化ソフトウェアといえば、VirtualBoxとVMware Serverです。どちらも愛用しており、それぞれに魅力があります。全体的にはよく似た製品ですが、片方にしかない独自の機能を持っており、互いをうまく補完し合う関係にあると言えます。 つい先日、VirtualBox 3.0.0が大きな話題とともにリリースされました。これは、旧バージョンやVMware Serverと比べてどこまで進化したのかを確かめる絶好の機会です。深呼吸して、私と一緒にツアーに出かけましょう。長めの前置きで少々お付き合いいただきますが、きっと価値のある内容のはずです。 VirtualBo