open-vm-tools を CentOS 8 aarch64 でビルド&インストール
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 で中の人が引用リツイートしてくれたのはちょっと嬉しかったです。
Awesome! Thanks for sharing script for installing VMware Tools for Arm on CentOS #ESXionARM https://t.co/D42peyNHuR
— William Lam (@lamw) October 11, 2020
なお、ゲストが Raspberry Pi OS (旧 Raspbian) の場合は中の人が記事を書いてくれましたので、こちらを参照してもらえればと思います。
Installing VMware Tools on Raspberry Pi OS for ESXi-Arm
おおまかな流れ
open-vm-tools を一からビルドしてインストールする場合、大まかな流れとしては以下のようになります。
- CentOS 8 (aarch64) を仮想マシンにインストール。
- ビルドに必要な開発ツールのパッケージをインストール
- vmware/open-vm-tools の GitHub リポジトリをクローン。
- configure スクリプトを生成・実行して Makefile を生成。
- make でビルドして make install でインストール。
- systemd の Unit ファイルを作成して systemctl から有効化。
- 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 ファイルが作成されるので今回も作成しています。
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 をインストールした方は是非こちらも試してみてもらえればと思います。