open-vm-tools を CentOS 8 aarch64 でビルド&インストール

Share on:

Table of contents

はじめに

ESXi on Arm でゲストOSを実行する場合、ARM64 アーキテクチャ向けにビルドされた OS をインストールすることになります。現時点で殆どの Linux ディストリビューションでは ARM64 向けの open-vm-tools は公式リポジトリで配布されていないようです。このため、VMware 公式の GitHub リポジトリからソースを取ってきてビルド&インストールしたいと思います。

私の GitHub リポジトリに自動化した CentOS 8 向けのスクリプトを置いてあります。もし良ければこちらもどうぞ。

Jangari-nTK/ovt-installation-centos8-aarch64

Twitter で中の人が引用リツイートしてくれたのはちょっと嬉しかったです。

なお、ゲストが Raspberry Pi OS (旧 Raspbian) の場合は中の人が記事を書いてくれましたので、こちらを参照してもらえればと思います。

Installing VMware Tools on Raspberry Pi OS for ESXi-Arm

おおまかな流れ

open-vm-tools を一からビルドしてインストールする場合、大まかな流れとしては以下のようになります。

  1. CentOS 8 (aarch64) を仮想マシンにインストール。
  2. ビルドに必要な開発ツールのパッケージをインストール
  3. vmware/open-vm-tools の GitHub リポジトリをクローン。
  4. configure スクリプトを生成・実行して Makefile を生成。
  5. make でビルドして make install でインストール。
  6. systemd の Unit ファイルを作成して systemctl から有効化。
  7. Host Client から VMware Tools の状態を確認。

順番に見ていきます。

CentOS 8 (aarch64) を仮想マシンにインストール

基本的なインストール手順は一般的な x86_64 の CentOS インストール手順と同様、ISO イメージからインストーラをブートして Anaconda インストーラに沿って進めていけば問題ありません。

今回、ISO イメージは CentOS 公式サイトの Download の ARM64 (aarch64) から CentOS-8.2.2004-aarch64-dvd1.iso を使用、ソフトウェアはデフォルトで選択されている Server with GUI としてインストールしています。

なお、私の環境固有の問題なのか ESXi-Arm の不具合なのか何なのか全く切り分けていないのですが、CentOS 8 aarch64 のインストール後に OS をシャットダウンしたりスナップショットを取ると、既定のファイルシステムである xfs が確率で破損するという良く分からない事象に遭遇しました(Emergency mode から xfs_repair でも修復しきれなかった・・・)。

私の環境ではファイルシステムを ext4 としてインストールしたところ安定しましたが、もし同じような事象に見舞われた場合は別のファイルシステムでインストールしてみるなども試してみてください。

ビルドに必要な開発ツールのパッケージをインストール

open-vm-tools をビルドするには開発ツールが含まれるパッケージがいくつか必要になります。

CentOS 8 ではいくつかのパッケージが PowerTools リポジトリで提供されているため、yum の設定ファイルを編集して有効にします。

1# sed -i -e "s/enabled=0/enabled=1/g" /etc/yum.repos.d/CentOS-PowerTools.repo

その後、開発ツールのパッケージをインストールしていきます。

1# dnf group install -y "Development Tools"
2# dnf install -y glib2-devel.aarch64 libmspack-devel.aarch64 pam-devel.aarch64 openssl-devel.aarch64 \
3      xmlsec1-devel.aarch64 libxml2-devel.aarch64 libtirpc-devel.aarch64 rpcgen.aarch64 libtool-ltdl-devel
4# dnf install -y libX11-devel.aarch64 libXext-devel.aarch64 libXinerama-devel.aarch64 libXi libXi-devel \
5      libXrender-devel libXrandr-devel libXtst-devel gdk-pixbuf2-xlib-devel.aarch64 gtk3-devel.aarch64 \
6      gtkmm30-devel.aarch64

なお、CentOS 8 は既定の GUI が X11 でなく Wayland なので X11 周りのパッケージが必要かと言うと正直微妙ですが、後で X11 に切り替えた後にビルドし直すのも面倒なのでこれらも含めています。後に出てくる configure スクリプトに –without-x を付与して実行すると X11 周りのパッケージは不要になります。

vmware/open-vm-tools の GitHub リポジトリをクローン

open-vm-tools の GitHub リポジトリをクローンします。git をインストールして git clone するだけの簡単なお仕事です。

1# dnf install git
2# git clone https://github.com/vmware/open-vm-tools.git

configure スクリプトを生成・実行して Makefile を生成

autoreconf -i で configure スクリプトを生成、実行して Makefile を生成します。

1# cd open-vm-tools/open-vm-tools
2# autoreconf -i
3# ./configure

なお、autoreconf 実行時に -i を忘れるとファイルの不足でエラーになりますのでご注意ください。

make でビルドして make install でインストール

make して make install します。30分~1時間ほど時間がかかりますのでご注意ください。共有ライブラリもいくつか作成されるので ldconfig で認識させます。

1# make
2# make install
3# ldconfig

make 時に -j オプションをつけて複数のジョブを並列実行させても良いと思います。

systemd の Unit ファイルを作成して systemctl から有効化。

サービスとして起動できるように以下2点の systemd の Unit ファイルを作成します。

  • /usr/lib/systemd/system/vmtoolsd.service
  • /usr/lib/systemd/system/vgauthd.service

それぞれ中身は以下のようにしています。

 1[Unit]
 2Description=open-vm-tools: vmtoolsd service for virtual machines hosted on VMware
 3Documentation=http://github.com/vmware/open-vm-tools
 4#ConditionVirtualization=vmware
 5Requires=vgauthd.service
 6After=vgauthd.service
 7DefaultDependencies=no
 8Before=cloud-init-local.service
 9
10[Service]
11ExecStart=/usr/bin/vmtoolsd
12TimeoutStopSec=5
13
14[Install]
15WantedBy=multi-user.target
16Also=vgauthd.service
 1[Unit]
 2Description=open-vm-tools: vgauth service for virtual machines hosted on VMware
 3Documentation=http://github.com/vmware/open-vm-tools
 4#ConditionVirtualization=vmware
 5PartOf=vmtoolsd.service
 6
 7[Service]
 8ExecStart=/usr/bin/VGAuthService -s
 9TimeoutStopSec=5
10
11[Install]
12RequiredBy=vmtoolsd.service

Unit ファイルを作成したら、設定ファイルをリロードして systemctl enable/start で Unit を有効化&起動します。

1# systemctl daemon-reload
2# systemctl enable vgauthd.service
3# systemctl enable vmtoolsd.service
4# systemctl start vgauthd.service
5# systemctl start vmtoolsd.service

なお、ConditionVirtualization=vmware の行をコメントアウトしていますが、Unit ファイルを作成している時に「ESXi-Arm 上の Photon OS ゲストが VMware 仮想マシンとして認識されない」という情報が Twitter で流れてきました。もしかしたら将来的に ESXi-Arm 側で修正が入るかもしれないので(分かりませんが)、期待も込めて行の削除ではなくコメントアウトとしています。

Installing VMware Tools on Photon OS for ESXi-Arm

補足として vgauthd は以下の機能で使われます。滅多に使われない(と思っている)ので Unit ファイルを作らなくても良いは良いのですが、一般には open-vm-tools のインストールでこちらも Unit ファイルが作成されるので今回も作成しています。

ゲスト OS でのユーザー マッピングの構成

Host Client から VMware Tools の状態を確認

以上で open-vm-tools のビルド&インストールは終了です。最後に Host Client などの GUI から VMware Tools の実行状態を確認しましょう。open-vm-tools が正常に実行されていれば、VMware Tools のバージョンや実行状態、ゲストOSのネットワーク情報が取得できているはずです。

おわりに

今回は CentOS 8 aarch64 を対象として open-vm-tools をビルドしてインストールしました。必要なパッケージさえ提供されていれば、他の Linux ディストリビューションに関しても同じような感じでインストールできるのではないかと思いますので、ESXi on Arm をインストールした方は是非こちらも試してみてもらえればと思います。