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のマウント
vSphere ClientからゲストにVMware ToolsのISOイメージをセット。
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を再起動させます。
宿題とか
基本的に
こんな事ができるようにはなるのですが、何が変わったのかといわれると「?」なのです(笑)。
まぁ、この辺は追々調べるとして、最新版のVMware Toolsではどうなっているかですね。
最初に書いたとおり、ESXiのバージョンが少し古く、パッチも出ていますし、その中にToolsのアップデートもあったはず(この辺も跡で纏める予定)なので、ESXiのアップデート後にどうなるか。
後は、VMware Toolsはカーネルアップデート後は再度インストーラを叩く必要があるのですが、Open Virtual Machine Tools側がどういう扱いになるのかも調べないとですね。
コメント