「VMware」の版間の差分
細 (文字列「[[zh-CN:」を「[[zh-hans:」に置換) |
(→Performance tips: 翻訳) |
||
(7人の利用者による、間の36版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:ハイパーバイザ]] |
[[en:VMware]] |
[[en:VMware]] |
||
[[it:VMware]] |
[[it:VMware]] |
||
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.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| |
+ | {{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# |
+ | [[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}} モジュールがロードされていないのが原因です [ |
+ | おそらく {{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 |
+ | # 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 |
+ | # 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 前提条件
- 2 インストール
- 3 設定
- 4 アプリケーションを起動する
- 5 ヒントとテクニック
- 6 トラブルシューティング
- 6.1 Kernel headers for version 4.x-xxxx were not found. If you installed them[...]
- 6.2 USB デバイスが認識されない
- 6.3 VMware にリモートでアクセスしようとすると Incorrect login/password エラー
- 6.4 ALSA 出力の問題
- 6.5 カーネルベースの仮想マシン (KVM) が実行されている
- 6.6 モジュールの問題
- 6.7 インストーラーが起動しない
- 6.8 ゲストで VMware Tools がダウンロードできない
- 6.9 Intel のマイクロコードが古いせいで起動時にセグメンテーション違反が発生する
- 6.10 時刻がおかしくなったり "[...]timeTracker_user.c:234 bugNr=148722" というエラーで VMware が起動しない
- 6.11 システムを再起動した後にゲストのネットワークが使えなくなる
- 6.12 Linux 4.9 でカーネルモジュールのビルドに失敗する
- 6.13 バージョン 12.5.4 から vmplayer/vmware の起動に失敗する
- 6.14 バージョン 12.5.3 で vmplayer/vmware が起動できない
- 6.15 vmware 12 のプロセスが起動後にすぐ終了し、GUI が起動しない
- 6.16 カーネル 4.11 以上で vmware モジュールのビルドに失敗する
- 7 アンインストール
前提条件
1. マシンの BIOS/UEFI で仮想化を有効にする。
インストール
VMware Bundle または vmware-workstationAUR パッケージを使用してインストールします。 x86_64で VMware Workstation を使用する場合は、後者が優先されます。
VMware bundle
適切な依存パッケージをインストールしてください:
- fuse2 - vmware-vmblock-fuse 用
- gtkmm - GUI 用
- linux-headers - モジュールコンパイル用
- ncurses5-compat-libsAUR -
--console
インストーラーを動かすのに必要 - libcanberra - イベントサウンド用
- pcsclite
最新の VMware Workstation Pro または Player をダウンロードしてください (若しくは、可能であれば ベータ バージョン)。
インストールを開始してください:
# sh VMware-<edition>-<version>.<release>.<architecture>.bundle
System service scripts directory
には、 /etc/init.d
を使って下さい (デフォルト)。
Package build for x86_64
VMware Workstation のバージョン 16、15、14、12、11 に対応する vmware-workstationAUR, vmware-workstation15AUR, vmware-workstation14AUR, vmware-workstation12AUR または vmware-workstation11AUR をインストールします。また、linux-headers や linux-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
ファイルを使用することもできます (AUR の vmware-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
はあなたのライセンスキーに置き換えてください。
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 vmrun と Support 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
vmware
の systemd サービスを再起動してください。
これでインストールで作られた証明書を使ってサーバーにアクセスできるはずです。
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 SpeedStep や AMD 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.
システムを再起動した後にゲストのネットワークが使えなくなる
おそらく 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.conf の 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 が起動できない
この問題は /usr/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6
で CXXABI_1.3.8
が抜けていることが原因です。
gcc-libs か gcc-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/
のモジュールディレクトリにも何か残っていないか確認すると良いでしょう。