在 Ubuntu Linux 内核更新到 3.13.0-46-generic 后,vmhgfs 模块无法为 VMware Tools 9.9.0 (Fusion7.1) 编译?

Eco*_*ter 12 vmware compiling kernel 14.04

在 Ubuntu Linux 内核更新到 3.13.0-46-generic(2015 年 2 月)(共享文件夹功能)后,vmhgfs 模块无法为 VMware Tools 9.9.0 (Fusion7.1) 和 VMware Tools 9.9.2(Fusion7.1.1 Build 2496486)编译的 VMware Tools 在 MacOSX Yosemite(主机)上的 Ubuntu 14.04 LTS(来宾)中不起作用??

您好社区和 VMware 开发人员团队,?

2015 年 2 月 13 日,我们失去了 Ubuntu 和 MacOSX 之间的共享文件夹功能。可能是将 Linux 内核更新为 3.13.0-46-generic 导致了这个问题(尽管 Linux 内核更新不会损坏 Ubuntu 中 VMware Tools 的现有编译 vmhgfs 模块!)。我们在 Ubuntu 14.04 LTS 和 MacOSX 上使用 VMware Fusion 7.0.0 一年,旧的 Linux 内核没有问题。我们使用 VMware Tools 9.9.2 更新到 VMware Fusion 7.1.0 和 Fusion7.1.1 Build 2496486,希望能修复版本中首先出现的共享文件夹功能问题。7.0.0。

我们可以假设编译的 vmhgfs 模块与新的 Linux 内核 3.13.0-46-generic 之间存在不兼容。

我们尝试重新安装 VMware 工具 9.9.0 和版本。9.9.2 但无法编译 vmhgfs 模块并且共享文件夹功能不起作用。所有其他 VMware 工具功能都运行良好。

在 Ubuntu 14.04 LTS 中,终端命令 lsmod | grep“虚拟机”。没有列出 vmhgfs 模块

在 vmhgfs 模块编译期间,在“/vmhgfs-only/”和“make[]:”附近有几个“错误”?

这是我们为您准备的终端期刊之一: ?

include/linux/compiler-gcc4.h:14:34: error: ‘struct dentry’ has no member named ‘d_alias’
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
                                  ^
include/linux/stddef.h:17:31: note: in expansion of macro ‘__compiler_offsetof’
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
                               ^
include/linux/kernel.h:794:29: note: in expansion of macro ‘offsetof’
  (type *)( (char *)__mptr - offsetof(type,member) );})
                             ^
include/linux/list.h:687:40: note: in expansion of macro ‘container_of’
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
                                        ^
include/linux/list.h:698:15: note: in expansion of macro ‘hlist_entry’
     ____ptr ? hlist_entry(____ptr, type, member) : NULL; \
               ^
include/linux/list.h:710:13: note: in expansion of macro ‘hlist_entry_safe’
       pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))
             ^
/tmp/modconfig-h4Zwi0/vmhgfs-only/inode.c:1920:7: note: in expansion of macro ‘hlist_for_each_entry’
       hlist_for_each_entry(dentry,
       ^
make[2]: *** [/tmp/modconfig-h4Zwi0/vmhgfs-only/inode.o] Error 1
make[1]: *** [_module_/tmp/modconfig-h4Zwi0/vmhgfs-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-46-generic'
make: *** [vmhgfs.ko] Error 2
make: Leaving directory `/tmp/modconfig-h4Zwi0/vmhgfs-only'
Run Code Online (Sandbox Code Playgroud)

?

并且 /mnt/hgfs 为空,但例如为 Mac 的“文档”目录启用了文件夹共享。如果我们在终端中运行 vmware-hgfsclient,我们会得到共享文件夹列表,但 /mnt/hgfs 是空的。?

你能修复 vmhgfs 模块和新的 Linux 内核 3.13.0-46-generic 之间的不兼容吗?

此致,

托尼?

小智 13

这些工具可以手动修补。在vmhgfs.tar中,inode.cd_alias必须改成d_u.d_alias,放回tar然后重新编译工具。

执行此操作的脚本(在 Windows 主机上的 32 位 ubuntu 14.04、vmware 工作站 11.1 上测试)在这里:

#!/bin/sh -x
cd /usr/lib/vmware-tools/modules/source
tar xf vmhgfs.tar
grep -q d_u.d_alias vmhgfs-only/inode.c && echo "already patched" && exit 0
sed -i -e s/d_alias/d_u.d_alias/ vmhgfs-only/inode.c
cp -p vmhgfs.tar vmhgfs.tar.orig
tar cf vmhgfs.tar vmhgfs-only
vmware-config-tools.pl -d -m
Run Code Online (Sandbox Code Playgroud)

注意:这使得这些工具与较旧的内核版本(即 3.13.0-45)不兼容。


小智 1

更新到内核 3.13.0-46 后我也有同样的经历。根据vmware-tools-patches,没有可用的补丁。

这些补丁尚未成功应用于以下 Linux 内核:

3.13.x

vmhgfs通过以下方式修复:

  1. 通过启动到旧版本回滚内核升级来 恢复到内核版本 3.13.0-45
  2. 重新安装 vmware-tools