FreeBSD10にVMwareToolsを適用する。

VMware ToolsってUnix系に限ってはX11使っていなければ関係ないよねと思っていたので、ゲストのFreeBSDには全く適用していなかったのですが(入れなくても何とも無いし)、某所で云々と言われたので、ちと適用してみました。

WindowsならToolsのISOイメージをマウントしてやればインストーラが起動するのですが、FreeBSDの場合はちと面倒。

当然のことながら以下の作業はrootで行います。

ちなみに、ネタバレするとESXi5.1.0 1312873の時点では、FreeBSD10へのVMware Toolsのインストールは失敗します。

前準備

先に必要となるcompat6xをportsから入れておきます。

[bash]
portinstall -f misc/compat6x
[/bash]

FreeBSD10風に行くなら

[bash]
pkg install misc/compat6x
[/bash]

VMware Toolsのマウント

WS000051

vSphere ClientからゲストにVMware ToolsのISOイメージをセット。

WS000053

VMware ToolsのISOイメージは「tools-isoimages」にあります。FreeBSD用はfreebsd.isoになります。

ゲスト側にVMware ToolsのISOイメージがセットできたら、今度はFreeBSD側でマウントしてあげます。

[bash]
mount -t cd9660 /dev/cd0 /mnt
[/bash]

これで/mntにVMware ToolsのISOイメージがマウントされます。

インストーラの展開

/mntに移動してVMware Toolsが入っているアーカイブファイルを作業するディレクトリにコピー。今回は/rootで作業する前提です。

[bash]
cd /mnt
cp vmware-freebsd-tools.tar.gz ~/.
cd
[/bash]

これで、/rootに「vmware-freebsd-tools.tar.gz」がコピーされました。次にアーカイブを展開します。

[bash]
tar pzxvf vmware-freebsd-tools.tar.gz
[/bash]

インストーラの実行

アーカイブの展開が終わると「vmware-tools-distrib」という名称でディレクトリが作成されます。移動してその中にある「vmware-install.pl」を実行します。

[bash]
cd vmware-tools-distrib
./vmware-install.pl
[/bash]

実行すると質問形式でインストールが進みます。設問は基本的にEnterの入力(デフォルト)でOKです。

Creating a new VMware Tools installer database using the tar4 format.

Installing VMware Tools.

In which directory do you want to install the binary files?
[/usr/local/bin]

In which directory do you want to install the startup script?
[/usr/local/etc/rc.d]

In which directory do you want to install the daemon files?
[/usr/local/sbin]

In which directory do you want to install the library files?
[/usr/local/lib/vmware-tools]

The path "/usr/local/lib/vmware-tools" does not exist currently. This program
is going to create it, including needed parent directories. Is this what you
want? [yes]

In which directory do you want to install the documentation files?
[/usr/local/share/doc/vmware-tools]

The path "/usr/local/share/doc/vmware-tools" does not exist currently. This
program is going to create it, including needed parent directories. Is this
what you want? [yes]

The installation of VMware Tools 9.0.5 build-1283433 for FreeBSD completed
successfully. You can decide to remove this software from your system at any
time by invoking the following command:
"/usr/local/bin/vmware-uninstall-tools.pl".

Before running VMware Tools for the first time, you need to configure it by
invoking the following command: "/usr/local/bin/vmware-config-tools.pl". Do you
want this program to invoke the command for you now? [yes]

Initializing...


Making sure services for VMware Tools are stopped.

Stopping VMware Tools services in the virtual machine:
   Guest operating system daemon:                                      done


The vmblock enables dragging or copying files between host and guest in a
Fusion or Workstation virtual environment.  Do you wish to enable this feature?
[no]

No X install found.

Starting VMware Tools services in the virtual machine:
   Switching to guest configuration:                                   done
   Guest memory manager:                                              failed
   Guest operating system daemon:                                      done
Unable to start services for VMware Tools

Execution aborted.

あれ失敗。

vmmemctlのインストール

Guest memory managerがfailedしているせいで実行がabortされています。

調べてみるとVMware Toolsのvmmemctlをインストールする必要がある模様。これまでの作業でVMware Tools関連のソースは「/usr/local/lib/vmware-tools」にインストールされていますので、そこからvmmemctlをビルドします。

[bash]
cd /usr/local/lib/vmware-tools/modules/source
cp vmmemctl.tar ~/.
cd
tar zxvf vmmemctl.tar
cd vmmemctl-only
make
[/bash]

これで「vmmemctl.ko」が作成されれば、再度インストーラを起動すれば良いはずなのですが

os.c:267:33: error: implicit declaration of function 'kmem_alloc' is invalid in
      C99 [-Werror,-Wimplicit-function-declaration]
   p->bitmap = (unsigned long *)kmem_alloc(kernel_map, p->size);
                                ^
os.c:267:33: note: did you mean 'kmem_malloc'?
@/vm/vm_extern.h:58:13: note: 'kmem_malloc' declared here
vm_offset_t kmem_malloc(struct vmem *, vm_size_t size, int flags);
            ^
os.c:267:16: error: cast to 'unsigned long *' from smaller integer type 'int'
      [-Werror,-Wint-to-pointer-cast]
   p->bitmap = (unsigned long *)kmem_alloc(kernel_map, p->size);
               ^
os.c:274:14: error: incompatible pointer types passing 'vm_map_t'
      (aka 'struct vm_map *') to parameter of type 'struct vmem *'
      [-Werror,-Wincompatible-pointer-types]
   kmem_free(kernel_map, (vm_offset_t)p->bitmap, p->size);
             ^~~~~~~~~~
@/vm/vm_extern.h:59:29: note: passing argument to parameter here
void kmem_free(struct vmem *, vm_offset_t, vm_size_t);
                            ^
3 errors generated.
*** Error code 1

Stop.
make: stopped in /root/vmmemctl-only

のような感じで失敗してしまいました。

さてどうしよう。

困った時のコミュニティという事で、vmware communitiyを見てみると「FreeBSD 10 – VMWare Tools compilation error」なんてのがあります。

曰く

  • open-vm-toolsを入れる
  • パッチを当てる

との事らしく。

パッチの方はvmlockの様だし、open-vm-toolsのコメントも「何も無いよりまし」なんてなっています(笑)。

open-vm-tools(Open Virtual Machine Tools)

詳しくは追っていませんが、配布元はOpen Virtual Machine Tools

VMware自体はナレッジベースで「open-vm-tools に対する VMware のサポートについて」触れています。

Open Virtual Machine Toolsをインストールする。

FreeBSDの場合「/usr/ports/emulators」にportsが2つ用意されています。

  • open-vm-tools
  • open-vm-tools-nox11

x11をインストールしていない環境では「open-vm-tools-nox11」をインストールすれば良いようです。

[bash]
pkg install open-vm-tools-nox11
[/bash]

或いは

[bash]
portinstall -f open-vm-tools-nox11
[/bash]

とやってインストール後、メッセージ通り「/etc/rc.conf」に

[bash]
vmware_guest_vmblock_enable="YES"
vmware_guest_vmhgfs_enable="YES"
vmware_guest_vmmemctl_enable="YES"
vmware_guest_vmxnet_enable="YES"
vmware_guestd_enable="YES"
[/bash]

を追加、FreeBSDを再起動させます。

宿題とか

基本的に

WS000054

こんな事ができるようにはなるのですが、何が変わったのかといわれると「?」なのです(笑)。

まぁ、この辺は追々調べるとして、最新版のVMware Toolsではどうなっているかですね。

最初に書いたとおり、ESXiのバージョンが少し古く、パッチも出ていますし、その中にToolsのアップデートもあったはず(この辺も跡で纏める予定)なので、ESXiのアップデート後にどうなるか。

後は、VMware Toolsはカーネルアップデート後は再度インストーラを叩く必要があるのですが、Open Virtual Machine Tools側がどういう扱いになるのかも調べないとですね。

コメント

タイトルとURLをコピーしました