为了更好的解决虚拟机与主机的共享问题,VMware公司有一个VMWare-tools,来实现文件共享。这里主要讲的是在Windows下用 Vmware虚拟Linux来与windows来共享。
1、安装客户机系统,linux这里选用CentOS5
2、启动虚拟机中的Linux后,(注意必须是启动虚拟机后)。选择菜单里的VM选项,里面有一个子项是Install VMware Tools,选定它。开始安装。
3、现在,你到VM菜单里的Removable Devices子项中的CDROM项,点击edit,打开VMWare的安装文件夹,里面是不是有一些*.iso啊,好的,按照前面的步骤,选择linux.iso来作为ISO文件。
4、下面就是mount加载linux.iso文件。
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
5、到cdrom文件夹里面解压VMware-tools*.tar.gz
cp VMware-tools*.tar.gz /tmp
cd /tmp
tar xzvf VMware-tools*.tar.gz
cd vmware-tools-distrib
在文件夹里面是不是看到了一个vmware-install.pl
OK!
./vmware-install.pl
一直按回车,直到提示安装成功就可以了。
6、VMware-tools已经安装成功了,是不是很简单啊
cd /mnt
是不是看到了一个hgfs文件夹,这就表明安装成功了,下面就要讲一下怎么来设置共享了,这一部分更简单。
记得上面在VM菜单里进行操作了吗?对!下面接着要在VM菜单里进行,选择setting子项,再选择Options。在窗体的左半部分是不是看到了Shared Folders这么一项,如果你以前没有设置过,应该是Disabled。
选择Enabled until next power off or suspend,选择Add,选择要与客户Linux进行共享的文件夹。
现在已经完成了所有的工作了,在/mnt/hgfs下你会看到添加的文件夹。在windows下向指定的share folders写文件,在Linux客户机里面就能够看到,同样在Linux上写文件在Windows下也能够看到,并且可以修改。
卸载光驱
umount /mnt/cdrom
由于测试需要,安装第二个虚拟机,本着尝鲜测试的心理,选择了centos7,但是在安装vmware共享文件夹的时候出现了问题,查询了很多资料后,找到下边一个解决办法,分享出来。
1、安装客户机系统,linux这里选用CentOS5
2、启动虚拟机中的Linux后,(注意必须是启动虚拟机后)。选择菜单里的VM选项,里面有一个子项是Install VMware Tools,选定它。开始安装。
3、现在,你到VM菜单里的Removable Devices子项中的CDROM项,点击edit,打开VMWare的安装文件夹,里面是不是有一些*.iso啊,好的,按照前面的步骤,选择linux.iso来作为ISO文件。
4、下面就是mount加载linux.iso文件。
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
5、到cdrom文件夹里面解压VMware-tools*.tar.gz
cp VMware-tools*.tar.gz /tmp
cd /tmp
tar xzvf VMware-tools*.tar.gz
cd vmware-tools-distrib
在文件夹里面是不是看到了一个vmware-install.pl
OK!
./vmware-install.pl
一直按回车,直到提示安装成功就可以了。
6、VMware-tools已经安装成功了,是不是很简单啊
cd /mnt
是不是看到了一个hgfs文件夹,这就表明安装成功了,下面就要讲一下怎么来设置共享了,这一部分更简单。
记得上面在VM菜单里进行操作了吗?对!下面接着要在VM菜单里进行,选择setting子项,再选择Options。在窗体的左半部分是不是看到了Shared Folders这么一项,如果你以前没有设置过,应该是Disabled。
选择Enabled until next power off or suspend,选择Add,选择要与客户Linux进行共享的文件夹。
现在已经完成了所有的工作了,在/mnt/hgfs下你会看到添加的文件夹。在windows下向指定的share folders写文件,在Linux客户机里面就能够看到,同样在Linux上写文件在Windows下也能够看到,并且可以修改。
卸载光驱
umount /mnt/cdrom
由于测试需要,安装第二个虚拟机,本着尝鲜测试的心理,选择了centos7,但是在安装vmware共享文件夹的时候出现了问题,查询了很多资料后,找到下边一个解决办法,分享出来。
首先得解决包依赖问题,常识,否则安装不上去,有几个是必须的,然后再进行一下更新操作,保证内核是最新版本就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