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

仮想マシンでの 3D アクセラレーション - パート 3:Linux ホストと Linux ゲスト - VMGL - (Im)possible?

これは、仮想化に関する 3 回目の記事です。そして多分一番難しい。これまでのところ、VMware 製品では DirectX がサポートされ、VirtualBox では OpenGL がサポートされていますが、いずれも Windows ゲストのみが利用できます。ホスト プラットフォームの選択は問題ではありませんでした。しかし、Linux ゲストはどうでしょうか?

これはいけないと思いました。しかし、Linux ゲストで VMGL というアプリケーションを使用して 3D を楽しむ方法を紹介している linux.com の記事を読みました。それは有望以上に見えました。見栄えが良かったです。でも難しそうにも見えました。これは、5 ~ 10 分のハッキングではありませんでした。その仕事は大きなものでした。それで、これが実際にできるかどうかを確認することにしました。

そして答えは ...

答えは次のとおりです。記事/チュートリアル/ガイド/ハウツーで「動作するはずです」や「必要なのは...」などのフレーズを使用している場合は注意してください。あなたは多くの問題を抱えています。

元の記事と著者のアプリケーション ドキュメントでは、目標に近づくために行わなければならない作業の約 90% が考慮されていません。このチュートリアルでは、Linux 仮想マシンで 3D を動作させるために必要な (おそらく) 恐ろしい詳細をすべて紹介します。追記詳細については、最初の 2 つの記事をご覧ください:

仮想マシンでの 3D アクセラレーション - パート 1:VMware &DirectX - チュートリアル

仮想マシンでの 3D アクセラレーション - パート 2:VirtualBox &OpenGL - チュートリアル

VMGL:OpenGL 3D アクセラレーション - ノーカット バージョン

VMware Server から始めて、VirtualBox でも同じことを試します。

インストール

パッケージのダウンロードとインストールは簡単です。これらは RPM 形式であるため、Debian ベースのディストリビューション (Ubuntu など) を実行している場合は、最初にエイリアン パッケージをインストールし、RPM を DEB に変換する必要があります。まず、エイリアンをインストールします:

sudo apt-get インストール エイリアン

次に、RPM パッケージを DEB に変換します:

エイリアン -k パッケージ.rpm パッケージ.deb

最後に、それらをインストールします:

rpm -i パッケージ.rpm

また

dpkg -i package.deb

実際の VMGL パッケージを一般的な名前に置き換えて、ホストに 1 回、ゲストに 1 回インストールします。

注:RPM/DEB をインストールする場合、(目に見える) エラーは表示されません。ただし、ソースを使用してインストールしようとすると、完全に混乱することが判明しました.すべてのビルドに不可欠なパッケージ (gcc、make、カーネル ソース、カーネル ヘッダー) に加えて、imake、python、opengl ヘッダーなどの他の多くのパッケージを含む、豊富な依存関係を満たす必要があります。

残念ながら、作成者は必要な依存関係の完全なリストを提供しようとはしていません。そのため、何が必要で何が不要かを試行錯誤によって推測する必要があります。

ソースは完全に壊れているようです:

Ubuntu ゲストの場合:

この段階で諦めてしまう可能性が高いです。しかし、RPM/DEB パッケージを使用した場合は、すべてがうまくいったと思うかもしれませんので、次に進みます ...

ロード モジュール

次のステップは、xorg.conf ファイルを変更することです。次のようなセクションを追加します:

セクション「モジュール」
「vmgext」をロード
終了セクション

変更を有効にするために、ゲスト X ウィンドウを再起動します (Ctrl + Alt + Backspace)。

Xvnc サーバーの起動

次に、ゲストで、すべての魔法の OpenGL トンネリングを行うことになっている変更された Xvnc サーバーを起動します。

ああ、ここでトリッキーな部分が来ます。著者はサーバーの古いバージョンを使用していたため、理由は不明ですが、大学で使用していたものを使用した可能性が最も高いことを除いて、存在しないファイルとフォルダーの場所を想定しているため、最新のディストリビューションでは機能しません。最新のディストリビューションで。

SUSE 11.0 と Ubuntu 8.10 の両方で、サーバーをエラーなしで実行するためにかなりのハッキングを実行する必要がありました。次のような多くのエラーが表示されます:

仮想マシンでの 3D アクセラレーション - パート 3:Linux ホストと Linux ゲスト - VMGL - (Im)possible?

これは、2003 パッケージを使用してアプリケーションを作成した場合に発生します。幸いなことに、解決策は「簡単」です。したがって、問題を解決するには:

rgb.txt をダウンロード

それが最初のエラーです。インターネット上のどこかでファイルを見つけます (google it)。ダウンロードして、パッケージが期待する場所に配置します。ファイル自体で、空の行を削除します。構文エラーが発生するためです。

Xvnc サーバーが期待する場所にファイルを配置します。または、/etc/X11/rgb.txt の下に配置し、シンボリック リンクを作成します。

cd /usr/X11R6/lib/X11
sudo ln -s /usr/share/X11/rgb.txt
cd /usr/share/X11
sudo ln -s /etc/X11/rgb.txt

したがって、次のようになります:

仮想マシンでの 3D アクセラレーション - パート 3:Linux ホストと Linux ゲスト - VMGL - (Im)possible?

醜く見えますが、そうです!

次のステップは、不足しているすべてのフォントのシンボリック リンクも作成することです。

cd /usr/X11R6/lib/X11/フォント
sudo ln -s /usr/share/fonts/X11/100dpi
sudo ln -s /usr/share/fonts/X11/75dpi
sudo ln -s /usr/share/fonts/X11/encodings
sudo ln -s /usr/share/fonts/X11/misc
sudo ln -s /usr/share/fonts/X11/Type1
sudo ln -s /usr/share/fonts/X11/util

そして、次のようになります:

仮想マシンでの 3D アクセラレーション - パート 3:Linux ホストと Linux ゲスト - VMGL - (Im)possible?

ここで、Xvnc サーバーを起動すると、まだエラーが発生しますが、今回は動作します:

次に、ホストで vncviewer を実行します。言うまでもなく、ゲストにはホストから到達可能な IP アドレスが必要です。つまり、ゲスト仮想マシンにはブリッジ ネットワークまたは NAT ネットワークが必要です。

vncviewer ゲスト IP アドレス:1

次のようになります:

ゲストで、GLSTUB をエクスポートします:

export GLSTUB=ゲスト IP アドレス:ポート

この例では、GLSTUB が 7001 へのポートを指していることがわかります。ゲスト IP アドレスは 192.168.34.129 であるため、次のように GLSTUB をエクスポートします:

export GLSTUB=192.168.34.129:7001

そして今、魔法!すべてがうまくいくはずです。

ええと、そうではありません。 glxinfo を実行しても、使用中の vmglext ドライバーは表示されず、推奨どおりに glxgears を実行しても、以前と同じひどいパフォーマンスが表示されます。パッケージが壊れていることを考えると、これは当然のことです。

VirtualBox ですべてやり直す

NAT を使用した VMware Server とその独自のコードが問題だと思いました。そこで、VirtualBox OSE エディションを実行している Ubuntu ホストと Ubuntu ゲストを使用して、同じトリックを試しました。また、これを機能させるためにブリッジ ネットワークを構成しました。

ブリッジ ネットワークの構成は、当面のトピックとは特に関係ありませんが、ホストとゲストが通信するために実行する必要がある一連のコマンドを次に示します。詳細については、以下をお読みください:

VirtualBox - コミュニティ Ubuntu ドキュメント

だからここに私がしたことです(あなたのニーズ/構成を正確に反映していないかもしれません):

1. ホストにブリッジ ユーティリティをインストールする

最初のステップは、ネットワーク インターフェイスをブリッジして IP アドレスを共有できるように、ブリッジ ユーティリティをインストールすることです。

sudo apt-get install bridge-utils

2. ネットワーク スクリプトでブリッジを宣言する

ブリッジ ユーティリティをインストールしたら、ネットワーク構成ファイルで宣言する必要があります。ここに示すように、Debian ベースのシステムでは、構成は単一のファイル /etc/network/interfaces に保持されます。 RedHat ベースのディストリビューションでは、ネットワーク アダプターごとに個別の構成スクリプトを個別に使用していました。

追記独自に選択した静的 IP アドレスを使用してください。

sudo gedit /etc/network/interfaces

上記のファイルに追加:

自動br0
iface br0 inet static
アドレス 192.168.3.100
ネットマスク 255.255.255.0
ゲートウェイ 192.168.3.1
bridge_ports eth0 vbox0

3. VirtualBox の仮想ネットワーク アダプターを宣言する

これにより、VirtualBox が br0 ブリッジを使用できるようになります:

sudo gedit /etc/vbox/interfaces

上記のファイルに追加:

vbox0 <あなたのユーザー名> br0

4. ネットワークと VirtualBox ドライバーを再起動します

変更が構成ファイルに追加されたら、変更を有効にするためにネットワーク サービスと VirtualBox の両方を再起動する必要があります。

sudo サービス ネットワーキングの再起動
sudo /etc/init.d/virtualbox-ose 再起動

5. あちこちのファイルをハックして適切な権限を取得する

VirtualBox がそれらを使用できるように、ネットワーク トンネリング デバイスへのアクセス許可を変更する必要がある場合があります。これは次のように行われます:

sudo chown root:vboxusers /dev/net/tun
須藤 chmod 666 /dev/net/tun

6. vbox0 仮想アダプターを使用するようにゲストを構成します

これは、関連する仮想マシンの [設定] メニューにアクセスすることにより、ホスト マシンで実行されます。これが素敵なスクリーンショットです:

7. ゲストの電源を入れ、静的 IP アドレスを割り当てる

このアドレスは、ブリッジと同じサブネットに属している必要があります。つまり、最後のオクテットを 1 だけ増やします。

sudo ifconfig <デバイス> アップ

私たちの場合には:

sudo ifconfig eth3 192.168.3.101 アップ

8. 前に行ったすべての手順を繰り返します

ノーカット バージョンの最初に戻り、セットアップ全体をもう一度実行します。繰り返しますが、うまくいきません。魔法?

結論

As it turns out, enjoying 3D acceleration on Linux virtual machines is beyond 99.999995% of users, including knowledgeable geeks like me. The project, apparently someone's PhD, does feel like a true academic work:it's half-finished and it's unusable by normal people.

What beats me, though, is the claim that "you should all be set" after only a few minor hacks, as if we're talking cups of fresh morning dew. And the five-minute hack turns out to be 3-4 hours of misery. Why, on Earth, would someone use a 6-year old version of the Xvnc for the task?

However, I think what really annoys me the most is the fact someone actually released a product in such a shabby state.残念なこと。 Well, not all is lost. We've had 2 out 3 working. VMware support for DirectX in Windows guests and VirtualBox support for OpenGL in Windows guests proved to be gems.

But lament not! VMware and Sun are big shots in the virtualization industry. It is only a matter of time before 3D acceleration becomes a happy reality for Linux users running Linux guests.

When all things are taken into consideration, the need for Linux host / Linux guest 3D acceleration seems less important. Windows users will probably only use Windows. If and when they need Linux, they will most likely dual-boot. Linux users will most likely want Windows guests, so they can use the legacy applications they need, and for this they already have a solution (or two). The Linux-in-Linux virtualization is a wicked idea, but it is not a priority with most people. It will happen. Mark my words.

To wrap it up, let's review what we did so far. We learned a few valuable lessons in this series of articles. We learned how to use VMware Server and VirtualBox so that we can enjoy 3D acceleration in our Windows guests. We learned a few more cool hacks and tricks along the way. Most importantly, we learned that desktop virtualization is in continuous evolution, taking us further in our goals and desires.

乾杯。


  1. 仮想マシンでの 3D アクセラレーション - パート 2:VirtualBox &OpenGL - チュートリアル

    これは、仮想マシンでの 3D 仮想化の構成と使用に特化した 3 つの記事の 2 番目です。今日は、Windows または Linux ホストにインストールされた VirtualBox で実行されている Windows 仮想マシンの OpenGL アプリケーション (およびゲーム) の 3D アクセラレーションを有効にする方法を学習します。 最初の記事では、VMware 製品を使用して、Windows で DirectX プログラムの 3D アクセラレーションを有効にする方法について説明しました。ホスト プラットフォームの選択は問題ではありませんでした。 Windows ホストと Linux

  2. 仮想マシンでの 3D アクセラレーション - パート 1:VMware &DirectX - チュートリアル

    仮想化されたオペレーティング システムを既存のホスト上で実行することは、優れたアイデアです。楽しく、クールで、実際のプラットフォームにコミットする前にソフトウェアを試すことができ、通常はあえてしないことを行うことができ、非常に大きな柔軟性が得られ、展開のコストが大幅に削減されます。 しかし、ほとんどの仮想化ソフトウェアに欠けているのは、ゲスト オペレーティング システムの 3D アクセラレーションです。または不足していた...仮想マシンでの 3D アクセラレーションが現実のものになりました。 はじめに この一連の記事では、ゲスト OS で 3D アクセラレーションを有効にする