# VMware (日本語)

関連記事

- VMware に Arch Linux をインストール
- VirtualBox
- KVM
- QEMU
- Xen
- 既存のインストールを仮想マシンに移動する

この記事は Arch Linux における VMware のインストールについての記事です。VMware に Arch Linux をインストールするのは別の記事になっています。

Note: この記事では最新のメジャーな VMware バージョン、VMware Workstation 10 と VMware Player (Plus) 6 だけをサポートしています。

## インストール

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

- fuse - `vmware-vmblock-fuse` サービスが `vmblock` モジュールよりも優先されるので、カーネルで fuse を無効にしない限りビルドされません
- gtkmm - GUI 用
- linux-headers - モジュールコンパイル用

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

3. インストールを開始してください (`--eulas-agreed` で EULA をスキップできます):

    # sh VMware-<edition>-<version>.<release>.<architecture>.bundle --eulas-agreed

Tip: その他の有用なフラグ:

- `--console` - コンソール UI を使います。
- `-I`, `--ignore-errors` - 致命的なエラーを無視します。

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

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

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

## 設定

Tip: このセクションで行うことを自動化する vmware-patch というパッケージが AUR には存在します (古い VMware バージョンもサポートしています)。

### VMware モジュールパッチとインストール

VMware Workstation 10.0.2 と Player (Plus) 6.0.2 は 3.13 までのカーネルをサポートしています。

#### 3.14 カーネル

3.14 カーネルでは `vmci` と `vsock` モジュールのビルドは失敗します。

パッチ（ワーニングフィックスも含まれています）は ここ から入手できます:

    $ curl http://pastie.org/pastes/9090538/download -o /tmp/vmware-3.14.patch

モジュールのソースを展開する:

    $ cd /usr/lib/vmware/modules/source
    # for i in vmci vmmon vmnet vsock; do tar -xf $i.tar; done

パッチを適用する:

    # patch -p0 -i /tmp/vmware-3.14.patch

アーカイブを再作成する:

    # for i in *-only; do tar -cf ${i/-only}.tar $i; done

残ったゴミを削除する:

    # rm -r *-only

モジュールを再生成する:

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

Note: `Tar` は複数の操作 をサポートしていないため、`for` ループを使っています。

### init.d スクリプト

5. `Virtual machine communication interface` (vmci) と `VM communication interface socket family` (vsock) サービスは、メインの init.d スクリプトがカーネル内のドライバーの包含を上手く扱えないために、起動時に失敗することが知られています。

VMware のドライバーを指定することで修正できます:

    # sed -i 's/mod=$(vmwareRealModName $vmci $vmci_alias)/mod=vmci/' /etc/init.d/vmware
    # sed -i 's/mod=$(vmwareRealModName $vsock $vsock_alias)/mod=vsock/' /etc/init.d/vmware

### Systemd サービス

6. (任意) `# /etc/init.d/vmware {start|stop|status|restart}` を使うかわりにサービスを直接管理するために `.service` ファイルを作成することができます (または ファイル):

    /etc/systemd/system/vmware.service

    [Unit]
    Description=VMware daemon

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

    [Install]
    WantedBy=multi-user.target

作成したら、次を実行して起動時に有効にすることが可能です:

    # systemctl enable vmware

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

VMware Workstation を開くには:

    $ vmware

VMware Player (Plus) の場合:

    $ vmplayer

## Tips and tricks

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

#### ターミナルから

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

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

Note: The `-debug` binary informs the user of an incorrect license.

#### 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

#### 改造 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"

### DKMS を使ってモジュールを管理する

Dynamic Kernel Module Support (DKMS) を使って Workstation のモジュールを管理することができ、カーネルを変更する度に `vmware-modconfig` を再実行するのを避けることができます。以下の例ではカスタムした `Makefile` を使って `vmware-modconfig` によりモジュールをコンパイル・インストールします。その後モジュールはカーネルツリーから削除されます。

#### 準備

まず公式リポジトリから dkms をインストールしてください。

それから `Makefile` と `dkms.conf` のソースディレクトリを作成してください:

    # mkdir /usr/src/vmware-modules-10/

#### ビルド設定

git を使うか下の方法でファイルを取得してください。

##### 1) Git を使う

    $ cd /tmp
    $ git clone git://github.com/bawaaaaah/dkms-workstation.git
    $ sed -i 's/9/10/' dkms-workstation/dkms.conf
    # cp dkms-workstation/Makefile dkms-workstation/dkms.conf /usr/src/vmware-modules-10/

##### 2) 手動設定

`dkms.conf` にはモジュールの名前とコンパイル・インストールの手順を記述します。`AUTOINSTALL="yes"` で自動的に毎回モジュールが再コンパイル・インストールされるようになります:

    /usr/src/vmware-modules-10/dkms.conf

    PACKAGE_NAME="vmware-modules"
    PACKAGE_VERSION="10"

    MAKE[0]="make all"
    CLEAN="make clean"

    BUILT_MODULE_NAME[0]="vmmon"
    BUILT_MODULE_LOCATION[0]="modules"

    BUILT_MODULE_NAME[1]="vmnet"
    BUILT_MODULE_LOCATION[1]="modules"

    BUILT_MODULE_NAME[2]="vmblock"
    BUILT_MODULE_LOCATION[2]="modules"

    BUILT_MODULE_NAME[3]="vmci"
    BUILT_MODULE_LOCATION[3]="modules"

    BUILT_MODULE_NAME[4]="vsock"
    BUILT_MODULE_LOCATION[4]="modules"

    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"

そして `Makefile`:

    /usr/src/vmware-modules-10/Makefile

    KERNEL := $(KERNELRELEASE)
    HEADERS := /usr/lib/modules/$(KERNEL)/build/include
    GCC := $(shell vmware-modconfig --console --get-gcc)
    DEST := /lib/modules/$(KERNEL)/vmware

    TARGETS := vmmon vmnet vmblock vmci vsock

    LOCAL_MODULES := $(addsuffix .ko, $(TARGETS))

    all: $(LOCAL_MODULES)
    	mkdir -p modules/
    	mv *.ko modules/
    	rm -rf $(DEST)
    	depmod

    $(HEADERS)/linux/version.h:
    	ln -s $(HEADERS)/generated/uapi/linux/version.h $(HEADERS)/linux/version.h

    %.ko: $(HEADERS)/linux/version.h
    	vmware-modconfig --console --build-mod -k $(KERNEL) $* $(GCC) $(HEADERS) vmware/
    	cp -f $(DEST)/$@ .

    clean: rm -rf modules/

#### インストール

モジュールは次のコマンドでインストールできます:

    # dkms install vmware-modules/10 -k $(uname -r)

## トラブルシューティング

### /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 サービスが動作していないことを意味しています。手順6にある systemd サービスを使っている場合は（再）起動してください。

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

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

Note: Upgrading the kernel and the headers will require you to boot to the new kernel to match the version of the headers. This is a relatively common error.

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

Tip: vmware-patch でも対処できます。

VMware サービスが動作していると (systemd のサービスは手順6を見て下さい)、インストールで `vmware-USBArbitrator` スクリプトが消失します。フォーラムへのこの投稿を見て手動で追加してください。

また、手動で VMware バンドルを展開して `<destination folder>/vmware-usbarbitrator/etc/init.d/` から `/etc/init.d/` に `vmware-USBArbitrator` スクリプトをコピーすることも可能です:

    $ sh VMware-<edition>-<version>.<release>.<architecture>.bundle --extract /tmp/vmware-bundle/
    # cp /tmp/vmware-bundle/vmware-usbarbitrator/etc/init.d/vmware-USBArbitrator /etc/init.d/

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

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

    # rm -r /etc/vmware-installer/

### Incorrect login/password when trying to access VMware remotely

VMware Workstation 10 provides the possibility to remotely manage Shared VMs through the `vmware-workstation-server` service. However, this will fail with the error `"incorrect username/password"` due to incorrect PAM configuration of the `vmware-authd` service. To fix it, edit `/etc/pam.d/vmware-authd` like this:

    /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

and restart the `vmware` systemd service.

Now you can connect to the server with the credentials provided during the installation.

Note: libxslt may be required for starting virtual machines.

### ALSA 出力の問題

The following instructions from Bankim Bhavsar's wiki show how to manually adjust the ALSA output device in a VMware `.vmx`. This might help with quality issues or with enabling proper HD audio output:

1. Run `aplay -L`
2. If interested in playing 5.1 surround sound from the guest, look for `surround51:CARD=<vendor-name>,DEV=<num>`. If experiencing quality issues, look for a line starting with `front:`.
3. Open the `<Virtual machine name>.vmx` config file of the VM in a text editor, located under `~/vmware/<Virtual machine name>/`, and edit the `sound.fileName` field, e.g.: `sound.fileName="surround51:CARD=Live,DEV=0"`. Ensure that it also reads `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

## アンインストール

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

    $ vmware-installer -l

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

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

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

    # systemctl disable vmware
    # rm /etc/systemd/system/vmware.service

You may also want to have a look at the module directories in `/usr/lib/modules/<kernel name>/misc/` for any leftovers.

Category:

- Virtualization (日本語)