VMware に Arch Linux をインストール
この記事では 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-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
- ログやデバッグ情報を仮想マシンのログファイルに記録する。
インストール
公式リポジトリから open-vm-tools を、AUR から open-vm-tools-dkmsAUR をインストールしてください。
Open-VM-Tools は /etc/arch-release
からバージョン情報を読み取りますが、空になっています:
# cat /proc/version > /etc/arch-release
vmtoolsd
サービスを起動し、必要ならばブート時にそれを有効にしてください:
# systemctl start vmtoolsd # systemctl enable vmtoolsd
公式 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
Xorg の設定
依存パッケージをインストールしてください: xf86-input-vmmouse, xf86-video-vmware, mesa-dri。
graphical target
で起動している場合ほとんど完了です。/etc/xdg/autostart/vmware-user.desktop
が実行されて、仮想マシンでする必要があることはほぼセットアップされます。
しかしながら、multi-user.target
で起動している場合、または通常とは異なるセットアップ (例: マルチモニタ) を使っている場合、vmtoolsd.service
を有効にする必要があります:
# systemctl enable vmtoolsd
Tips and tricks
ホストとの共有フォルダ
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
ドライバがロードされていなければなりません。以下の .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