Installing Arch Linux in VMware (日本語)
| 概要 |
|---|
| VMware で Archlinux をインストール: open-vm-tools と Xorg の設定 |
| 関連項目 |
| VMware |
| Installing VMWare vCLI |
この記事では VMware ESX, VMware Workstation/Fusion, VMware Player などの VMware ベースの仮想環境での Archlinux のインストールを扱います。
Contents |
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-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 の設定
以下の依存パッケージをインストール:
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
その後、新しくビルド・再インストールしたモジュールを適用するためにマシンを再起動してください!
ホストとの共有フォルダ
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
.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