「VMware」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(7人の利用者による、間の37版が非表示)
1行目: 1行目:
[[Category:仮想化]]
+
[[Category:ハイパーバイザ]]
 
[[en:VMware]]
 
[[en:VMware]]
 
[[it:VMware]]
 
[[it:VMware]]
 
[[ru:VMware]]
 
[[ru:VMware]]
 
[[uk:VMware]]
 
[[uk:VMware]]
[[zh-CN:VMware]]
+
[[zh-hans:VMware]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|VMware に Arch Linux をインストール}}
 
{{Related|VMware に Arch Linux をインストール}}
14行目: 14行目:
 
{{Related articles end}}
 
{{Related articles end}}
   
  +
この記事では最新バージョンの [[Wikipedia:VMware|VMware]] である [[Wikipedia:VMware Workstation|VMware Workstation]] Pro と Player 16, 15, 14, 12.5 を扱います。
この記事は Arch Linux における VMware のインストールについての記事です。[[VMware に Arch Linux をインストール]]するのは別の記事になっています。
 
  +
{{Note|
 
  +
[[VMware に Arch Linux をインストール]]することもできます。
*この記事では最新バージョンの VMware である VMware Workstation Pro と VMware Player 12 を扱います。
 
  +
*古いバージョンを使用する場合は、[[Arch User Repository|AUR]] の {{AUR|vmware-patch}} を使って下さい。
 
  +
== 前提条件 ==
}}
 
  +
  +
1. マシンの BIOS/UEFI で仮想化を有効にする。
   
 
== インストール ==
 
== インストール ==
  +
  +
VMware Bundle または {{aur|vmware-workstation}} パッケージを使用してインストールします。 x86_64で ''VMware Workstation'' を使用する場合は、後者が優先されます。
  +
  +
{{Note|VMware は、バージョン 14 以降、初期の Intel Core i7 CPU を含む多くの CPU のサポートを終了しました。 [https://docs.vmware.com/en/VMware-Workstation-Pro/14.0/com.vmware.ws.using.doc/GUID-BBD199AA-C346-4334-9F56-5A42F7328594.html ホストのプロセッサ要件を確認してください。] CPU が新しいリリースでサポートされていない場合は、{{aur|vmware-workstation12 を使用できます。}}}}
  +
  +
=== VMware bundle ===
   
 
適切な依存パッケージを[[インストール]]してください:
 
適切な依存パッケージを[[インストール]]してください:
  +
*{{pkg|fuse}} - {{ic|vmware-vmblock-fuse}} サービスが {{ic|vmblock}} モジュールよりも [https://www.mail-archive.com/open-vm-tools-devel@lists.sourceforge.net/msg00213.html 優先される] ので、カーネルで [http://cateee.net/lkddb/web-lkddb/FUSE_FS.html fuse] を無効にしない限りビルドされません
 
  +
*{{pkg|fuse2}} - ''vmware-vmblock-fuse'' 用
 
*{{pkg|gtkmm}} - GUI 用
 
*{{pkg|gtkmm}} - GUI 用
 
*{{pkg|linux-headers}} - モジュールコンパイル用
 
*{{pkg|linux-headers}} - モジュールコンパイル用
*{{AUR|ncurses5-compat-libs}} - インストーラーを動かすのに必要
+
*{{AUR|ncurses5-compat-libs}} - {{ic|--console}} インストーラーを動かすのに必要
  +
*{{pkg|libcanberra}} - イベントサウンド用
  +
*{{pkg|pcsclite}}
   
 
最新の [https://www.vmware.com/go/tryworkstation VMware Workstation Pro] または [https://www.vmware.com/go/downloadplayer Player] をダウンロードしてください (若しくは、可能であれば [https://communities.vmware.com/community/vmtn/beta ベータ] バージョン)。
 
最新の [https://www.vmware.com/go/tryworkstation VMware Workstation Pro] または [https://www.vmware.com/go/downloadplayer Player] をダウンロードしてください (若しくは、可能であれば [https://communities.vmware.com/community/vmtn/beta ベータ] バージョン)。
36行目: 47行目:
 
*{{ic|--eulas-agreed}} - EULA をスキップ。
 
*{{ic|--eulas-agreed}} - EULA をスキップ。
 
*{{ic|--console}} - コンソール UI を使います。
 
*{{ic|--console}} - コンソール UI を使います。
  +
*{{ic|--custom}} - インストールディレクトリを {{ic|/usr/local}} などに変更できます (変更した場合は [[#systemd サービス|systemd サービス]]の {{ic|vmware-usbarbitrator.service}} 内のパスも更新してください)。
 
*{{ic|-I}}, {{ic|--ignore-errors}} - 致命的なエラーを無視します。
 
*{{ic|-I}}, {{ic|--ignore-errors}} - 致命的なエラーを無視します。
 
*{{ic|1=--set-setting=vmware-workstation serialNumber XXXXX-XXXXX-XXXXX-XXXXX-XXXXX}} - インストールのシリアル番号を設定 (スクリプトでインストールするときに有用)。
 
*{{ic|1=--set-setting=vmware-workstation serialNumber XXXXX-XXXXX-XXXXX-XXXXX-XXXXX}} - インストールのシリアル番号を設定 (スクリプトでインストールするときに有用)。
45行目: 57行目:
 
{{Note|インストール中に {{ic|"No rc*.d style init script directories"}} というエラーが表示されますが、Arch は [[systemd]] に移行しているので、無視してかまいません。}}
 
{{Note|インストール中に {{ic|"No rc*.d style init script directories"}} というエラーが表示されますが、Arch は [[systemd]] に移行しているので、無視してかまいません。}}
   
{{Tip|後でターミナルからモジュールをビルドするには、次のコマンドを使って下さい:
+
{{Tip|後でターミナルからモジュールを()ビルドするには、次のコマンドを使って下さい:
 
# vmware-modconfig --console --install-all
 
# vmware-modconfig --console --install-all
 
}}
 
}}
  +
  +
=== Package build for x86_64 ===
  +
  +
VMware Workstation のバージョン 16、15、14、12、11 に対応する {{aur|vmware-workstation}}, {{aur|vmware-workstation15}}, {{aur|vmware-workstation14}}, {{aur|vmware-workstation12}} または {{aur|vmware-workstation11}} をインストールします。また、{{pkg|linux-headers}} や {{pkg|linux-lts-headers}} など、インストールしたカーネルに適したヘッダーパッケージをインストールする必要があります。
  +
  +
次に、必要に応じて以下のサービスを有効にします:
  +
  +
* {{ic|vmware-networks.service}} ゲストネットワークへのアクセス
  +
* {{ic|vmware-usbarbitrator.service}} USB デバイスへの接続
  +
* {{ic|vmware-hostd.service}} 仮想マシンを共有するためのサービス(バージョン16以降は利用できません)
  +
  +
最後に、VMware モジュールをロードします:
  +
  +
# modprobe -a vmw_vmci vmmon
   
 
== 設定 ==
 
== 設定 ==
53行目: 79行目:
 
=== カーネルモジュール ===
 
=== カーネルモジュール ===
   
* VMware Workstation 12 がサポトしているカーネルは 4.4 までです。4.6 以上のカーネルを使っている場合、ソースに修正が必要で。[[#Linux 4.7 でカーネルモジュールのビルドに失敗する]]を参照
+
VMware Workstation 12.5 はバジョン 4.8 までのカーネルをサポートしていす。
* VMware 11 以下では VMCI/VSOCK ソースにパッチをあてる必要があります。{{AUR|vmware-patch}} パッケージをインストールすることで自動的にパッチを適用できます。
 
   
 
=== systemd サービス ===
 
=== systemd サービス ===
   
''(任意)'' {{ic|/etc/init.d/vmware}} ({{ic|<nowiki>start|stop|status|restart</nowiki>}}) と {{ic|/usr/bin/vmware-usbarbitrator}} を使って直接サービスを管理するのではなく、{{ic|.service}} ファイルを使用することもできます ([[AUR]] の {{AUR|vmware-systemd-services}} から取得することも可能、{{AUR|vmware-patch}} にも入っています):
+
''(任意)'' {{ic|/etc/init.d/vmware}} ({{ic|<nowiki>start|stop|status|restart</nowiki>}}) と {{ic|/usr/bin/vmware-usbarbitrator}} を使って直接サービスを管理するのではなく、{{ic|.service}} ファイルを使用することもできます ([[AUR]] の {{AUR|vmware-systemd-services}}{{Broken package link|パッケージが存在しません}} から取得することも可能、{{AUR|vmware-patch}}{{Broken package link|パッケージが存在しません}} にも入っています):
   
 
{{hc|/etc/systemd/system/vmware.service|
 
{{hc|/etc/systemd/system/vmware.service|
104行目: 129行目:
 
ExecStop=/etc/init.d/vmware-workstation-server stop
 
ExecStop=/etc/init.d/vmware-workstation-server stop
 
PIDFile=/var/lock/subsys/vmware-workstation-server
 
PIDFile=/var/lock/subsys/vmware-workstation-server
  +
RemainAfterExit=yes
   
 
[Install]
 
[Install]
110行目: 136行目:
   
 
作成したら[[有効化]]することでブート時に起動できます。
 
作成したら[[有効化]]することでブート時に起動できます。
  +
  +
==== Workstation Server サービス ====
  +
  +
{{ic|vmware-workstation-server.service}} はコマンドチェインで {{ic|wssc-adminTool}} を実行しますが、このバイナリファイルの名前は {{ic|vmware-wssc-adminTool}} に変更されています。
  +
  +
サービスが起動するのを防ぐには、以下のようにシンボリックリンクを作成してください:
  +
  +
# ln -s wssc-adminTool /usr/lib/vmware/bin/vmware-wssc-adminTool
   
 
== アプリケーションを起動する ==
 
== アプリケーションを起動する ==
119行目: 153行目:
 
$ vmplayer
 
$ vmplayer
   
  +
== ヒントとテクニック ==
== Tips and tricks ==
 
   
 
=== Workstation Pro ライセンスキーを入力する ===
 
=== Workstation Pro ライセンスキーを入力する ===
148行目: 182行目:
 
$ sh VMware-''edition''-''version''.''release''.''architecture''.bundle --extract ''/tmp/vmware-bundle/''
 
$ sh VMware-''edition''-''version''.''release''.''architecture''.bundle --extract ''/tmp/vmware-bundle/''
   
=== 改造 BIOS を使う ===
+
==== 改造 BIOS を使う ====
   
 
展開した BIOS に変更を加えるとき、あなたの仮想マシンがその BIOS を使うようにするには BIOS を {{ic|~/vmware/''<Virtual machine name>''}} に移動して:
 
展開した BIOS に変更を加えるとき、あなたの仮想マシンがその BIOS を使うようにするには BIOS を {{ic|~/vmware/''<Virtual machine name>''}} に移動して:
156行目: 190行目:
 
{{hc|~/vmware/''<Virtual machine name>''/''<Virtual machine name>''.vmx|2=bios440.filename = "bios440.rom"}}
 
{{hc|~/vmware/''<Virtual machine name>''/''<Virtual machine name>''.vmx|2=bios440.filename = "bios440.rom"}}
   
  +
=== Intel と Optimus で 3D グラフィックを有効化 ===
=== DKMS を使ってモジュールを管理する ===
 
   
  +
3D アクセラレーションが不安定なグラフィックドライバーはデフォルトでブラックリストに入れられています。''Accelerate 3D graphics'' を有効化すると、ログに以下のように表示されることがあります:
[[Dynamic Kernel Module Support]] (DKMS) を使って Workstation のモジュールを管理することができ、カーネルを変更する度に {{ic|vmware-modconfig}} を再実行するのを避けることができます。以下の例ではカスタムした {{ic|Makefile}} を使って {{ic|vmware-modconfig}} によりモジュールをコンパイル・インストールします。その後モジュールはカーネルツリーから削除されます。
 
   
  +
Disabling 3D on this host due to presence of Mesa DRI driver. Set mks.gl.allowBlacklistedDrivers = TRUE to override.
==== 準備 ====
 
   
  +
その場合、以下のように設定してください:
まず[[公式リポジトリ]]から {{Pkg|dkms}} をインストールしてください。
 
   
  +
{{hc|~/.vmware/preferences|2=
それから {{ic|Makefile}} と {{ic|dkms.conf}} のソースディレクトリを作成してください:
 
  +
mks.gl.allowBlacklistedDrivers = TRUE
# mkdir /usr/src/vmware-modules-12/
 
  +
}}
   
  +
=== ホストが一時停止/休止状態になる前に仮想マシンを一時停止する ===
==== ビルド設定 ====
 
   
  +
実行可能ファイル {{ic|/usr/lib/systemd/system-sleep/vmware_suspend_all.sh}} を作成します。
{{pkg|git}} を使うか下の方法でファイルを取得してください。
 
   
  +
{{bc|<nowiki>
===== 1) Git を使う =====
 
  +
#! /bin/bash
   
  +
set -eu
$ cd /tmp
 
$ git clone git://github.com/bawaaaaah/dkms-workstation.git
 
$ sed -i 's/9/12/' dkms-workstation/dkms.conf
 
# cp dkms-workstation/Makefile dkms-workstation/dkms.conf /usr/src/vmware-modules-12/
 
   
  +
if [[ $# -ne 2 ]]; then
===== 2) 手動設定 =====
 
  +
echo "Usage: $0 <period> <action>"
  +
exit 1
  +
fi
   
  +
period=$1
{{ic|dkms.conf}} にはモジュールの名前とコンパイル・インストールの手順を記述します。{{ic|1=AUTOINSTALL="yes"}} で自動的に毎回モジュールが再コンパイル・インストールされるようになります:
 
  +
action=$2
   
  +
echo "vmware system-sleep hook argv: ${period} ${action}"
{{hc|/usr/src/vmware-modules-12/dkms.conf|2=
 
PACKAGE_NAME="vmware-modules"
 
PACKAGE_VERSION="12"
 
   
  +
if ! command -v vmrun &>/dev/null; then
MAKE[0]="make all"
 
  +
echo "command not found: vmrun"
CLEAN="make clean"
 
  +
fi
   
  +
if [[ "${period}" = "pre" ]]; then
BUILT_MODULE_NAME[0]="vmmon"
 
  +
readarray -t vms < <(vmrun list | tail -n +2)
BUILT_MODULE_LOCATION[0]="modules"
 
   
  +
echo "Number of running VMs: ${#vms[@]}"
BUILT_MODULE_NAME[1]="vmnet"
 
BUILT_MODULE_LOCATION[1]="modules"
 
   
  +
if [[ ${#vms[@]} -eq 0 ]]; then
BUILT_MODULE_NAME[2]="vmblock"
 
  +
exit
BUILT_MODULE_LOCATION[2]="modules"
 
  +
fi
   
  +
for vm in "${vms[@]}"; do
BUILT_MODULE_NAME[3]="vmci"
 
  +
echo -n "Suspending ${vm}... "
BUILT_MODULE_LOCATION[3]="modules"
 
  +
vmrun suspend "${vm}"
  +
echo "done"
  +
done
   
  +
sleep 1
BUILT_MODULE_NAME[4]="vsock"
 
  +
else
BUILT_MODULE_LOCATION[4]="modules"
 
  +
echo "Nothing to do"
  +
fi
  +
</nowiki>}}
   
  +
参照 [[電源管理#/usr/lib/systemd/system-sleep のフック]], [https://superuser.com/questions/119313/vmware-workstation-suspend-all-virtual-machines-with-vmrun suspend all virtual machines with vmrun] と [https://communities.vmware.com/thread/439380 Support for hibernation]
DEST_MODULE_LOCATION[0]="/extra/vmware"
 
DEST_MODULE_LOCATION[1]="/extra/vmware"
 
DEST_MODULE_LOCATION[2]="/extra/vmware"
 
DEST_MODULE_LOCATION[3]="/extra/vmware"
 
DEST_MODULE_LOCATION[4]="/extra/vmware"
 
   
  +
=== システム高速化のトリック ===
AUTOINSTALL="yes"
 
}}
 
   
  +
こちらを参照 [[パフォーマンスの最大化]]
そして {{ic|Makefile}}:
 
   
  +
==== transparent hugepages を無効にする ====
{{hc|/usr/src/vmware-modules-12/Makefile|2=
 
KERNEL := $(KERNELRELEASE)
 
HEADERS := /usr/lib/modules/$(KERNEL)/build/include
 
GCC := $(shell vmware-modconfig --console --get-gcc)
 
DEST := /lib/modules/$(KERNEL)/vmware
 
   
  +
VM の実行中にゲストやホストが頻繁にフリーズすることに気付いた場合は、transparent hugepages を無効にすることをお勧めします。現在のセッションでそれらを無効にするには、(ホスト上で) 次を実行します。
TARGETS := vmmon vmnet vmblock vmci vsock
 
   
  +
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
LOCAL_MODULES := $(addsuffix .ko, $(TARGETS))
 
   
  +
変更をブート後も永続化するには、[[カーネルパラメータ]] {{ic|1=transparent_hugepage=never}} を追加します。
all: $(LOCAL_MODULES)
 
mkdir -p modules/
 
mv *.ko modules/
 
rm -rf $(DEST)
 
depmod
 
   
  +
{{ic|never}} の代わりに {{ic|madvise}} を使用して、transparent hugepage 用に最適化されたアプリケーションがパフォーマンス上の利点を得られるようにすることもできます [https://blog.nelhage.com/post/transparent- hugepages/] これは、上記と同じことを vmware に対して行います。
$(HEADERS)/linux/version.h:
 
ln -s $(HEADERS)/generated/uapi/linux/version.h $(HEADERS)/linux/version.h
 
   
  +
==== 直接 RAM アクセスを保証する ====
%.ko: $(HEADERS)/linux/version.h
 
vmware-modconfig --console --build-mod -k $(KERNEL) $* $(GCC) $(HEADERS) vmware/
 
cp -f $(DEST)/$@ .
 
   
  +
デフォルトでは、VMware は実行中のゲストシステムの RAM をディスク上のファイルに書き込みます。予備のメモリが十分にあることが確実な場合は、VM の {{ic|.vmx}} に以下を追加することで、ゲスト OS がそのメモリをホストの RAM に直接書き込むようにすることができます。
clean: rm -rf modules/
 
  +
  +
{{hc|''Virtual_machine_name''.vmx|2=
  +
MemTrimRate = "0"
  +
sched.mem.pshare.enable = "FALSE"
  +
prefvmx.useRecommendedLockedMemSize = "TRUE"
  +
mainmem.backing = "swap"
 
}}
 
}}
   
==== ンストール ====
+
=== パフォーマンス向上のヒント ===
   
  +
仮想マシンのパフォーマンスを向上させるには、次のヒントを試してください。
モジュールは次のコマンドでインストールできます:
 
# dkms install vmware-modules/12 -k $(uname -r)
 
   
  +
==== 準仮想化 SCSI アダプター ====
=== Intel と Optimus で 3D グラフィックを有効化 ===
 
   
  +
[https://kb.vmware.com/kb/1010398 VMware Paravirtual SCSI (PVSCSI) アダプター] は、VMware ESXi 用の高性能ストレージアダプターであり、スループットが向上し、CPU 使用率が低下します。PVSCSI アダプターは、ハードウェアまたはアプリケーションが非常に大量の I/O スループットを駆動する環境に最適です。
3D アクセラレーションが不安定なグラフィックドライバーはデフォルトでブラックリストに入れられています。''Accelerate 3D graphics'' を有効化すると、ログに以下のように表示されることがあります:
 
   
  +
SCSI アダプタータイプ {{ic|VMware Paravirtual}} は、仮想マシンの設定で使用できます。
Disabling 3D on this host due to presence of Mesa DRI driver. Set mks.gl.allowBlacklistedDrivers = TRUE to override.
 
   
  +
これらの設定が仮想マシンの構成に含まれていない場合でも、準仮想化 SCSI アダプターを有効にすることができます。{{ic|mkinitcpio.conf}} を変更して、準仮想化 SCSI アダプターがカーネルイメージに含まれていることを確認します。
その場合、以下のように設定してください:
 
   
{{hc|~/.vmware/preferences|2=
+
{{hc|/etc/mkinitcpio.conf|output=
  +
...
mks.gl.allowBlacklistedDrivers = TRUE
 
  +
MODULES=(... vmw_pvscsi)
  +
...
 
}}
 
}}
   
  +
[[mkinitcpio#イメージ作成とアクティベーション|initramfs を再生成します]
== トラブルシューティング ==
 
   
  +
仮想マシンをシャットダウンし、SCSI アダプターを変更します。{{ic|.vmx}} を次のように設定します。
=== /dev/vmmon not found ===
 
   
  +
scsi0.virtualDev = "pvscsi"
エラーの全文は:
 
   
  +
==== 準仮想ネットワークアダプター ====
Could not open /dev/vmmon: No such file or directory.
 
Please make sure that the kernel module `vmmon' is loaded.
 
   
  +
VMware では、ゲスト OS 用に [https://kb.vmware.com/kb/1001805 複数のネットワークアダプター] を提供しています。通常、使用されるデフォルトのアダプターは {{ic|e1000}} アダプターで、Intel 82545EM ギガビット イーサネット NIC をエミュレートします。この Intel アダプターは、Arch を含むほとんどのオペレーティング システムの組み込みドライバーと一般的に互換性があります。
これは {{Ic|vmmon}} VMware サービスが動作していないことを意味しています。[[#Systemd サービス]]の [[systemd]] サービスを使っている場合は(再)起動してください。
 
   
  +
[http://rickardnobel.se/vmxnet3-vs-e1000e-and-e1000-part-1/ より多くのパフォーマンスと追加機能] (マルチキューサポートなど) については、VMware ネイティブ {{ic|vmxnet3}} ネットワークアダプターを使用できます。
=== Kernel headers for version 4.x-xxxx were not found. If you installed them[...] ===
 
   
  +
Arch には、デフォルトのインストールで利用可能な {{ic|vmxnet3}} カーネルモジュールがあります。[[mkinitcpio]] で有効にしたら (または自動検出された場合は、{{ic|lsmod {{!}} grep vmxnet3}} を実行してロードされているかどうかを確認します)、シャットダウンしてネットワークアダプターの種類を変更します。''.vmx'' ファイルを次のように変更します。
ヘッダーをインストールしてください ({{Pkg|linux-headers}})。
 
   
  +
ethernet0.virtualDev = "vmxnet3"
{{Note|カーネルやヘッダーをアップグレードしたら、ヘッダーのバージョンを合わせるために新しいカーネルで起動する必要があります。比較的よくあるエラーです。}}
 
   
  +
ネットワークアダプターを変更した後、新しいアダプタ名と MAC アドレスを使用するには、ネットワークと [[dhcpcd]] 設定を更新する必要があります。
=== USB デバイスが認識されない ===
 
   
  +
# dhcpcd ''new_interface_name''
{{Tip|{{AUR|vmware-patch}} でも対処できます。}}
 
  +
# systemctl enable dhcpcd@''new_interface_name''.service
   
  +
{{ic|ip link}} を実行すると、新しいインターフェイス名を取得できます。
[[#systemd サービス|systemd サービス]]を使ってサービスを自動的に管理しない場合、毎回手動で root を使って {{ic|vmware-usbarbitrator}} バイナリを起動する必要があります。
 
   
  +
==== 仮想マシンの設定 ====
起動するには:
 
   
  +
これらの設定は、より多くのホストメモリを使用することを犠牲にして、ディスク I/O を減らすことによって仮想マシンの応答性を改善するのに役立ちます。 [https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1008885 VMware の KB1008885] は、次の最適化を提供します。
# vmware-usbarbitrator
 
   
  +
mainMem.useNamedFile = "FALSE"
停止するには:
 
  +
MemTrimRate = "0"
  +
prefvmx.useRecommendedLockedMemSize = "TRUE"
  +
MemAllowAutoScaleDown = "FALSE"
  +
sched.mem.pshare.enable = "FALSE"
   
  +
* '''mainMem.useNamedFile''': これは Windows ホストでのみ機能し、このパラメータは、仮想マシンのシャットダウン時にディスクアクティビティが高い場合に使用できます。これにより、VMware は ''.vmem'' ファイルを作成できなくなります。代わりに、Linux ホストでは''mainmem.backing = "swap"'' を使用してください。
# vmware-usbarbitrator --kill
 
  +
* '''MemTrimRate''': この設定により、ゲストによって解放されたメモリがホストでも解放されるのを防ぎます。
  +
* '''prefvmx.useRecommendedLockedMemSize''': 残念ながら、この設定に関する適切な説明はないようです。ホストシステムがゲストメモリの一部をスワップするのを妨げているようです。
  +
* '''MemAllowAutoScaleDown''': 十分なメモリを割り当てることができない場合、VMware が仮想マシンのメモリサイズを調整できないようにします。
  +
* '''sched.mem.pshare.enable''': 複数の仮想マシンが同時に実行されている場合、VMware は同一のページを見つけて仮想マシン間で共有しようとします。これは、非常に I/O 集中型になる可能性があります。
   
  +
次の設定は、VMware Workstation の構成ダイアログ (''編集 -> 設定... -> メモリ/優先度'') でも設定できます。
=== インストーラーが起動しない ===
 
   
  +
prefvmx.minVmMemPct = "100"
{{ic|.bundle}} を開くとプロンプトに戻ってしまう場合、おそらく VMware インストーラーの古いバージョンまたは壊れたバージョンが存在しています。削除してください (この記事の[[#アンインストール|アンインストール]]セクションも参照してください):
 
  +
mainMem.partialLazySave = "FALSE"
# rm -r /etc/vmware-installer/
 
  +
mainMem.partialLazyRestore = "FALSE"
   
  +
* '''prefvmx.minVmMemPct''': ホストシステム上の仮想マシンによって予約される RAM の量をパーセントで設定します。これを低い値に設定すると、ホストシステムで使用可能なメモリよりも多くのメモリを仮想マシンに割り当てることができます。ただし、この場合、ハードドライブの過剰使用につながる可能性が高いため、注意してください。ホストシステムに十分な RAM がある場合、この値は 100 のままにしておく必要があります。
=== ゲストで VMware Tools がダウンロードできない ===
 
  +
* '''mainMem.partialLazySave''' and '''mainMem.partialLazyRestore''': これら 2 つのパラメーターは、仮想マシンがサスペンド用の部分的なスナップショットを作成するのを防ぎます。これらのパラメータを使用すると、仮想マシンの一時停止にかかる時間がわずかに長くなりますが、この情報を保存しようとする VMware からのハードディスク アクティビティは少なくなるはずです。
   
  +
== トラブルシューティング ==
''root'' で {{ic|vmware}} や {{ic|vmplayer}} を実行してみるか、[http://softwareupdate.vmware.com/cds/vmw-desktop/ VMware リポジトリ] から直接ダウンロードしてください。
 
   
  +
=== Kernel headers for version 4.x-xxxx were not found. If you installed them[...] ===
"''application name'' / ''version'' / ''build ID'' / linux / packages/" まで移動して適切な Tools をダウンロードします。
 
   
  +
ヘッダーをインストールしてください ({{Pkg|linux-headers}})。
展開するには次を実行:
 
   
  +
{{Note|カーネルやヘッダーをアップグレードしたら、ヘッダーのバージョンを合わせるために新しいカーネルで起動する必要があります。比較的よくあるエラーです。}}
$ tar -xvf vmware-tools-''name''-''version''-''buildID''.x86_64.component.tar
 
   
  +
=== USB デバイスが認識されない ===
VMware インストーラーを使ってインストール:
 
   
  +
[[#systemd サービス|systemd サービス]]を使ってサービスを自動的に管理しない場合、毎回手動で root を使って {{ic|vmware-usbarbitrator}} バイナリを起動する必要があります。
# vmware-installer --install-component=''/path/''vmware-tools-''name''-''version''-''buildID''.x86_64.component
 
   
  +
起動するには:
上記で上手くいかない場合は {{AUR|ncurses5-compat-libs}} をインストールしてみてください。
 
  +
  +
# vmware-usbarbitrator
  +
  +
停止するには:
  +
  +
# vmware-usbarbitrator --kill
   
 
=== VMware にリモートでアクセスしようとすると Incorrect login/password エラー ===
 
=== VMware にリモートでアクセスしようとすると Incorrect login/password エラー ===
340行目: 389行目:
 
}}
 
}}
   
[[Advanced Linux Sound Architecture#ユーザースペースユーティリティ|OSS エミュレーション]]を使っている場合、無効化してください。
+
[[Advanced Linux Sound Architecture#OSS との互換性|OSS エミュレーション]]を使っている場合、無効化してください。
   
  +
=== カーネルベースの仮想マシン (KVM) が実行されている ===
=== Kernel-based Virtual Machine (KVM) is running ===
 
 
起動時に {{ic|KVM}} を無効にするために、以下のようなファイルを使うことができます:
 
起動時に {{ic|KVM}} を無効にするために、以下のようなファイルを使うことができます:
 
 
350行目: 399行目:
 
blacklist kvm-intel # For Intel CPUs
 
blacklist kvm-intel # For Intel CPUs
 
}}
 
}}
  +
  +
=== モジュールの問題 ===
  +
  +
==== /dev/vmmon not found ====
  +
  +
エラーの全文は:
  +
  +
Could not open /dev/vmmon: No such file or directory.
  +
Please make sure that the kernel module `vmmon' is loaded.
  +
  +
これは {{Ic|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
  +
  +
=== インストーラーが起動しない ===
  +
  +
{{ic|.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.
  +
  +
{{AUR|ncurses5-compat-libs}} をインストールするか、一時的に X に root でアクセスできるようにすることで解決します:
  +
  +
$ xhost +
  +
$ sudo ./<vmware filename>.bundle
  +
$ xhost -
  +
  +
=== ゲストで VMware Tools がダウンロードできない ===
  +
  +
ツールを手動でダウンロードするには [http://softwareupdate.vmware.com/cds/vmw-desktop/ 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
  +
  +
上記で上手くいかない場合は {{AUR|ncurses5-compat-libs}} をインストールしてみてください。
   
 
=== Intel のマイクロコードが古いせいで起動時にセグメンテーション違反が発生する ===
 
=== Intel のマイクロコードが古いせいで起動時にセグメンテーション違反が発生する ===
374行目: 481行目:
 
=== システムを再起動した後にゲストのネットワークが使えなくなる ===
 
=== システムを再起動した後にゲストのネットワークが使えなくなる ===
   
おそらく {{ic|vmnet}} モジュールがロードされていないのが原因です [http://www.linuxquestions.org/questions/slackware-14/could-not-connect-ethernet0-to-virtual-network-dev-vmnet8-796095/]。自動ロードする方法は [[#systemd サービス]]セクションを参照してください。
+
おそらく {{ic|vmnet}} モジュールがロードされていないのが原因です [https://www.linuxquestions.org/questions/slackware-14/could-not-connect-ethernet0-to-virtual-network-dev-vmnet8-796095/]。自動ロードする方法は [[#systemd サービス]]セクションを参照してください。
   
  +
=== Linux 4.9 でカーネルモジュールのビルドに失敗する ===
=== アップグレード後に GUI が表示されない ===
 
   
  +
VMware Workstation Pro 12.5.2 現在、コンパイルを通すにはモジュールのソースに修正が必要です [http://rglinuxtech.com/?p=1847]:
以下は 12.1.0 以前のバージョンの VMware Workstation や Player に影響します。カーネルを 4.2 にアップグレードした後、VMware で GUI アプリケーションが起動しなくなることがあります。これは LD ライブラリのパスが原因です。修正するには VMware を実行するターミナルで {{ic|LD_LIBRARY_PATH}} を設定してください:
 
$ export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libglibmm-2.4.so.1/:$LD_LIBRARY_PATH
 
 
VMware Workstation を実行するときだけ永続的に変更したい場合、実行ファイルの一番最初に以下の行を追加してください:
 
{{hc|/usr/bin/vmware|2=
 
export LD_LIBRARY_PATH=/usr/lib/vmware/lib/libglibmm-2.4.so.1
 
}}
 
VMware Player の場合は {{ic|/usr/bin/vmplayer}} を変更してください。
 
 
=== Linux 4.7 でカーネルモジュールのビルドに失敗する ===
 
 
VMware Workstation Pro 12.1 現在、コンパイルを通すにはモジュールのソースに修正が必要です [https://communities.vmware.com/thread/536705?start=0&tstart=0]:
 
   
 
# cd /usr/lib/vmware/modules/source
 
# cd /usr/lib/vmware/modules/source
 
# tar xf vmmon.tar
 
# tar xf vmmon.tar
 
# mv vmmon.tar vmmon.old.tar
 
# mv vmmon.tar vmmon.old.tar
# sed -i -e 's/get_user_pages/get_user_pages_remote/g' vmmon-only/linux/hostif.c
+
# sed -i 's/uvAddr, numPages, 0, 0/uvAddr, numPages, 0/g' vmmon-only/linux/hostif.c
 
# tar cf vmmon.tar vmmon-only
 
# tar cf vmmon.tar vmmon-only
 
# rm -r vmmon-only
 
# rm -r vmmon-only
400行目: 496行目:
 
# tar xf vmnet.tar
 
# tar xf vmnet.tar
 
# mv vmnet.tar vmnet.old.tar
 
# mv vmnet.tar vmnet.old.tar
# sed -i -e 's/get_user_pages/get_user_pages_remote/g' vmnet-only/userif.c
+
# sed -i 's/addr, 1, 1, 0/addr, 1, 0/g' vmnet-only/userif.c
# sed -i -e 's/dev->trans_start = jiffies/netif_trans_update\(dev\)/g' vmnet-only/netif.c
 
 
# tar cf vmnet.tar vmnet-only
 
# tar cf vmnet.tar vmnet-only
 
# rm -r vmnet-only
 
# rm -r vmnet-only
  +
  +
=== バージョン 12.5.4 から vmplayer/vmware の起動に失敗する ===
  +
  +
[https://bbs.archlinux.org/viewtopic.php?id=224667 フォーラムスレッド] によれば、{{ic|libpng}} パッケージをバージョン 1.6.28-1 にダウングレードすることで一時的に解決できます。ダウングレードしたら [[Pacman#アップグレードさせないパッケージを設定|/etc/pacman.conf]] の {{ic|IgnorePkg}} パラメータにパッケージを追加してください。
  +
  +
もしくは、以下のコマンドを実行することで 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 が起動できない ===
  +
  +
この問題は {{ic|/usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6}} で {{ic|CXXABI_1.3.8}} が抜けていることが原因です。
  +
  +
{{pkg|gcc-libs}} か {{pkg|gcc-libs-multilib}}{{Broken package link|置換パッケージ: {{Pkg|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 が起動しない ===
  +
  +
[https://bugs.mageia.org/show_bug.cgi?id=9739 Mageia] にバグが報告されていますが、Arch ではターミナルにエラーメッセージが表示されません。{{ic|/tmp/vmware-<id>}} のログを見ると {{ic|VMWARE_SHIPPED_LIBS_LIST is not set}}, {{ic|VMWARE_SYSTEM_LIBS_LIST is not set}}, {{ic|VMWARE_USE_SHIPPED_LIBS is not set}}, {{ic|VMWARE_USE_SYSTEM_LIBS is not set}} が確認できます。プロセスは {{ic|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 をアンインストールするには製品名が必要です ({{ic|vmware-workstation}} または {{ic|vmware-player}})。インストールされている製品を全て表示するには:
 
VMware をアンインストールするには製品名が必要です ({{ic|vmware-workstation}} または {{ic|vmware-player}})。インストールされている製品を全て表示するには:
  +
 
$ vmware-installer -l
 
$ vmware-installer -l
   
 
次のコマンドでアンインストールしてください ({{ic|--required}} で確認をスキップできます):
 
次のコマンドでアンインストールしてください ({{ic|--required}} で確認をスキップできます):
  +
 
# vmware-installer -u ''<product>'' --required
 
# vmware-installer -u ''<product>'' --required
  +
  +
{{Tip|{{ic|--console}} を使って、コンソールUIにします。}}
   
 
{{ic|vmware}} サービスを無効にして削除するのも忘れないで下さい:
 
{{ic|vmware}} サービスを無効にして削除するのも忘れないで下さい:

2023年1月30日 (月) 16:31時点における最新版

関連記事

この記事では最新バージョンの VMware である VMware Workstation Pro と Player 16, 15, 14, 12.5 を扱います。 ​ VMware に Arch Linux をインストールすることもできます。

目次

前提条件

1. マシンの BIOS/UEFI で仮想化を有効にする。

インストール

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

ノート: VMware は、バージョン 14 以降、初期の Intel Core i7 CPU を含む多くの CPU のサポートを終了しました。 ホストのプロセッサ要件を確認してください。 CPU が新しいリリースでサポートされていない場合は、vmware-workstation12 を使用できます。AUR

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

VMware Workstation のバージョン 16、15、14、12、11 に対応する vmware-workstationAUR, vmware-workstation15AUR, vmware-workstation14AUR, vmware-workstation12AUR または vmware-workstation11AUR をインストールします。また、linux-headerslinux-lts-headers など、インストールしたカーネルに適したヘッダーパッケージをインストールする必要があります。

次に、必要に応じて以下のサービスを有効にします:

  • vmware-networks.service ゲストネットワークへのアクセス
  • vmware-usbarbitrator.service USB デバイスへの接続
  • vmware-hostd.service 仮想マシンを共有するためのサービス(バージョン16以降は利用できません)

最後に、VMware モジュールをロードします:

# 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

ホストが一時停止/休止状態になる前に仮想マシンを一時停止する

実行可能ファイル /usr/lib/systemd/system-sleep/vmware_suspend_all.sh を作成します。

#! /bin/bash

set -eu

if [[ $# -ne 2 ]]; then
    echo "Usage: $0 <period> <action>"
    exit 1
fi

period=$1
action=$2

echo "vmware system-sleep hook argv: ${period} ${action}"

if ! command -v vmrun &>/dev/null; then
    echo "command not found: vmrun"
fi

if [[ "${period}" = "pre" ]]; then
    readarray -t vms < <(vmrun list | tail -n +2)

    echo "Number of running VMs: ${#vms[@]}"

    if [[ ${#vms[@]} -eq 0 ]]; then
        exit
    fi

    for vm in "${vms[@]}"; do
        echo -n "Suspending ${vm}... "
        vmrun suspend "${vm}"
        echo "done"
    done

    sleep 1
else
    echo "Nothing to do"
fi

参照 電源管理#/usr/lib/systemd/system-sleep のフック, suspend all virtual machines with vmrunSupport for hibernation

システム高速化のトリック

こちらを参照 パフォーマンスの最大化

transparent hugepages を無効にする

VM の実行中にゲストやホストが頻繁にフリーズすることに気付いた場合は、transparent hugepages を無効にすることをお勧めします。現在のセッションでそれらを無効にするには、(ホスト上で) 次を実行します。

# echo never > /sys/kernel/mm/transparent_hugepage/enabled

変更をブート後も永続化するには、カーネルパラメータ transparent_hugepage=never を追加します。

never の代わりに madvise を使用して、transparent hugepage 用に最適化されたアプリケーションがパフォーマンス上の利点を得られるようにすることもできます hugepages/ これは、上記と同じことを vmware に対して行います。

直接 RAM アクセスを保証する

デフォルトでは、VMware は実行中のゲストシステムの RAM をディスク上のファイルに書き込みます。予備のメモリが十分にあることが確実な場合は、VM の .vmx に以下を追加することで、ゲスト OS がそのメモリをホストの RAM に直接書き込むようにすることができます。

Virtual_machine_name.vmx
MemTrimRate = "0"
sched.mem.pshare.enable = "FALSE"
prefvmx.useRecommendedLockedMemSize = "TRUE"
mainmem.backing = "swap"

パフォーマンス向上のヒント

仮想マシンのパフォーマンスを向上させるには、次のヒントを試してください。

準仮想化 SCSI アダプター

VMware Paravirtual SCSI (PVSCSI) アダプター は、VMware ESXi 用の高性能ストレージアダプターであり、スループットが向上し、CPU 使用率が低下します。PVSCSI アダプターは、ハードウェアまたはアプリケーションが非常に大量の I/O スループットを駆動する環境に最適です。

SCSI アダプタータイプ VMware Paravirtual は、仮想マシンの設定で使用できます。

これらの設定が仮想マシンの構成に含まれていない場合でも、準仮想化 SCSI アダプターを有効にすることができます。mkinitcpio.conf を変更して、準仮想化 SCSI アダプターがカーネルイメージに含まれていることを確認します。

/etc/mkinitcpio.conf
...
MODULES=(... vmw_pvscsi)
...

[[mkinitcpio#イメージ作成とアクティベーション|initramfs を再生成します]

仮想マシンをシャットダウンし、SCSI アダプターを変更します。.vmx を次のように設定します。

scsi0.virtualDev = "pvscsi"

準仮想ネットワークアダプター

VMware では、ゲスト OS 用に 複数のネットワークアダプター を提供しています。通常、使用されるデフォルトのアダプターは e1000 アダプターで、Intel 82545EM ギガビット イーサネット NIC をエミュレートします。この Intel アダプターは、Arch を含むほとんどのオペレーティング システムの組み込みドライバーと一般的に互換性があります。

より多くのパフォーマンスと追加機能 (マルチキューサポートなど) については、VMware ネイティブ vmxnet3 ネットワークアダプターを使用できます。

Arch には、デフォルトのインストールで利用可能な vmxnet3 カーネルモジュールがあります。mkinitcpio で有効にしたら (または自動検出された場合は、lsmod | grep vmxnet3 を実行してロードされているかどうかを確認します)、シャットダウンしてネットワークアダプターの種類を変更します。.vmx ファイルを次のように変更します。

ethernet0.virtualDev = "vmxnet3"

ネットワークアダプターを変更した後、新しいアダプタ名と MAC アドレスを使用するには、ネットワークと dhcpcd 設定を更新する必要があります。

# dhcpcd new_interface_name
# systemctl enable dhcpcd@new_interface_name.service

ip link を実行すると、新しいインターフェイス名を取得できます。

仮想マシンの設定

これらの設定は、より多くのホストメモリを使用することを犠牲にして、ディスク I/O を減らすことによって仮想マシンの応答性を改善するのに役立ちます。 VMware の KB1008885 は、次の最適化を提供します。

mainMem.useNamedFile = "FALSE"
MemTrimRate = "0"
prefvmx.useRecommendedLockedMemSize = "TRUE"
MemAllowAutoScaleDown = "FALSE"
sched.mem.pshare.enable = "FALSE"
  • mainMem.useNamedFile: これは Windows ホストでのみ機能し、このパラメータは、仮想マシンのシャットダウン時にディスクアクティビティが高い場合に使用できます。これにより、VMware は .vmem ファイルを作成できなくなります。代わりに、Linux ホストではmainmem.backing = "swap" を使用してください。
  • MemTrimRate: この設定により、ゲストによって解放されたメモリがホストでも解放されるのを防ぎます。
  • prefvmx.useRecommendedLockedMemSize: 残念ながら、この設定に関する適切な説明はないようです。ホストシステムがゲストメモリの一部をスワップするのを妨げているようです。
  • MemAllowAutoScaleDown: 十分なメモリを割り当てることができない場合、VMware が仮想マシンのメモリサイズを調整できないようにします。
  • sched.mem.pshare.enable: 複数の仮想マシンが同時に実行されている場合、VMware は同一のページを見つけて仮想マシン間で共有しようとします。これは、非常に I/O 集中型になる可能性があります。

次の設定は、VMware Workstation の構成ダイアログ (編集 -> 設定... -> メモリ/優先度) でも設定できます。

prefvmx.minVmMemPct = "100"
mainMem.partialLazySave = "FALSE"
mainMem.partialLazyRestore = "FALSE"
  • prefvmx.minVmMemPct: ホストシステム上の仮想マシンによって予約される RAM の量をパーセントで設定します。これを低い値に設定すると、ホストシステムで使用可能なメモリよりも多くのメモリを仮想マシンに割り当てることができます。ただし、この場合、ハードドライブの過剰使用につながる可能性が高いため、注意してください。ホストシステムに十分な RAM がある場合、この値は 100 のままにしておく必要があります。
  • mainMem.partialLazySave and mainMem.partialLazyRestore: これら 2 つのパラメーターは、仮想マシンがサスペンド用の部分的なスナップショットを作成するのを防ぎます。これらのパラメータを使用すると、仮想マシンの一時停止にかかる時間がわずかに長くなりますが、この情報を保存しようとする VMware からのハードディスク アクティビティは少なくなるはずです。

トラブルシューティング

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

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

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

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

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

起動するには:

# vmware-usbarbitrator

停止するには:

# vmware-usbarbitrator --kill

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 エミュレーションを使っている場合、無効化してください。

カーネルベースの仮想マシン (KVM) が実行されている

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

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

モジュールの問題

/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

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

.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 をインストールしてみてください。

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
ヒント: --console を使って、コンソールUIにします。

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

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

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