Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281148
  • 博文数量: 38
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 221
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-25 17:36
文章分类

全部博文(38)

文章存档

2015年(1)

2014年(37)

分类: LINUX

2014-11-26 10:29:52

由于测试需要,安装第二个虚拟机,本着尝鲜测试的心理,选择了centos7,但是在安装vmware共享文件夹的时候出现了问题,查询了很多资料后,找到下边一个解决办法,分享出来。

首先得解决包依赖问题,常识,否则安装不上去,有几个是必须的,然后再进行一下更新操作,保证内核是最新版本就OK。

yum -y install net-tools perl gcc gcc-c++ kernel-devel
yum update

  一切都准备就绪,看起来如此美好,但结果是忧伤的,一不小心报了一个致命错误,并且解释的很清楚,看起来必须得解决,否者将不能使用vmhgfs,也就是共享文件夹就废了,而我现在需要的就是这个。

/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);

  解决的办法只有一个,修改源码,听起来很简单的,确实。

[root@localhost ~]# cd vmware-tools-distrib/lib/modules/source/
[root@localhost source]# ls
legacy      vmblock.tar  vmhgfs.tar    vmsync.tar   vmxnet.tar
pvscsi.tar  vmci.tar     vmmemctl.tar  vmxnet3.tar  vsock.tar
[root@localhost source]# tar -xf vmhgfs.tar
[root@localhost source]# ls
legacy      vmblock.tar  vmhgfs-only  vmmemctl.tar  vmxnet3.tar  vsock.tar
pvscsi.tar  vmci.tar     vmhgfs.tar   vmsync.tar    vmxnet.tar
[root@localhost source]# cd vmhgfs-only/
[root@localhost vmhgfs-only]# ls
backdoor.c       dir.c           hgfsTransport.h  request.h
........................................
[root@localhost vmhgfs-only]# cd shared/
[root@localhost shared]# vim compat_dcache.h

  我也不知道这么一大段有几个人能明白,简单点说就是找到vmhgfs.tar源文件,然后解压,再编辑源文件compat_dcache.h,找到第57行可以看到如下信息。

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)
#define compat_d_count(dentry) d_count(dentry)
/* 本因使用该宏定义,但不知何种原因判断无效,当前内核版本为3.10.0-123.8.1 */
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
#define compat_d_count(dentry) dentry->d_count
/* 当前使用的是这个宏定义,但实际上应该是使用上面的,*/
/*这个原因我实在不清楚,不过只要修改dentry->d_count为d_count(dentry)然后:wq!强制保存就可以了 */
#else
#define compat_d_count(dentry) atomic_read(&dentry->d_count);
#endif

  最后重新打包,然后再次运行就OK,过程如下。

[root@localhost source]# tar -cf vmhgfs.tar vmhgfs-only/
[root@localhost source]# ls
legacy      vmblock.tar  vmhgfs-only  vmmemctl.tar  vmxnet3.tar  vsock.tar
pvscsi.tar  vmci.tar     vmhgfs.tar   vmsync.tar    vmxnet.tar
[root@localhost source]# rm -rf vmhgfs-only/
[root@localhost source]# ll
总用量 8456
drwxr-xr-x. 1 root root     162 3月  22 2014 legacy
-rw-r--r--. 1 root root 1392640 10月 10 23:02 vmhgfs.tar
.........................
[root@localhost modules]# cd ../../../
[root@localhost vmware-tools-distrib]# ./vmware-install.pl
阅读(8025) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~