准备开始练习UNIX网络编程,首先就得把环境搭好,这点很重要,不然后面的没法开始,相对来说虚拟机安装都不是问题。
首先得解决包依赖问题,常识,否则安装不上去,有几个是必须的,然后再进行一下更新操作,保证内核是最新版本就OK。
yum -y install net-tools perl gcc gcc-c++ kernel-devel
yum update
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
#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
欢迎加入rpm系~
这个有Rpm安装包么?
我来看博主了
没玩过,但觉得很复杂
这个看怎么玩了,简单点还是很容易的
玩过Centos,感觉太复杂了。