# Installing Arch Linux in VMware (日本語)

概要 help replacing me
VMware で Archlinux をインストール: open-vm-tools と Xorg の設定
関連項目
VMware
Installing VMWare vCLI

この記事では VMware ESX, VMware Workstation/Fusion, VMware Player などの VMware ベースの仮想環境での Archlinux のインストールを扱います。

## VMware Tools vs Open-VM-Tools

Linux 用の VMware Tools は2つあります: 公式の VMware Tools と Open-VM-Tools。VMware Tools は Open-VM-Tools の安定版のスナップショットがベースです。Open-VM-Tools には実験的なコードや機能が含まれています。 公式の VMware Tools は Archlinux では利用できません。

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

## Open-VM-Tools モジュール

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

- vmblock: カーネルファイルシステムモジュール、VMware Workstation/Fusion でのホストシステムと仮想マシン間のドラッグアンドドロップを有効にします。
- vmhgfs: カーネルファイルシステムモジュール、VMware Workstation/Fusion でもホストシステムと仮想マシン間のファイル・ディレクトリ共有を有効にします。
- vmsync: 実験的なファイルシステム同期ドライバ、バックアップやスナップショットの作成時にファイルシステムの休止を有効にします。
- vmci: 仮想マシン通信インターフェイス (VMCI)、同じホストでの仮想マシン同士や仮想マシンとホスト間で高いパフォーマンスを発揮するインターフェイス。
- vsock: vmci の一部。
- vmxnet: 古い vmxnet ネットワークアダプター用のドライバ。

## Open-VM-Tools ユーティリティ

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

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

## Open-VM-Tools のインストール

[community] リポジトリから open-vm-tools と open-vm-tools-modules パッケージをインストールしてください。

    # pacman -S open-vm-tools open-vm-tools-modules

サービスを起動しブート時にそれを有効にする:

    # systemctl start vmtoolsd
    # systemctl enable vmtoolsd

open-vm-tools は空の /etc/arch-release ファイルを読み込みます:

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

## 公式の VMware Tools のインストール

インストーラを正しく動作させるために ifconfig(1) をインストール:

    # pacman -S net-tools

インストーラを正しく動作させるために Linux kernel headers をインストール:

    # pacman -S linux-headers
    # cd /lib/modules/$(uname -r)/build/include/linux
    # ln -sv ../generated/uapi/linux/version.h

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

    # for x in `seq 0 6`; do mkdir -pv /etc/init.d/rc$x.d; done

必要に応じて VMware Tools 仮想 CDROM をマウント:

    # mount /dev/cdrom /mnt

tarball を展開:

    # cd /root
    # tar zxf /mnt/VMwareTools*.tar.gz
    # cd vmware-tools-distrib

インストーラを起動して全ての質問に対してデフォルトで答える:

     # ./vmware-install.pl

以下のビルドの失敗は無視しても大丈夫です:

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

コンピュータを再起動:

    # systemctl reboot

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

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

## 時刻同期

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

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

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

時刻ソースとしてホストを使うには (例: ESX サーバー)、次のコマンドを実行して下さい (一回で十分です):

    vmware-toolbox-cmd timesync enable

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

    sudo hwclock --hctosys --localtime

I run the above command every time I wake up my sleeping laptop and resume using Arch Linux inside the VMWare Player.

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

NTP を見て下さい。

## Xorg の設定

Note: 仮想マシンで Xorg を使うには、最低でも 32MB の VGA メモリが必要で、VMware ハードウェアバージョンは8以上でなくてはなりません、バージョン7では正しく動作しません。

以下の依存パッケージをインストール:

    pacman -S xf86-input-vmmouse xf86-video-vmware svga-dri

`vmwgfx` モジュールをブート時にロードするよう設定してください。

以下のファイルを作成:

    /etc/X11/xorg.conf.d/20-gpudriver.conf

     Section "Device"
            Identifier "Card0"
            Driver     "vmware"
     EndSection

その後、再起動が必要です。

グラフィカルターゲットでブートできた場合はOKです。`/etc/xdg/autostart/vmware-user.desktop` が実行され仮想マシンで動作するのに必要なほとんどのものをセットアップします。

multi-user.target でブートしたときは vmtoolsd.service を有効にする必要があります:

    # systemctl enable vmtoolsd.service

### 3D アクセラレーションの有効化

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

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

準仮想化 SCSI アダプターはオーバーヘッドが少ないので ESX で大きなパフォーマンスブーストを得られます。

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

    MODULES=(...vmw_pvscsi...)

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

    mkinitcpio -p linux

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

## VMCI

VMware Workstation と Fusion ではデフォルトで VMCI インターフェイスが有効にされています。VMware ESX ではこのインターフェイスには制限があり、通信は ESX と仮想マシンの間でだけ可能です。これは Virtual Machine 設定で変えられますが、ESX と仮想マシン間のトラフィックは無効にできません。

## ドラッグアンドドロップ

VMware Workstation/Fusion から仮想マシンへのファイルのドラッグアンドドロップを無効にするには `/etc/conf.d/open-vm-tools` を編集します:

    VM_DRAG_AND_DROP="no"

## コピーアンドペースト

以下のパッケージをインストールして下さい (コピーペーストに必要ですがここで報告されているように依存ライブラリではありません)

    pacman -S gtkmm

X を起動した後に以下のコマンドを実行して (もしくは `~/.xinitrc` ファイルに追加して) 自動でホストと X クリップボードを同期するようにします。これで仮想マシンで文章をコピーしてホストでペーストでき、逆もまた同様です。

    vmware-user-suid-wrapper

次のエラーが表示される場合 (稀ですが、`strace vmware-user-suid-wrapper` を実行しないとメッセージが見れないことがあります！)

    vmware-user: could not open /proc/fs/vmblock/dev

カーネルに vmblock モジュールを挿入する必要があります。

    sudo modprobe vmblock

ブート時にモジュールをロードするには Kernel modules (日本語)#ロード を見て下さい。

### vmblock モジュールの再ビルド

vmware-user-suid-wrapper が動作せず、カーネルが vmblock モジュールをロードしている場合、

    lsmod | grep vmblock

Arch Build System で open-vm-tools-modules パッケージをビルドする必要があります:

    sudo abs community/open-vm-tools-modules
    cp -R /var/abs/community/open-vm-tools-modules/ .
    cd ./open-vm-tools-modules/
    makepkg -s
    pacman -U open-vm-tools-modules-*.xz

その後、新しくビルド・再インストールしたモジュールを適用するためにマシンを再起動してください！

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

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

VMware Workstation のメニューから `VM` -> `Settings...` を選択して新しい共有フォルダを作成してください。`Options` タブを選んでから `Shared Folder` を選びます。`Always enabled` オプションを有効にして新しい共有を作成してください。Windows XP では、ホストパス `C:\` で `C` という名前の共有を作成できます。

`/etc/fstab` に共有フォルダそれぞれの （uid/gid は必要な場所に修正してください） 以下のルールを追加してください:

    .host:/shared_folder /mnt/shared vmhgfs defaults,user,ttl=5,uid=root,gid=root,fmask=0133,dmask=0022 0 0

マウントディレクトリと共有フォルダを作成:

    mkdir /mnt/shared
    mount /mnt/shared

一時マウントも使えます:

    mount -t -v -o rw .host:/shared_folder /mnt/shared

Note: an alternative way, tested on VMware player

    .host:/ /mnt/shared vmhgfs defaults 0 0
    mount -t vmhgfs .host:/ /mnt/shared

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

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

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

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

    [Mount]
    What=.host:/
    Where=/mnt/hgfs
    Type=vmhgfs
    Options=defaults,noatime

    [Install]
    WantedBy=multi-user.target

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

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

    [Automount]
    Where=/mnt/hgfs

    [Install]
    WantedBy=multi-user.target

'/mnt/hgfs フォルダを作っておいてください:

     # mkdir -p /mnt/hgfs

マウントターゲットを有効に:

     # systemctl enable mnt-hgfs.automount

### mlocate DB の剪定

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

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

### マウスがうまく動かない

マウスクリックがプログラムによって上手く認識されないときは次を試して下さい: /etc/X11/xorg.conf.d/10-evdev.conf を編集して evdev pointer catchall のセクションをコメントアウト [xf86-input-vmmouse does not work expected]

### ネットワーク接続が繋がらない

次の行を .vmx ファイルに追加:

     ethernet0.virtualDev = "vmxnet3"

ネットワークアダプタータイプに関する詳しい情報は次のページにあります: Choosing a network adapter for your virtual machine

Categories:

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