Installing Arch Linux in VMware (日本語) - ArchWiki

# Installing Arch Linux in VMware (日本語)

関連記事

- VMware
- Installing VMWare vCLI

この記事では Player (Plus), Fusion, Workstation などの VMware 製品での Arch Linux のインストールを扱います。

## カーネルドライバー

- `vmw_balloon` - 物理メモリ管理ドライバー。物理ページを回収して膨らむ"バルーン"のように働き、ゲストのページを予約して無効にすることでホストマシンのページを開放して他のゲストに割り当てられるようにします。縮小させることでゲストが使用できる物理メモリを増やすことも可能です。開放された仮想マシンのメモリはゲストを終了することなくホストで再利用することができます。
- `vmw_pvscsi` - VMware の Paravirtual SCSI (PVSCSI) HBA のドライバー。
- `vmw_vmci` - Virtual Machine Communication Interface。VMCI 仮想デバイスによるホストと仮想環境のゲスト間での高速通信を有効にします。
- `vsock` - Virtual Socket Protocol。TCP/IP ソケットプロトコルと似ていて、仮想マシンとハイパーバイザーまたはホスト間での通信ができるようにします。
- `vmw_vsock_vmci_transport` - 仮想ソケットの VMCI 転送の実装。
- `vmwgfx` - 3D アクセラレーションのためのドライバー。VMware SVGA2 仮想ハードウェアのための KMS 有効済み DRM ドライバーです。
- `vmxnet3` - VMware の vmxnet3 仮想イーサネット NIC のドライバー。

## VMware Tools vs Open-VM-Tools

2007年に、VMware は VMware Tools の大部分を Open-VM-Tools として LGPL でリリースしました。別途 Arch Linux 用の公式 Tools はありません。

当初は VMware Tools が、時間同期などの機能がある、ネットワークやストレージに最適のドライバを提供していました。しかし現在では、ネットワークや scsi アダプターが linux カーネルの一部になったことで、VMware Tools には追加機能や"古い" vmxnet アダプターのサポートだけが求められるようになりました。

## Open-VM-Tools

### モジュール

open-vm-tools-dkms パッケージには以下のモジュールが含まれています:

- `vmblock` - ファイルシステムドライバー。ホストシステムとゲストマシン間のドラッグアンドドロップを有効にします (`vmware-vmblock-fuse` ユーティリティが取って代わります)。
- `vmci` - 仮想マシン通信インターフェイス (VMCI)、同じホストでの仮想マシン同士や仮想マシンとホスト間で高いパフォーマンスを発揮するインターフェイス。
- `vmhgfs` - ファイルシステムドライバー。ホストシステムと仮想マシン間のファイル・ディレクトリ共有を有効にします。
- `vsock` - VMCI ソケット。
- `vmsync` - 実験的なファイルシステム同期ドライバ。バックアップやスナップショットの作成時にファイルシステムの静止を有効にします。
- `vmxnet` - 古い VMXNET ネットワークアダプター用のドライバ。

### ユーティリティ

open-vm-tools パッケージには以下のユーティリティが含まれています:

- `vmtoolsd` - 仮想マシンの状態レポートに反応するサービス。
- `vmware-checkvm` - 仮想マシン上でプログラムが起動しているか確認するツール。
- `vmware-toolbox-cmd` - 統計などのホストの仮想マシン情報を取得するツール。
- `vmware-user-suid-wrapper` - ホストと仮想マシン間でクリップボード共有（コピーペースト）を有効にするツール。
- `vmware-vmblock-fuse` - FUSE でホストと仮想マシン間のドラッグ&ドロップを有効にするユーティリティ。
- `vmware-xferlogs` - ログやデバッグ情報を仮想マシンのログファイルに記録する。

### インストール

公式リポジトリから open-vm-tools を、AUR から open-vm-tools-dkms をインストールしてください。

Open-VM-Tools は `/etc/arch-release` からバージョン情報を読み取りますが、空になっています:

    # cat /proc/version > /etc/arch-release

`vmtoolsd` サービスを起動し、必要ならばブート時にそれを有効にしてください:

    # systemctl start vmtoolsd
    # systemctl enable vmtoolsd

Note: `vmtoolsd` にはバグが存在し、サービスが正しくシャットダウンせずに60秒間ハングします。対処方法はフォーラムにあります。

## 公式 VMware Tools

### モジュール

- `vmblock` - ファイルシステムドライバー。ホストシステムとゲストマシン間のドラッグアンドドロップを有効にします (`vmware-vmblock-fuse` ユーティリティが取って代わります)。
- `vmci` - ホストとゲスト間のハイパフォーマンス通信インターフェイス。
- `vmmon` - 仮想マシンモニター。
- `vmnet` - ネットワークドライバー。
- `vsock` - VMCI ソケット。

### インストール (ゲストから)

依存パッケージをインストールしてください: base-devel (ビルド用), net-tools (インストーラが使用する `ifconfig` 用), linux-headers (カーネルヘッダー)。

インストーラを正しく動作させるために偽の init ディレクトリを作成:

    # for x in {0..6}; do mkdir -p /etc/init.d/rc$x.d; done

インストーラをマウント:

    # mount /dev/cdrom /mnt

(`/root` などに) 展開:

    # tar xf /mnt/VMwareTools*.tar.gz -C /root

起動:

    # perl /root/vmware-tools-distrib/vmware-install.pl

以下のビルドエラーは無視しても大丈夫です:

- VMNEXT 3 仮想ネットワークカード
- "Warning: This script could not find mkinitrd or update-initramfs and cannot remake the initrd file!"

仮想マシンを再起動:

    # systemctl reboot

ログインして VMware Tools を起動:

    # /etc/init.d/rc6.d/K99vmware-tools start

Tip: GitHub にこの作業を自動化するプロジェクトが存在します。

## Xorg の設定

Note: 仮想マシンで Xorg を使うには、最低でも 32MB の VGA メモリが必要です。

依存パッケージをインストールしてください: xf86-input-vmmouse, xf86-video-vmware, mesa-dri[broken link: replaced by mesa]。

`graphical target` で起動している場合ほとんど完了です。`/etc/xdg/autostart/vmware-user.desktop` が実行されて、仮想マシンでする必要があることはほぼセットアップされます。

しかしながら、`multi-user.target` で起動している場合、または通常とは異なるセットアップ (例: マルチモニタ) を使っている場合、`vmtoolsd.service` を有効にする必要があります:

    # systemctl enable vmtoolsd

## Tips and tricks

### ホストとの共有フォルダ

Note: この機能は VMware Workstation と Fusion でだけ使えます。

Edit virtual machine settings > Options > Shared Folders > Always enabled を選択して新しい共有を作成してください。

vmware-hgfsclient コマンドを実行することで共有フォルダを確認できるはずです:

    $ vmware-hgfsclient

`/etc/fstab` に共有フォルダのルールを追加してください:

    /etc/fstab

    .host:/<shared_folder> /home/user1/shares vmhgfs defaults 0 0

共有フォルダを作成・マウント:

    # mkdir /home/user1/shares
    # mount /home/user1/shares

一時的にマウントすることも可能です:

    # mount -t vmhgfs .host:/<shared_folder> /home/user1/shares

Note: フォルダをマウントする前に vmhgfs モジュールを Linux カーネルに追加していない場合 "Error: cannot mount filesystem: No such device" と表示されます。`modprobe vmhgfs` コマンドを実行することで一時的に解決することができますが、ブート時に自動的にロードされるようにするには、`mkinitcpio.conf` に vmhgfs モジュールを追加する必要があります。

#### 起動時に共有フォルダを有効にする

共有フォルダを動かすには `vmhgfs` ドライバがロードされていなければなりません。以下の `.service` を作成してください:

    /etc/systemd/system/mnt-hgfs.mount

    [Unit]
    Description=Load VMware shared folders
    ConditionPathExists=.host:/<shared_folder>
    ConditionVirtualization=vmware

    [Mount]
    What=.host:/<shared_folder>
    Where=/home/user1/shares
    Type=vmhgfs
    Options=defaults,noatime

    [Install]
    WantedBy=multi-user.target

    /etc/systemd/system/mnt-hgfs.automount

    [Unit]
    Description=Load VMware shared folders
    ConditionPathExists=.host:/<shared_folder>
    ConditionVirtualization=vmware

    [Automount]
    Where=/home/user1/shares

    [Install]
    WantedBy=multi-user.target

マウントターゲットを有効にしてください:

    # systemctl enable mnt-hgfs.automount

#### mlocate DB の剪定

mlocate を使うとき、`locate DB` で共有ディレクトリをインデックスするのは意味がありません。除去するディレクトリを `/etc/updatedb` の `PRUNEPATHS` に追加してください。

### 3D アクセラレーション

3D アクセラレーションを有効にするには Edit virtual machine settings -> Hardware -> Display から Accelerate 3D graphics のチェックボックスを有効にしてください

### 時刻同期

仮想マシンで時刻同期を設定することは重要です。複数の仮想マシンによって CPU が共有されることにより、物理的なホストに比べて仮想マシンでは時刻の変動が発生しやすいためです。

時刻同期を設定する方法は2つあります: ホストマシンをソースにするか外部のサーバをソースにするかです。

#### 時刻のソースとしてホストマシンを使う

時刻ソースとしてホストを使うには:

    # vmware-toolbox-cmd timesync enable

ホストマシンがスリープから復帰した後にゲストの時計を同期させるには:

    # hwclock --hctosys --localtime

#### 時刻のソースとして外部サーバを使う

NTP を見て下さい。

### 準仮想化 SCSI アダプター

VMware Paravirtual SCSI (PVSCSI) アダプター はオーバーヘッドが少なく大きなパフォーマンスブーストを得られる VMware ESXi のストレージアダプタです。

次の手順に従って下さい: `/etc/mkinitcpio.conf` ファイルを開き MODULES 行に以下を追加する:

    MODULES=(...vmw_pvscsi...)

その後、次のコマンドを実行:

    # mkinitcpio -p linux

仮想マシンをシャットダウンして scsi アダプタータイプを変更してください: `VMware Paravirtual`。警告が表示されても無視してかまいません。

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

### マウスの問題

マウスに関する以下の問題が発生することがあります:

- カーソルをウィンドウに載せた時に自動グラブ機能が動作しない
- 入力にラグが発生する
- アプリケーションによってクリックが認識されない

VMware は自動的にゲーム用にマウスを最適化します。問題が発生した場合、最適化を無効にするのを推奨します: Edit > Preferences > Input > Optimize mouse for games: Never

また、`10-evdev.conf` で `catchall` イベントを 無効 にする必要もあるかもしれません:

    /etc/X11/xorg.conf.d/10-evdev.conf

    #Section "InputClass"
    #        Identifier "evdev pointer catchall"
    #        MatchIsPointer "on"
    #        MatchDevicePath "/dev/input/event*"
    #        Driver "evdev"
    #EndSection

#### ボタンが機能しない

デフォルトで動作しない場合、`mouse.vusb.useBasicMouse = "FALSE"` を `.vmx` に追加することで全てのマウスボタンが動作するはずです。

    ~/vmware/<Virtual Machine name>/<Virtual Machine name>.vmx

    mouse.vusb.useBasicMouse = "FALSE"

### ブートの問題

#### 起動時間が遅い

VMWare のメモリ hot-add 機能が有効になっていると以下のエラーが起こることがあります。

- add_memory failed
- acpi_memory_enable_device() error

`mem.hotadd = "FALSE"` を `.vmx` に設定することでメモリ hot-add 機能を無効にできます。

    ~/vmware/<Virtual Machine name>/<Virtual Machine name>.vmx

    mem.hotadd = "FALSE"

#### シャットダウンや再起動がハングアップする

vmtoolsd サービスのタイムアウトを変更してください (デフォルトは90秒)。

    /etc/systemd/system/vmtoolsd.service.d/timeout.conf

    [Service]
    TimeoutStopSec=1

### 自動スケールの問題

システムサービスを有効にしても解像度が変更されず引き伸ばされる場合、`mkinitcpio.conf` にモジュールを追加する必要があります。

    /etc/mkinitcpio.conf

    MODULES="vsock vmw_vsock_vmci_transport vmw_balloon vmw_vmci vmwgfx"

忘れずに次を実行してください:

    # mkinitcpio -p linux

### GNOME3 のレンダリング問題

UI の一部が Clutter (検索、ドックなど) で消えないという再描写問題を修正するには、以下を編集する必要があります:

    /etc/environment

    CLUTTER_PAINT=disable-clipped-redraws:disable-culling

Categories:

- Getting and installing Arch (日本語)
- Virtualization (日本語)