VMware

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

この記事では最新バージョンの VMware である VMware Workstation Pro と Player 15, 14, 12 を扱います。

VMware に Arch Linux をインストールするのは別の記事になっています。 古いバージョンを使用する場合は、AURvmware-patchAUR を使って下さい。

目次

インストール

VMware Bundle または vmware-workstationAUR パッケージを使用してインストールします。 x86_64で VMware Workstation を使用する場合は、後者が優先されます。

ノート: VMware has dropped support for a number of CPUs including early Intel Core i7 CPUs since version 14. Check the Processor Requirements for Host Systems. If your CPU is not supported in the newer releases then you can use vmware-workstation12AUR.

VMware bundle

適切な依存パッケージをインストールしてください:

最新の VMware Workstation Pro または Player をダウンロードしてください (若しくは、可能であれば ベータ バージョン)。

インストールを開始してください:

# sh VMware-<edition>-<version>.<release>.<architecture>.bundle
ヒント: その他の有用なフラグ:
  • --eulas-agreed - EULA をスキップ。
  • --console - コンソール UI を使います。
  • --custom - インストールディレクトリを /usr/local などに変更できます (変更した場合は systemd サービスvmware-usbarbitrator.service 内のパスも更新してください)。
  • -I, --ignore-errors - 致命的なエラーを無視します。
  • --set-setting=vmware-workstation serialNumber XXXXX-XXXXX-XXXXX-XXXXX-XXXXX - インストールのシリアル番号を設定 (スクリプトでインストールするときに有用)。
  • --required - 必須の質問だけを表示 (--eulas-agreed--console と組み合わせることでサイレントインストールできます)。

System service scripts directory には、 /etc/init.d を使って下さい (デフォルト)。

ノート: インストール中に "No rc*.d style init script directories" というエラーが表示されますが、Arch は systemd に移行しているので、無視してかまいません。
ヒント: 後でターミナルからモジュールを(再)ビルドするには、次のコマンドを使って下さい:
# vmware-modconfig --console --install-all

Package build for x86_64

Install vmware-workstationAUR, vmware-workstation14AUR, vmware-workstation12AUR or vmware-workstation11AUR for respectively versions 15, 14, 12 and 11 of VMware Workstation. It is also necessary to install the appropriate headers package(s) for your installed kernel(s): for example linux-headers or linux-lts-headers.

Then, as desired, enable some of the following services:

  • vmware-networks.service for guest network access
  • vmware-usbarbitrator.service for connecting USB devices to guest
  • vmware-hostd.service for sharing virtual machines

Lastly, load the VMware modules:

# modprobe -a vmw_vmci vmmon

設定

カーネルモジュール

VMware Workstation 12.5 はバージョン 4.8 までのカーネルをサポートしています。

systemd サービス

(任意) /etc/init.d/vmware (start|stop|status|restart) と /usr/bin/vmware-usbarbitrator を使って直接サービスを管理するのではなく、.service ファイルを使用することもできます (AURvmware-systemd-servicesAUR から取得することも可能、vmware-patchAUR にも入っています):

/etc/systemd/system/vmware.service
[Unit]
Description=VMware daemon
Requires=vmware-usbarbitrator.service
Before=vmware-usbarbitrator.service
After=network.target

[Service]
ExecStart=/etc/init.d/vmware start
ExecStop=/etc/init.d/vmware stop
PIDFile=/var/lock/subsys/vmware
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
/etc/systemd/system/vmware-usbarbitrator.service
[Unit]
Description=VMware USB Arbitrator
Requires=vmware.service
After=vmware.service

[Service]
ExecStart=/usr/bin/vmware-usbarbitrator
ExecStop=/usr/bin/vmware-usbarbitrator --kill
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

他の Workstation サーバーコンソールから VMware Workstation に接続したい場合、以下のサービスも追加してください:

/etc/systemd/system/vmware-workstation-server.service
[Unit]
Description=VMware Workstation Server
Requires=vmware.service
After=vmware.service

[Service]
ExecStart=/etc/init.d/vmware-workstation-server start
ExecStop=/etc/init.d/vmware-workstation-server stop
PIDFile=/var/lock/subsys/vmware-workstation-server
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

作成したら有効化することでブート時に起動できます。

Workstation Server サービス

vmware-workstation-server.service はコマンドチェインで wssc-adminTool を実行しますが、このバイナリファイルの名前は vmware-wssc-adminTool に変更されています。

サービスが起動するのを防ぐには、以下のようにシンボリックリンクを作成してください:

# ln -s wssc-adminTool /usr/lib/vmware/bin/vmware-wssc-adminTool

アプリケーションを起動する

VMware Workstation Pro を開くには:

$ vmware

VMware Player の場合:

$ vmplayer

ヒントとテクニック

Workstation Pro ライセンスキーを入力する

ターミナルから

# /usr/lib/vmware/bin/vmware-vmx-debug --new-sn XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

XXXXX-XXXXX-XXXXX-XXXXX-XXXXX はあなたのライセンスキーに置き換えてください。

ノート: -debug バイナリはライセンスが間違っている場合に知らせてくれます。

GUI から

上記で上手くいかない場合は、次を試すことができます:

# /usr/lib/vmware/bin/vmware-enter-serial

VMware BIOS を展開する

$ objcopy /usr/lib/vmware/bin/vmware-vmx -O binary -j bios440 --set-section-flags bios440=a bios440.rom.Z
$ perl -e 'use Compress::Zlib; my $v; read STDIN, $v, '$(stat -c%s "./bios440.rom.Z")'; $v = uncompress($v); print $v;' < bios440.rom.Z > bios440.rom

インストーラーを抽出する

インストーラー .bundle の中身を確認するには:

$ sh VMware-edition-version.release.architecture.bundle --extract /tmp/vmware-bundle/

改造 BIOS を使う

展開した BIOS に変更を加えるとき、あなたの仮想マシンがその BIOS を使うようにするには BIOS を ~/vmware/<Virtual machine name> に移動して:

$ mv bios440.rom ~/vmware/<Virtual machine name>/

ファイルの名前を <Virtual machine name>.vmx ファイルに追記してください:

~/vmware/<Virtual machine name>/<Virtual machine name>.vmx
bios440.filename = "bios440.rom"

Intel と Optimus で 3D グラフィックを有効化

3D アクセラレーションが不安定なグラフィックドライバーはデフォルトでブラックリストに入れられています。Accelerate 3D graphics を有効化すると、ログに以下のように表示されることがあります:

Disabling 3D on this host due to presence of Mesa DRI driver.  Set mks.gl.allowBlacklistedDrivers = TRUE to override.

その場合、以下のように設定してください:

~/.vmware/preferences
mks.gl.allowBlacklistedDrivers = TRUE

トラブルシューティング

/dev/vmmon not found

エラーの全文は:

Could not open /dev/vmmon: No such file or directory.
Please make sure that the kernel module `vmmon' is loaded.

これは vmmon VMware サービスが動作していないことを意味しています。#Systemd サービスsystemd サービスを使っている場合は(再)起動してください。

/dev/vmci not found

エラーの全文は:

Failed to open device "/dev/vmci": No such file or directory
Please make sure that the kernel module 'vmci' is loaded.

以下のコマンドを実行して VMware のカーネルモジュールを再コンパイルしてみてください:

# vmware-modconfig --console --install-all

Kernel headers for version 4.x-xxxx were not found. If you installed them[...]

ヘッダーをインストールしてください (linux-headers)。

ノート: カーネルやヘッダーをアップグレードしたら、ヘッダーのバージョンを合わせるために新しいカーネルで起動する必要があります。比較的よくあるエラーです。

USB デバイスが認識されない

ヒント: vmware-patchAUR でも対処できます。

systemd サービスを使ってサービスを自動的に管理しない場合、毎回手動で root を使って vmware-usbarbitrator バイナリを起動する必要があります。

起動するには:

# vmware-usbarbitrator

停止するには:

# vmware-usbarbitrator --kill

インストーラーが起動しない

.bundle を開くとプロンプトに戻ってしまう場合、おそらく VMware インストーラーの古いバージョンまたは壊れたバージョンが存在しています。削除してください (この記事のアンインストールセクションも参照してください):

# rm -r /etc/vmware-installer/

User interface initialization failed

以下のようなエラーが表示される場合もあります:

 Extracting VMware Installer...done.
 No protocol specified
 No protocol specified
 User interface initialization failed.  Exiting.  Check the log for details.

ncurses5-compat-libsAUR をインストールするか、一時的に X に root でアクセスできるようにすることで解決します:

 $ xhost +
 $ sudo ./<vmware filename>.bundle
 $ xhost -

ゲストで VMware Tools がダウンロードできない

ツールを手動でダウンロードするには VMware リポジトリ を訪れてください。

"application name / version / build ID / linux / packages/" まで移動して適切な Tools をダウンロードします。

展開するには次を実行:

$ tar -xvf vmware-tools-name-version-buildID.x86_64.component.tar

VMware インストーラーを使ってインストール:

# vmware-installer --install-component=/path/vmware-tools-name-version-buildID.x86_64.component

上記で上手くいかない場合は ncurses5-compat-libsAUR をインストールしてみてください。

VMware にリモートでアクセスしようとすると Incorrect login/password エラー

VMware Workstation には vmware-workstation-server サービスによって共有 VM をリモートで管理できる機能があります。しかしながら、vmware-authd サービスの PAM 設定が間違っているために、"incorrect username/password" エラーで失敗します。修正するには、以下のように /etc/pam.d/vmware-authd を編集して:

/etc/pam.d/vmware-authd
#%PAM-1.0
auth     required       pam_unix.so
account  required       pam_unix.so
password required       pam_permit.so
session  required       pam_unix.so

vmwaresystemd サービスを再起動してください。

これでインストールで作られた証明書を使ってサーバーにアクセスできるはずです。

ノート: 仮想マシンを起動するために libxslt が必要になるかもしれません。

ALSA 出力の問題

音質や HD 音声出力が有効にできない問題を修正するには、まず以下を実行 [1]:

$ aplay -L

ゲストから 5.1 のサラウンド音声を再生したい場合 surround51:CARD=vendor_name,DEV=num を、音質に問題がある場合は front:CARD=vendor_name,DEV=num を確認して、.vmx に名前を記述してください:

~/vmware/Virtual_machine_name/Virtual_machine_name.vmx
sound.fileName="surround51:CARD=Live,DEV=0"
sound.autodetect="FALSE"

OSS エミュレーションを使っている場合、無効化してください。

Kernel-based Virtual Machine (KVM) is running

起動時に KVM を無効にするために、以下のようなファイルを使うことができます:

/etc/modprobe.d/vmware.conf
blacklist kvm
blacklist kvm-amd   # For AMD CPUs
blacklist kvm-intel # For Intel CPUs

Intel のマイクロコードが古いせいで起動時にセグメンテーション違反が発生する

Intel のマイクロコードが最新でないと起動時に以下のようなセグメンテーション違反が発生することがあります:

/usr/bin/vmware: line 31: 4941 Segmentation fault "$BINDIR"/vmware-modconfig --appname="VMware Workstation" --icon="vmware-workstation"

マイクロコードを参照してアップデートしてください。

時刻がおかしくなったり "[...]timeTracker_user.c:234 bugNr=148722" というエラーで VMware が起動しない

VMware Linux における電源管理機能 (Intel SpeedStepAMD PowerNow!/Cool'n'Quiet) のサポートが 不完全 で CPU 周波数が変化するのが原因です。2012年3月、linux 3.3-1 のリリースによって、最大周波数の Performance ガバナーは動的な Ondemand によって置き換わりました。ホストの CPU 周波数が変化すると、ゲストのシステムクロックが早すぎたり遅すぎたりするようになり、ゲストが全く起動できなくなることもあります。

この問題を解決するには、全体設定で、ホストで最大 CPU 周波数を指定して、Time Stamp Counter (TSC) を無効化します:

/etc/vmware/config
host.cpukHz = "X"  # The maximum speed in KHz, e.g. 3GHz is "3000000".
host.noTSC = "TRUE" # Keep the Guest system clock accurate even when
ptsc.noTSC = "TRUE" # the time stamp counter (TSC) is slow.
ヒント: 定期的に時刻を補正するには、VMware Tools の Options タブで、次のオプションを有効化してください: "Time synchronization between the virtual machine and the host operating system"

システムを再起動した後にゲストのネットワークが使えなくなる

おそらく vmnet モジュールがロードされていないのが原因です [2]。自動ロードする方法は #systemd サービスセクションを参照してください。

Linux 4.9 でカーネルモジュールのビルドに失敗する

VMware Workstation Pro 12.5.2 現在、コンパイルを通すにはモジュールのソースに修正が必要です [3]:

# cd /usr/lib/vmware/modules/source
# tar xf vmmon.tar
# mv vmmon.tar vmmon.old.tar
# sed -i 's/uvAddr, numPages, 0, 0/uvAddr, numPages, 0/g' vmmon-only/linux/hostif.c
# tar cf vmmon.tar vmmon-only
# rm -r vmmon-only
# tar xf vmnet.tar
# mv vmnet.tar vmnet.old.tar
# sed -i 's/addr, 1, 1, 0/addr, 1, 0/g' vmnet-only/userif.c
# tar cf vmnet.tar vmnet-only
# rm -r vmnet-only

バージョン 12.5.4 から vmplayer/vmware の起動に失敗する

フォーラムスレッド によれば、libpng パッケージをバージョン 1.6.28-1 にダウングレードすることで一時的に解決できます。ダウングレードしたら /etc/pacman.confIgnorePkg パラメータにパッケージを追加してください。

もしくは、以下のコマンドを実行することで VMWare がシステムの zlib を使うようになります:

# cd /usr/lib/vmware/lib/libz.so.1
# mv libz.so.1 libz.so.1.old
# ln -s /usr/lib/libz.so.1 .

バージョン 12.5.3 で vmplayer/vmware が起動できない

この問題は /usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6CXXABI_1.3.8 が抜けていることが原因です。

gcc-libsgcc-libs-multilib[リンク切れ: 置換パッケージ: gcc-libs] がインストールされているのであればライブラリは既にインストールされています。ファイルを削除することで vmplayer は gcc-libs のライブラリを使うようになります。root で以下のコマンドを実行してください:

# mv /usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6 /usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6.bak

また、以下のコマンドで一時的に対処することもできます:

# export VMWARE_USE_SHIPPED_LIBS='yes'

vmware 12 のプロセスが起動後にすぐ終了し、GUI が起動しない

Mageia にバグが報告されていますが、Arch ではターミナルにエラーメッセージが表示されません。/tmp/vmware-<id> のログを見ると VMWARE_SHIPPED_LIBS_LIST is not set, VMWARE_SYSTEM_LIBS_LIST is not set, VMWARE_USE_SHIPPED_LIBS is not set, VMWARE_USE_SYSTEM_LIBS is not set が確認できます。プロセスは Unable to execute /usr/lib/vmware/bin/vmware-modconfig で終了しています。解決するには root で以下のコマンドを実行してください:

# mv /etc/vmware/icu/icudt44l.dat /etc/vmware/icu/icudt44l.dat.bak

もしくは以下のコマンドでも一時的に回避できます:

$ export VMWARE_USE_SHIPPED_LIBS='yes'

カーネル 4.11 以上で vmware モジュールのビルドに失敗する

vmware-modconfig を実行すると以下のように表示される場合:

Failed to get gcc information.

ログで実際のエラーを確認できます:

modconfig| I125: Got gcc version "6.3.1".
modconfig| I125: GCC major version 6 does not match Kernel GCC major version 7.
modconfig| I125: The GCC compiler "/sbin/gcc" cannot be used for the target kernel.

チェックをスキップするには、以下のコマンドを実行してください:

# sed 's/gcc version 7/gcc version 6/' /proc/version > /tmp/version
# mount --bind /tmp/version /proc/version
# vmware-modconfig --console --install-all
# umount /proc/version && rm /tmp/version

アンインストール

VMware をアンインストールするには製品名が必要です (vmware-workstation または vmware-player)。インストールされている製品を全て表示するには:

$ vmware-installer -l

次のコマンドでアンインストールしてください (--required で確認をスキップできます):

# vmware-installer -u <product> --required

vmware サービスを無効にして削除するのも忘れないで下さい:

# rm /etc/systemd/system/vmware.service
# rm /etc/systemd/system/vmware-usbarbitrator.service

/usr/lib/modules/<kernel name>/misc/ のモジュールディレクトリにも何か残っていないか確認すると良いでしょう。