最近メインのデスクトップPCをWindows 7からCentOS 7にし、VMware上にWindows 7を入れかえました。ところが、ホストのWindows 7上でUnityが動かないことからDirectなんたら(Direct X? Direct 3D)が使えないことに気づきました。CentOS関連の記事が少なくて、直すのが結構面倒だったのでメモ程度に書いておきます。
環境:
ホスト:CentOS 7 x64
ゲスト:Windows 7 SP1 x64
グラボ:GTX 640だったかな?あまり関係無いと思います。
症状:
VMwareからWindows 7を起動すると、「3D Accelerationが無効になりました」とか「デバイスが読み込めませんでした」とかのメッセージが表示され、3D Accelerationの機能が使えません。
対処法:
1.driconfを入れてS3TC Texture Compressionとやらを有効にする
まず、このリンク先からdriconfをダウンロードします。解凍してインストール。
tar xfvz driconf-0.9.1.tar.gz
cd driconf-0.9.1
python setup.py install
わーい、driconfが入った〜、と思うとエラーが起きます。
driconf
>〜〜〜
>UnboundLocalError: local variable 'j' referenced before assignment
>〜〜〜
どうやらpythonコードでエラーが発生している模様。
cd /usr/lib/driconf
vi driconf_simpleui.py
viエディタで、260行目あたりに以下の水色の文を追加します。
:
i = chars
j = i
while i >= chars/3:
:
保存すれば、エラーが発生しないと思います。driconfをもう一度実行します。
driconf
すると「Direct Rendering Preferences」というウィンドウが表示されます。
「Image Quality」タブの「Enable S3TC texture compression even if...」をクリックして「はい(Y)」にします。
下部の「Expert Mode」をクリックしてDefaultに保存します。
これで1つ目完了。
2.libtxc_dxtnをインストールする
以下のコマンドを実行してインストールします。
yum install libtxc_dxtn
以上。
3.ホストの設定を変える
ホストがシャットダウンしている状態で、vmxファイルを編集します。(Win7仮定)
cd /home/[username]/vmware/Windows7/
vi "Windows 7.vmx"
以下の文章がなければ追加してください。
mks.enable3d = "TRUE"
mks.gl.allowBlacklistedDrivers = "TRUE"
svga.vramSize = "67108864"
保存します。
最後に、ゲスト(CentOS)の再起動をしてください。
再起動が完了したらVMwareからホストを起動してください。エラーが発生せずに起動できたら成功です。フルスクリーンゲームとかやるひとはmouseの部分の設定も要るみたいですが、調べたらすぐに出てくるのでここには書きません。
-- 追記(2015/05/03) --
翌日起動したら
Vmware Player unrecoverable error: (svga)
Unexpected signal: 11
というエラーが発生しました。
書くのを忘れていましたが、ゲストを起動する前に、3D Accelerationのウィンドウを出しておく必要があります。
driconf &
これで「Direct Rendering Preferences」ウィンドウを一度起動させておかなければいけません。
1つのアプリケーションがグラフィックボードの機能を使った後に、他のソフトが使おうとするとVMwareが同じエラーで落ちることがあります。少なくともCentOSからの3D Accelerationはあまり良い機能を持っていませんね・・・
参考文献:
http://useranswaser.com/answer/how-to-fix-3d-acceleration-for-vmware-workstation-9/
http://ameblo.jp/yukisku/entry-11777593255.html
http://sourceforge.net/p/driconf/bugs/3/