Arch Linuxでopen-vm-toolsエラー

Arch LinuxのKernelを上げると、
open-vm-tools、open-vm-tools-modulesが
エラーで起動しなくなってしまいました。

Kernel・・・3.2.8-1-ARCH
open-vm-tools・・・2011.12.20-2
open-vm-tools-modules・・・2011.12.20-3

#uname -r
3.2.8-1-ARCH
#pacman -Ss open-vm-tools
community/open-vm-tools 2011.12.20-2 [installed]
    The Open Virtual Machine Tools (open-vm-tools) are the open source implementation of VMware
    Tools.
community/open-vm-tools-modules 2011.12.20-3 [installed]
    kernel modules for the open source implementation of VMware Tools

とりあえず、再インストールして起動してみます。

# packman -Syu open-vm-tools open-vm-tools-modules
#
# /etc/rc.d/open-vm-tools restart
:: Stopping Open Virtual Machine Tools [FAIL] 
:: Starting Open Virtual Machine Tools [BUSY] 
ERROR: could not insert 'vmsync': Exec format error
                                       [FAIL] 
#
# dmesg
[  130.338033] vmblock: disagrees about version of symbol module_layout
[ 2141.388555] vmci: disagrees about version of symbol module_layout
[ 2225.845851] vmsync: disagrees about version of symbol module_layout
[ 2526.868850] vmblock: disagrees about version of symbol module_layout

モジュールか起動スクリプトがオカシイみたいですね。

モジュール単体を読み込んでみます。

# insmod /lib/modules/extramodules-3.2-ARCH/vmhgfs.ko.gz 
  Error: could not insert module vmhgfs.ko.gz: Unknown symbol in module
#
# insmod /lib/modules/extramodules-3.2-ARCH/vmci.ko.gz 
  Error: could not insert module vmci.ko.gz: Unknown symbol in module
#
# insmod /lib/modules/extramodules-3.2-ARCH/vmsync.ko.gz 
  Error: could not insert module vmsync.ko.gz: Unknown symbol in module

ダメポですwどうやら、Open-vm-tools-modulesの再コンパイルが必要?
面倒なのでABSで再コンパイルします。


1)ABSで再コンパイル

ABSを使えるようにします

# pacman -Syu abs base-devel
# vim /etc/abs.conf

REPOS=(core extra community !testing !community-testing
       !staging !community-staging !gnome-unstable !kde-unstable)

「community」が必要です。

ソースファイルの同期をします。

# abs
# ls /var/abs/
community  core  extra  local  README

準備完了。

ここからはユーザで行います。

$ mkdir -p ~/abs
$ cp -r /var/abs/community/open-vm-tools-modules/ ~/abs/
$ cd ~/abs/open-vm-tools-modules/

依存関係でKernel-header等必要なので「-s」をつけて自動解決させます。
それなりに時間がかかります。

$ makepkg -s
==> Making package: open-vm-tools-modules 2011.12.20-1 (Thu Mar  1 16:43:44 JST 2012)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Missing Dependencies:


==> Tidying install...
  -> Purging unwanted files...
  -> Compressing man and info pages...
  -> Stripping unneeded symbols from binaries and libraries...
==> Creating package...
  -> Generating .PKGINFO file...
  -> Compressing package...
==> Finished making: open-vm-tools-modules-2011.12.20-3-x86_64.pkg.tar.xz (Thu Mar  1 16:45:12 JST 2012)

無事出来上がりました。

インストールしてみましょう。

#pacman -U open-vm-tools-modules-2011.12.20-3-x86_64.pkg.tar.xz 
loading packages...
warning: open-vm-tools-modules-2011.12.20-3 is up to date -- reinstalling
resolving dependencies...
looking for inter-conflicts...

Targets (1): open-vm-tools-modules-2011.12.20-3

Total Installed Size:   0.16 MiB
Net Upgrade Size:       0.02 MiB

Proceed with installation? [Y/n] y
(1/1) checking package integrity                          [###############################] 100%
(1/1) loading package files                               [###############################] 100%
(1/1) checking for file conflicts                         [###############################] 100%
(1/1) checking available disk space                       [###############################] 100%
(1/1) upgrading open-vm-tools-modules                     [###############################] 100%

微妙に容量が違います。。。

2)「vmblock」エラー対策

このまま起動すると、、、

#/etc/rc.d/open-vm-tools start
:: Stopping Open Virtual Machine Tools [FAIL] 
:: Starting Open Virtual Machine Tools [FAIL]

とエラーしてしまいます

CUIの場合は「no」にしておきます。
「vmblock」でエラーを吐いてしまいます。

#vi /etc/conf.d/open-vm-tools

# Enable support for Drag'n'Drop
VM_DRAG_AND_DROP="no"

(GUIでは「yes」でもいいのかしら。。。)

2)「vmhgfs」エラー対策

どうやら、フォルダ共有で使われる「vmhgfs」が使えない?みたいです。

#/etc/rc.d/open-vm-tools start
:: Starting Open Virtual Machine Tools [BUSY] 
ERROR: could not insert 'vmhgfs': Invalid argument
                                       [FAIL] 

起動スクリプトから「vmhgfs」を削除

・36行目
for m in vmhgfs vmsync; do
      ↓
for m in vmsync; do 

・63行目
for m in vmhgfs vmsync vmci; do
      ↓
for m in vmsync vmci; do

下記にように編集しましょう

#vi /etc/conf.d/open-vm-tools 

36     for m in vmsync; do
37         VMMOD=`grep -w $m /proc/modules`
38         [ -z "$VMMOD" ] && \
39                 { modprobe $m
40                 if [ $? -gt 0 ]; then
41                     stat_fail
42                     exit 1
43                 fi; }

63     for m in vmsync vmci; do
64         VMMOD=`grep -w $m /proc/modules`
65         [ ! -z "$VMMOD" ] && rmmod $m
66         if [ $? -gt 0 ]; then
67           stat_fail
68           exit 4
69         fi
70     done

さて起動してみましょう

#/etc/rc.d/open-vm-tools start
:: Starting Open Virtual Machine Tools [DONE]

起動出来ました。
ESXi上でゲストOSのIPアドレス等が取得できていることを確認します。

3)停止、再起動時のエラー対策

しかし停止、再起動すると

#/etc/rc.d/open-vm-tools stop
:: Stopping Open Virtual Machine Tools [DONE]
#
#/etc/rc.d/open-vm-tools restart
:: Stopping Open Virtual Machine Tools [FAIL] 
:: Starting Open Virtual Machine Tools [DONE] 

と、エラーしてしまいます。

起動スクリプトに「vmci」を追加
・36行目
for m in vmsync; do
      ↓
for m in vmsync vmci; do

下記にように編集しましょう

#vi /etc/conf.d/open-vm-tools 

36     for m in vmci vmsync; do
37         VMMOD=`grep -w $m /proc/modules`
38         [ -z "$VMMOD" ] && \
39                 { modprobe $m
40                 if [ $? -gt 0 ]; then
41                     stat_fail
42                     exit 1
43                 fi; }

見てわかるように、63行目の停止時にはrmmod vmciしてるけど、
36行目の起動時にはmodprobe vmciしてないのが原因です。

再度、再起動させてみます。

#/etc/rc.d/open-vm-tools restart
:: Stopping Open Virtual Machine Tools [FAIL] 
:: Starting Open Virtual Machine Tools [DONE]
#/etc/rc.d/open-vm-tools restart
:: Stopping Open Virtual Machine Tools [DONE] 
:: Starting Open Virtual Machine Tools [DONE]

一回目で「FAIL」しているのは、「vmci」が読み込まれていないのに
rmmodしているためです。

これでうまく動かすことが出来ました。

さすがに再コンパイルしなきゃならんとは
思わなかった。。。。

[tegaki]時間かかりました。。w[/tegaki]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください