在Vmware搭载Centos安装vmtools过程中有如下报错
/tmp/modconfig-ygOywn/vmhgfs-only/inode.c:
在函数‘HgfsPermission’中: tmp/modconfig-ygOywn/vmhgfs-only/./shared/compat_dcache.h:57:38:
错误:‘struct dentry’没有名为‘d_count’的成员
#define compat_d_count(dentry) dentry->d_count ^ /tmp/modconfig-ygOywn/vmhgfs-only/inode.c:1904:23:
附注:in expansion of macro compat_d_count’ int dcount = compat_d_count(dentry);
这个报错导致虚机centos和实机windows共享目录时, hgfs目录会无法显示。 特别需要留意的是,centos虚机和window实机共享目录的解决办法不同于ubuntu虚机。 ubuntu一般通过安装open-vm-dkms包, 并主动进行挂载就可解决共享问题。
而对于centos虚机,这里,我们需要修改vmtools源码中的compat_dcacche.h文件并重新安装
cd /tmp/vmware-tools-distrib/lib/modules/source/
tar -xf vmhgfs.tar #解压vmhgfs.tar,里面有个vmhgfs-only文件夹
cd vmhgfs-only/shared/ #进入解压后目录
vim compat_dcache.h #打开头文件
下面这块报错了,具体原因未知
if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)
define compat_d_count(dentry) d_count(dentry)
elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
define compat_d_count(dentry) dentry->d_count
else
define compat_d_count(dentry) atomic_read(&dentry->d_count);
endif
我们将 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
下面的#define 改成 define compat_d_count(dentry) d_count(dentry)
改完源码后,重新归档
tar -cf vmhgfs.tar vmhgfs-only/
cd /tmp/vmware-tools-distrib
./vmware-install.p #重新安装vmtools。
这下成功了, 成功看到hgfs目录