Ubuntu 側でアップデートすると度々動かなくなる。
で、 VMwareTools を再インストールしてもダメ。
ここで、VMwareToolsのインストール時のトラブルを報告したが、今回もアップデートに伴う問題の別件。
VMwareTools を入れ直してももうまくいかないので、注意深くログをみていたら以下のようなエラーが。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
Using kernel build system. make: Entering directory `/tmp/modconfig-0s8m4m/vmci-only' /usr/bin/make -C /lib/modules/3.2.0-77-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= modules make[1]: Entering directory `/usr/src/linux-headers-3.2.0-77-generic' CC [M] /tmp/modconfig-0s8m4m/vmci-only/linux/driver.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/linux/vmciKernelIf.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciContext.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciDatagram.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciDoorbell.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciDriver.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciEvent.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciHashtable.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciQPair.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciQueuePair.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciResource.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/common/vmciRoute.o CC [M] /tmp/modconfig-0s8m4m/vmci-only/driverLog.o LD [M] /tmp/modconfig-0s8m4m/vmci-only/vmci.o Building modules, stage 2. MODPOST 1 modules CC /tmp/modconfig-0s8m4m/vmci-only/vmci.mod.o LD [M] /tmp/modconfig-0s8m4m/vmci-only/vmci.ko make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-77-generic' /usr/bin/make -C $PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= postbuild make[1]: Entering directory `/tmp/modconfig-0s8m4m/vmci-only' make[1]: `postbuild' is up to date. make[1]: Leaving directory `/tmp/modconfig-0s8m4m/vmci-only' cp -f vmci.ko ./../vmci.o make: Leaving directory `/tmp/modconfig-0s8m4m/vmci-only' Using kernel build system. make: Entering directory `/tmp/modconfig-0s8m4m/vmhgfs-only' /usr/bin/make -C /lib/modules/3.2.0-77-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \ MODULEBUILDDIR= modules make[1]: Entering directory `/usr/src/linux-headers-3.2.0-77-generic' CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/backdoor.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/backdoorGcc64.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/bdhandler.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/cpName.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/cpNameLinux.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/cpNameLite.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/dentry.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/dir.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/file.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/filesystem.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/fsutil.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/hgfsBd.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/hgfsEscape.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/hgfsUtil.o CC [M] /tmp/modconfig-0s8m4m/vmhgfs-only/inode.o /tmp/modconfig-0s8m4m/vmhgfs-only/inode.c: In function ‘HgfsPermission’: /tmp/modconfig-0s8m4m/vmhgfs-only/inode.c:1978:34: error: ‘struct dentry’ has no member named ‘d_alias’ /tmp/modconfig-0s8m4m/vmhgfs-only/inode.c:1978:34: warning: initialization from incompatible pointer type [enabled by default] /tmp/modconfig-0s8m4m/vmhgfs-only/inode.c:1978:34: warning: (near initialization for ‘dentry’) [enabled by default] /tmp/modconfig-0s8m4m/vmhgfs-only/inode.c:1978:34: error: ‘struct dentry’ has no member named ‘d_alias’ make[2]: *** [/tmp/modconfig-0s8m4m/vmhgfs-only/inode.o] Error 1 make[1]: *** [_module_/tmp/modconfig-0s8m4m/vmhgfs-only] Error 2 make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-77-generic' make: *** [vmhgfs.ko] Error 2 make: Leaving directory `/tmp/modconfig-0s8m4m/vmhgfs-only' The filesystem driver (vmhgfs module) is used only for the shared folder feature. The rest of the software provided by VMware Tools is designed to work independently of this feature. If you wish to have the shared folders feature, you can install the driver by running vmware-config-tools.pl again after making sure that gcc, binutils, make and the kernel sources for your running kernel are installed on your machine. These packages are available on your distribution's installation CD. |
問題は、 ‘struct dentry’ has no member named ‘d_alias’ だ。
また、ヘッダファイルか。変数名の名前が変わったのだろう。
ヘッダファイルの場所を変えるなどいろいろ試したがダメで、以下のような記述を発見
ソースをいじって解決だ。
まず、VMwareToolsを展開したディレクトリから以下に移動
1 2 3 |
cd vmware-tools-distrib/lib/modules/source |
vmhgfs.tar を展開して移動
1 2 3 4 |
tar xvf ./vmhgfs.tar cd vmhgfs-only/ |
inode.c にある、d_alias を、d_u.d_alias に変更
1 2 3 |
chmod u+w ./inode.c |
で、先ほどのサイトにあるように、
1 2 3 |
vi ./inode.c |
で、開いて
:%s/d_alias/d_u.d_alias/ で変換するか。
sedで変換する。
1 2 3 |
sed -i -e "s/d_alias/d_u.d_alias/g" inode.c |
vmhgfs.tar を削除して、再び、vmhgfs.tar を作る
1 2 3 4 |
rm ./vmhgfs.tar tar cvf vmhgfs.tar ./vmhgfs-only |
そして、VMwareTools を再インストール して、エラーなく終わり、共有ができていることを確認する。