UbuntuをゲストOSにして、VMware Tools をインストールした際に発生するコンパイルエラーの解消方法について、以下にまとめておきます。なお、コンパイルエラーの原因は、ソース内で呼んでいるAPI関数の名称が変わったことが原因のようです。
- ESXi 4.0
- ゲストOS : Ubuntu 9.04 Desktop 日本語 Remix版
注意:以下の対応方法はソースファイルを修正しています。くれぐれも自己責任でお願いします。
(1) VMware Tools のアンインストール
sudo find / -name vmware-*
のようにすると、vmware-uninstall-tools.pl が見つかると思いますので、これを実行してアンインストールしてください。私の環境ですと、/usr/binにありました。
(2) アップデート
ここでやる必須の作業ではありませんが、念のためにアップデートをしておきます。
sudo apt-get update
sudo apt-get upgrade
なお、コンパイルにはgcc(Cコンパイラ)が必要ですが、このUbuntuでは最初から入っています。また、g++は不要なのでbuil-essentialパッケージはインストールしなくてもかまいません。
なお、いくつかのサイトの記事では、linux-header-xxxxxもinstallするように書かれていたのですが、 手元の環境のパッケージをSynapticで調べたところ、カーネルバージョンと一致するものが入っていたので、これのinstall も行ないませんでした。
(3) vSphere Client側で、Vmware Tools のインストールを選択します。
(4) 以下のコマンドを実行します
su - cd /tmp tar zxpf /cdrom/VMwareTools-4.0.0-171294.tar.gz cd vmware-tools-distrib/lib/modules/source tar xvf vmhgfs.tar cd vmhgfs-only
(5) vmhgfs-onlyディレクトリのpage.cファイルを編集します。今回のバージョンですと、pgae.cの867行目にエラーがあったので、viで開いて編集します。編集内容は、
page = __grab_cache_page(mapping, index);
の行を下記のように変更します。
page = grab_cache_page_write_begin(mapping, index, flags);
(6) 修正後のファイルを再度tarで固めます。cd ..; tar cvf vmhgfs.tar ./vmhgfs-only など
(7) 展開したディレクトリを削除しておきます。rm -rf vmhgfs-only など
(8) cd ../../../; ./vmware-install.pl
(9) 多分、修正したファイルが使われて正常にコンパイルが完了しているはずです。
ただ、機能が正常かどうかは、この機能そのものがESXiでサポートされていないため、確認できません。このため、本当にこれで正しいかどうかは不明です。
(参考にしたサイト)