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

VirtualBoxで3Dアクセラレーション有効化後に黒い画面が表示される問題の解決策

仮想化は、OSの上に別のOSを実行できる非常に便利な技術です。コンピュータの中にコンピュータを作ることで、柔軟性、レガシー環境のサポート、複数プラットフォームでのソフトウェアテスト、分離性といったメリットが得られます。ただし、グラフィックス性能に関してはどうしても制限があるのも事実です。

VirtualBoxには以前から、仮想マシンで3Dアクセラレーションを有効にするオプションが用意されています。グラフィックス処理の一部をより効率的に実行できるため、操作感が滑らかになります。完璧なソリューションではありませんが、何もないよりははるかにましです。ただし、問題が発生するケースもあります。たとえば、VirtualBox Guest Additionsを有効化した直後、次回ログイン時に黒い画面しか表示されなくなるトラブルです。本記事では、再インストールせずにこの黒い画面状態から復旧し、さらに正しく3Dアクセラレーションを有効化する方法を解説します。

問題の概要

具体的な状況を整理しましょう。VirtualBox上でUbuntu系ディストリビューションをゲストOSとしてインストールしているとします。Ubuntuには標準で基本的なドライバーセットが含まれており、マウスのホスト・ゲスト統合や画面サイズ変更は動作しますが、共有フォルダやクリップボード共有などの一部機能は利用できません。そこで、ISOからGuest Additionsをインストールして全機能を使えるようにしたいところですが、再起動またはグラフィカルセッションの再起動後に、ログイン画面すら表示されず、真っ暗な画面のままになってしまうことがあります。この場合、どうすればよいのでしょうか?

Linuxデスクトップセッションの基礎知識

まず基本から押さえておきましょう。第一に、Guest Additionsをインストールする前に、必ず仮想マシンのスナップショットを作成してください。これにより、問題発生時に素早く簡単に復旧できます。物理マシンで大きな変更を加える前にデータをバックアップし、システムイメージを取得しておくのと同じ考え方です。

第二に、デスクトップセッションのログインに問題がある場合は、セッション管理の仕組みを理解しておくと役立ちます。GNOMEベースのデスクトップでは、GDM(GNOME Display Manager)がログインを管理しています。各ユーザーの設定は以下の場所に保存されています:

/var/lib/AccountServices/users/(ユーザー名)

このファイルには、ユーザーセッションの起動方法を定義する記述が含まれています:

...
[User]
XSession=plasma
SystemAccount=false
...

システムをデフォルトセッションで起動したい場合は、XSessionの値を空にするだけでOKです。「ubuntu」のような値を指定しても構いません。これらのセッション名は /usr/share/xsessions/ 配下のデスクトップセッションファイルに対応しており、典型的なファイルには適切なプロセス(デスクトップ環境)を起動するためのエントリが含まれています:

[Desktop Entry]
Type=XSession
Exec=/usr/bin/startkde
TryExec=/usr/bin/startkde
DesktopNames=KDE
Name=Plasma
...

もう一つ考慮すべき点は、X11とWaylandの違いです。Waylandは仮想マシン環境ではうまく動作しないことがあるため、GDMの設定を編集してWaylandの有効/無効を切り替えながら、デスクトップの挙動(黒い画面が発生するかどうか)を確認するとよいでしょう。設定は /etc/gdm/custom.conf ファイルで行います。以下の行を探して、必要に応じてコメントアウト/コメント解除してください:

#WaylandEnable=false

これらは、黒い画面やログイン関連の問題をトラブルシューティングする際の最初のステップです。また、自動ログインを無効化することも検討してください。特定のデスクトップ環境に固有の問題がある場合、壊れたセッションに繰り返しログインしようとしてループに陥るのを防げます。ここまで把握できたら、仮想マシンの作業に戻りましょう。

解決策

まず、作業できるようにデスクトップを復旧させる必要があります。VirtualBoxで仮想コンソールにアクセスするには、右Ctrlキー(デフォルトのホストキー)+ F1〜F7を押します。これにより、ホスト側のCtrl + Alt + F1〜F7と競合することなく、ゲスト内の仮想コンソールにアクセスできるはずです。ただし、仮想コンソールすら表示されない場合もありますが、再インストールせずに対処する方法はいくつかあります。時間をかけて再インストールするのは避けたいところです。

次に、3Dアクセラレーションを無効化します。仮想マシンをシャットダウンし、設定を開いて該当するチェックボックスを外します。マシンを起動すると、黒い画面にならずにデスクトップへ到達できるはずです。これでシステムが正常に動作する状態になったので、壊れた状態をきちんと修復できます。一般的に、スナップショット、仮想コンソール、3Dアクセラレーションの切り替えという組み合わせがあれば、この種の問題を絶望することなく柔軟にトラブルシューティングできます。

リポジトリからVirtualBox Guest Additionsをインストール

ISO由来のドライバーで問題が発生した場合は、リポジトリ提供のパッケージを試してみましょう(制限事項は承知の上で)。まず、ISOで提供されたドライバーを、スクリプトをuninstallオプション付きで再実行してアンインストールします:

sudo /media/(ユーザー名)/(VirtualBox ISOのパス)/VBoxLinuxAdditions.run uninstall

再起動します。次に、リポジトリからインストールを行います。Waylandを使用している場合は:

sudo apt-get install virtualbox-guest-utils

X11を使用している場合(VirtualBox内ではこちらが大半でしょう)は:

sudo apt-get install virtualbox-guest-x11

再度マシンをシャットダウンし、3Dアクセラレーションをオンに戻します。仮想マシンを起動すると、正常に動作するはずです。これが目標達成への第一歩です。設定が整い、デスクトップも期待どおりに動作しています。

3Dアクセラレーションは本当に有効になっているのか?

しかし、ゲストOSで3Dアクセラレーションが実際に有効になっているかは、まだ確認できていません。最も簡単な確認方法は、mesa-utilsパッケージに含まれるglxinfoコマンドを使うことです。

sudo apt-get install mesa-utils

そしてglxinfoを実行し、ダイレクトレンダリングが使用されているかを確認します:

glxinfo | grep direct
direct rendering: Yes
GL_ARB_direct_state_access, GL_ARB_draw_buffers,
...

出力に「Yes」と表示されれば、3Dアクセラレーションが有効です。おめでとうございます。ネイティブドライバーほど滑らかではないかもしれませんが、着実に前進しています。何より重要なのは、黒い画面が消えたことです。この方法では共有フォルダなどの高度な機能は使えませんが、それにも回避策があります。今後のチュートリアルで詳しく取り上げる予定です。

まとめ

内容が多くなりましたが、参考になったなら幸いです。今回は、最新のLinuxシステムがデスクトップセッションをどのように管理しているかに焦点を当て、Waylandのオン/オフの切り替え方も学びました。さらに、ISO提供ドライバーとリポジトリ提供ドライバーの違いやそれぞれの使い方、そしてシステムを堅牢な状態に保つためのさまざまな手法についても触れ、万一問題が発生しても素早く復旧できる体制を整えました。

仮想化製品における3Dアクセラレーションは少しずつ改善が進んでおり、その有用性は高まり続けています。時にはソフトウェアスタックの複雑さが思わぬ障害となることもありますが、デスクトップが壊れてしまったように見える状況でも、エレガントな回避策は必ず存在します。大切なのは、効率的かつ非破壊的な対処を目指すことです。今日のミッションは完了です。それではまた次回、快適な仮想ライフをお過ごしください!

  1. 仮想マシンで3Dアクセラレーション 第3回:Linuxホスト×Linuxゲスト環境でVMGLに挑戦 ― 果たして可能なのか?

    仮想化に関するシリーズ第3回となる本記事は、おそらくシリーズ中で最も難易度の高い内容です。これまで、VMware製品ではDirectXサポートが、VirtualBoxではOpenGLサポートが提供されてきましたが、いずれもWindowsゲスト限定のものでした。ホスト側のOSは問われません。では、Linuxゲストではどうなるのでしょうか? 当初は不可能だと考えていました。ところが、linux.comの記事で、VMGLというアプリケーションを使えばLinuxゲストでも3D描画を楽しめると知りました。非常に有望に見えた一方で、難しそうでもありました。5〜10分の手軽なハックではなく、かなり大掛かりな

  2. 仮想マシンで3Dアクセラレーションを実現する方法 パート1:VMwareとDirectXの設定チュートリアル

    既存のホストマシンの上で仮想化されたOSを動かすのは、とても魅力的なアイデアです。楽しく、クールで、実際のプラットフォームに導入する前にソフトウェアを試せるだけでなく、通常はためらってしまうような操作にも挑戦できます。さらに大きな柔軟性を得られ、展開コストも大幅に削減できます。しかし、ほとんどの仮想化ソフトウェアに欠けていたのが、ゲストOS向けの3Dアクセラレーションでした。あるいは「欠けていた」と言うべきでしょう……今や、仮想マシンでの3Dアクセラレーションは現実のものとなっています。はじめにこの連載記事では、ゲストOSで3Dアクセラレーションを有効にするために必要な簡単な設定テクニックを紹