升级到linux-image-3.13.0-46后安装vmware-tools 9.9出现错误

8

我升级了我的Ubuntu虚拟机到linux-image-3.13.0-46之后,安装vmware-tools时出现错误,无法再共享文件夹。

我在Windows 8和Ubuntu 14.04 LTS主机上都运行了vmware player 7.0.0 build-2305329,在安装过程中出现了以下错误日志:

                 from /tmp/modconfig-NVbKuD/vmhgfs-only/inode.c:29:
include/linux/kernel.h:793:27: error: ‘struct dentry’ has no member named ‘d_alias’
  const typeof( ((type *)0)->member ) *__mptr = (ptr); \
                           ^

有没有任何对于这个问题的解决方法?
谢谢。

我投票关闭此问题,因为它不属于本站的主题范围,并建议您将其发到 serverfault.comunix.stackexchange.comsuperuser.com 上询问! - Am_I_Helpful
4个回答

11

vmware-tools-distrib-9.9.2-2496486:

我已经通过进入包含 vmhgfs.tar 的目录(在我的情况下是 /usr/lib/vmware-tools/modules/source),解压 tar 并手动编辑 inode.c 来解决了这个问题。

在第 1925 行(只需搜索“d_alias”即可找到确切行数),您需要添加一个 if。最终看起来像这样:

#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
                           d_alias) {
#else
                           d_u.d_alias) {
#endif

再次在大约1983行左右寻找“d_alias”:

#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
         struct dentry *dentry = list_entry(pos, struct dentry, d_alias);
#else
         struct dentry *dentry = list_entry(pos, struct dentry, d_u.d_alias);
#endif

注意:我不确定内核版本,但是我在那里放了3.13.0,尽管我的Ubuntu报告如下:

# uname -a
Linux md-ubuntu 3.13.0-46-generic #76-Ubuntu SMP Thu Feb 26 18:52:13 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

这在3.13.0-45版本下运行良好。

所以如果您降级内核,上述hack可能无法正常工作。

然后,您需要重新打包tar归档文件(只需将旧文件移到一边即可:

)
# mv vmhgfs.tar vmhgfs.tar.orig

并重新打包目录:

# tar cvf vmhgfs.tar vmhgfs-only

希望有所帮助。


曾在VMWare Workstation 11.1.0和Linux linux6405 3.13.0-46-generic #76-Ubuntu SMP Thu Feb 26 18:52:13 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux上工作过。 - Mark Thomas
它在我的VMWare Fusion 6.0.5上(MacBook Pro上)运行良好。谢谢! - HEKTO
1
在Linux ubuntu 3.16.0-31-generic上的VMwareTools-9.9.0-2304977.tar.gz中,每次运行安装脚本时似乎都会重新创建vmhgfs.tar。因此,在交互式安装过程中,您必须仔细监控tar文件何时被创建,一旦tar文件被创建,进行更改,然后继续交互式安装脚本... - xwl
1
@xwl - 我从不使用交互式安装脚本。我曾经解压缩 VMwareTools* tar 文件,然后 cd 进入其目录(在我的机器上称为 vmware-tools-distrib),并运行 vmware-install.pl 脚本。 - HEKTO
在VMware 10、VMwareTools-9.6.2-1688356和Linux 3.13.0-46-generic #77-Ubuntu上,它对我有效。除了我只需要更改一次而不是两次,在第1903行。 - John Jefferies
这在Debian Wheezy 3.16.0-0.bpo.4-amd64和workstation 11.10上也行得通 - 完整的说明请参考https://xpressubuntu.wordpress.com/2015/03/04/how-to-fix-no-shared-folders-in-vmware-player-7/ - Stuart Cardall

1

这个补丁应该可以解决问题。

编辑Working Gist patch

使用说明:

cd vmware-tools-distrib/lib/modules/source/
tar -xvf vmhgfs.tar
cd vmhgfs-only
patch inode.c < inode.patch
cd ..
mv vmhgfs.tar vmhgfs.tar.orig
tar cvf vmhgfs.tar vmhgfs-only
cd vmware-tools-distrib
sudo ./vmware-install.pl

我按照快速入门的步骤操作,但问题并未得到解决。当我应用补丁时,出现了以下信息:*** 跳过 vmhgfs/vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch:未能成功应用 - marcom
你能否尝试不使用任何包装器来应用此补丁,并告知精确的输出?将vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch复制到vmhgfs文件夹中,进入该文件夹并运行'patch -p1 < vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch'。 - iwlagn
似乎补丁与VMwareTools-9.9.0-2304977.tar.gz的inode.c不匹配。“文件inode.c是只读的;尝试进行补丁 正在打补丁文件inode.c Hunk#1成功,模糊度为1。 Hunk#2在1893处失败。 Hunk#3在1946处失败。 3个hunks中有2个失败 - 将拒绝保存到文件inode.c.rej中。” - marcom
好的,让我们采取另一种方法。您能否创建一个包含编译过程中完整错误跟踪信息的Gist?其中最后一行应该是“from /tmp/modconfig-NVbKuD/vmhgfs-only/inode.c:29:”。 - iwlagn
这是一个包含update-and-patch-and-compile.sh错误日志的gist。我还添加了手动运行patch命令创建的icon.c.orig、icon.c和icon.c.rej文件。错误显示在icon.c的第29行存在问题,这在第一个补丁更改(第31行)之前,因此可能补丁无法解决问题。 - marcom

0

open-vm-tools是VMware为Ubuntu支持和推荐的工具。因此,如果您使用VMware Tools遇到麻烦,可以轻松安装open-vm-tools。

希望能对您有所帮助。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接