VMware に Arch Linux をインストール

提供: ArchWiki
移動先: 案内検索

この記事では 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 のドライバー。
  • open-vm-tools 10.0 から fuse ベースの hgfs 実装が追加されており、カーネルのバージョン 4.0 からサポートされています。

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-dkmsAUR パッケージには以下のモジュールが含まれています:

  • 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 - ログやデバッグ情報を仮想マシンのログファイルに記録する。
  • vmhgfs-fuse - vmhgfs 共有フォルダをマウントするユーティリティ。

インストール

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

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

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

マルチユーザーターゲット

multi-user.target で起動する場合、以下の手順に従って下さい。graphical.target で起動する場合は graphical.target の方のセクションを見て下さい。

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

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

グラフィカルターゲット

グラフィカル環境を起動する場合、以下の手順に従って VMware ツールを有効化してください。

vmware-vmblock-fuse.service Systemd サービスを有効化してください。

open-vm-tools-dkmsAUR をインストールした場合は dkms.service Systemd サービスを有効化してください。カーネルのアップデート後に自動的にカーネルモジュールがリコンパイルされます。

ウィンドウのリサイズで解像度を更新

X の中から /usr/bin/vmware-user-suid-wrapper起動 してください。

公式 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!"
  • Fuse components not found on the system.

vmware-vmblock-fuse systemd サービスを有効化:

# abs community/open-vm-tools
# cp /var/abs/community/open-vm-tools/vmware-* /usr/lib/systemd/system
# systemctl enable vmware-vmblock-fuse.service

仮想マシンを再起動:

# systemctl reboot

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

# /etc/init.d/rc6.d/K99vmware-tools start
ヒント: GitHub にこの作業を自動化するプロジェクトが存在します。

Xorg の設定

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

依存パッケージをインストールしてください: xf86-input-vmmouse, xf86-video-vmware, mesa

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

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

# systemctl enable vmtoolsd

さらに、ドライバーをロードする権限を与えて下さい:

/etc/X11/Xwrapper.config
needs_root_rights=yes

Tips and tricks

vmhgfs-fuse ユーティリティによる共有フォルダ

ノート: この機能は VMware Workstation と Fusion かつ open-vm-tools v.10.x とカーネル 4.x 以上でしか使えません。

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

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

$ vmware-hgfsclient

確認できたらフォルダをマウントします:

# mkdir <shared folders root directory>
# vmhgfs-fuse -o allow_other -o auto_unmount .host:/<shared_folder> <shared folders root directory>

他の vmhgfs-fuse のマウントオプションは -h フラグを使えば確認できます:

# vmhgfs-fuse -h
Systemd

以下の .service を作成してください:

/etc/systemd/system/<shared folders root directory>-<shared_folder>.service
[Unit]
Description=Load VMware shared folders
Requires=vmware-vmblock-fuse.service
After=vmware-vmblock-fuse.service
ConditionPathExists=.host:/<shared_folder>
ConditionVirtualization=vmware

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=
ExecStart=/usr/bin/vmhgfs-fuse -o allow_other -o auto_unmount .host:/<shared_folder> <shared folders root directory>

[Install]
WantedBy=multi-user.target

<shared folders root directory> フォルダが存在することを確認してください。フォルダが存在しない場合は作成する必要があります:

# mkdir -p <shared folders root directory>

<shared folders root directory>-<shared_folder>.service マウントターゲットを有効化してください。

全ての共有フォルダを自動的にマウントしたい場合は <shared_folder> は省いてください。

vmhgfs モジュールによるレガシーな共有フォルダ

ノート: この機能は 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
ノート: フォルダをマウントする前に 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/updatedbPRUNEPATHS に追加してください。

3D アクセラレーション

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

OpenGL と GLSL のサポート

新しいカーネルモジュールで OpenGL と GLSL をアップデートすることで、Arch によるバージョンを上書きすることが可能です。

執筆時点で、OpenGL 3.3 と GLSL 3.30 がサポートされています。詳しくは https://bbs.archlinux.org/viewtopic.php?id=202713 を見て下さい。

時刻同期

仮想マシンで時刻同期を設定することは重要です。複数の仮想マシンによって 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。警告が表示されても無視してかまいません。

トラブルシューティング

マウスの問題

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

  • カーソルをウィンドウに載せた時に自動グラブ機能が動作しない
  • 入力にラグが発生する
  • アプリケーションによってクリックが認識されない
  • 仮想マシンに入ったり出たりするときにマウスカーソルが飛ぶ
  • マウスの位置がゲスト VM のときの場所に飛ぶ

xf86-input-vmmouse パッケージを削除してみてください。マウスとキーボードの入力は xf86-input-vmmousexf86-input-libinput だけで扱えます。

以下の設定を .vmx 設定ファイルに追加してみてください (Mouse position jumps to where it left the guest VM):

~/vmware/<Virtual Machine name>/<Virtual Machine name>.vmx
mouse.vusb.enable = "TRUE"
mouse.vusb.useBasicMouse = "FALSE"
usb.generic.allowHID = "TRUE"

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

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

/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

ドラッグアンドドロップとコピーアンドペースト

ログイン時に /etc/xdg/autostart/vmware-user.desktop によって vmware-user-suid-wrapper を起動しようとしても、gtkmm との関係によって失敗することがあります。FS#43159 を見て下さい。

Workstation 11 で共有 VM として実行するときの問題

Workstation 11 には Arch ゲストを共有 VM として動作させゲストで vmtoolsd が実行しているときに vmware-hostd がクラッシュするというバグが存在しています。バグを回避するための open-vm-tools のパッチが こちら にあります。

システムのアップグレード後に共有フォルダがマウントされない

open-vm-tools にのみ発生する問題です。vmhgfs モジュールは AUR の open-vm-tools-dkmsAUR に入っているため、pacman -Syu コマンドで自動的にアップデートされることはありません。システムのアップグレードをする前に手動で open-vm-tools-dkmsAUR をアップデートするようにしてください。

マウントされなくなったら、共有ファイルシステムの自動マウントを削除して、アップグレードをしてから mkinitcpio -p linux を実行する必要があります。