您的位置:首页 > 产品设计 > UI/UE

Windows(host) 和 Ubuntu(guest )虚拟机共享文件夹设置总结

2018-02-08 11:18 513 查看

1 引言

在window中安装VMware workstation 后,安装Ubuntu虚拟机系统的时候,会经常使用到共享文件夹的方式,例如使用深度学习进行训练测试的时候,需要指定相关的数据集路径等,因此共享文件的设置是很重要的一点。由于经常安装虚拟机,发现使用VMware tools 安装后,进行挂在文件的时候,总是提示错误,无数挂载文件,这个问题困惑了很久,看国外的网站,终于找到解决方案,最后总结如下:

2 方法1(obsolete)

这种方式是以前常规使用的方式,网上有很多相关的教程,不在详述,可以参考这个教程,本文只是写相关的步骤,对于低版本的Ubuntu共享设置是可以的。安装步骤总结如下:

准备: 虚拟机Ubuntu系统安装好后, 这里推荐Ubuntu发行版下载在阿里云开源镜像站 中,国内的话下载很快的。,需要在host中配置好相关的共享文件夹

注: 为了防止以后虚拟机中空间不够用的问题,初始安装的时候需要设置的大一些,我一般设置60G,,这样以后不用进行扩容的麻烦,虚拟机中进行扩容也是一个很大的坑,网上的教程很多也是错误的,这样以后有空再写。

可以使用 df -h 查看空间

2.1 首先安装vmwaret-tools 工具

>cd ~
>tar zxf /media/ycl/VMware\ Tools/VMwareTools-10.1.15-6627299.tar.gz
>cd vmware-tools-distrib/
>sudo ./vmware-install.pl   (这样有提示,一种按enter即可)
>


2.2 进行共享文件挂载

假设共享文件夹在window中的目录为: G:/ShareData, 上述安装好后,重启虚拟机Ubuntu 系统,然后进行文件挂载。 CRTL + ALT +T ,进入终端命令如下

>sudo mount -t vmhgfs .host:/ /mnt/hgfs/
>cd /mnt/hgfs    (可以查看目录)
>cd ~
>ln -s /mnt/hgfs/ShareData ~/share   (建立软链接)


如果上述的挂载不出现错误,这样基本上就成功了。

3 方法2(推荐)

上述方法在我的Ubuntu 16.40 64 位 和 Ubuntu17.10 64 位,都不行的,网上的很多方法和教程都尝试过,发现都是错误的,进行使用挂载命令的时候

sudo mount -t vmhgfs .host:/ /mnt/hgfs

出现错误:

Error: cannot mount filesystem: No such device

最后发现是使用 sudo ./vmware-install.pl 编译和安装的时候有错误提示。

部分内容如下:

make: Entering directory '/tmp/modconfig-O5xscq/vmhgfs-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/3.19.0-15-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/linux-headers-3.19.0-15-generic'
CC [M]  /tmp/modconfig-O5xscq/vmhgfs-only/backdoorGcc64.o
CC [M]  /tmp/modconfig-O5xscq/vmhgfs-only/message.o
CC [M]  /tmp/modconfig-O5xscq/vmhgfs-only/dir.o
CC [M]  /tmp/modconfig-O5xscq/vmhgfs-only/rpcout.o
CC [M]  /tmp/modconfig-O5xscq/vmhgfs-only/filesystem.o
CC [M]  /tmp/modconfig-O5xscq/vmhgfs-only/cpName.o
CC [M]  /tmp/modconfig-O5xscq/vmhgfs-only/request.o
CC [M]  /tmp/modconfig-O5xscq/vmhgfs-only/module.o
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c: In function ‘HgfsPackDirOpenRequest’:
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c:417:26: error: ‘struct file’ has no member named ‘f_dentry’
file->f_dentry) < 0) {
^
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c: In function ‘HgfsDirLlseek’:
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c:707:32: error: ‘struct file’ has no member named ‘f_dentry’
struct dentry *dentry = file->f_dentry;
^
In file included from /tmp/modconfig-O5xscq/vmhgfs-only/dir.c:39:0:
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c: In function ‘HgfsReaddirNextEntry’:
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c:993:31: error: ‘struct file’ has no member named ‘f_dentry’
si = HGFS_SB_TO_COMMON(file->f_dentry->d_inode->i_sb);
^
/tmp/modconfig-O5xscq/vmhgfs-only/module.h:89:62: note: in definition of macro ‘HGFS_SB_TO_COMMON’
#define HGFS_SB_TO_COMMON(sb)             ((HgfsSuperInfo *)(sb)->s_fs_info)
^
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c:1082:26: error: ‘struct file’ has no member named ‘f_dentry’
*entryIno = file->f_dentry->d_inode->i_ino;
^
In file included from /tmp/modconfig-O5xscq/vmhgfs-only/dir.c:30:0:
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c:1088:44: error: ‘struct file’ has no member named ‘f_dentry’
*entryIno = compat_parent_ino(file->f_dentry);
^
/tmp/modconfig-O5xscq/vmhgfs-only/./shared/compat_fs.h:120:46: note: in definition of macro ‘compat_parent_ino’
#define compat_parent_ino(dentry) parent_ino(dentry)
^
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c:1093:52: error: ‘struct file’ has no member named ‘f_dentry’
*entryIno = HgfsGetFileInode(&entryAttrs, file->f_dentry->d_inode->i_sb);
^
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c: In function ‘HgfsDoReaddir’:
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c:1173:13: error: ‘struct file’ has no member named ‘f_dentry’
!(file->f_dentry) ||
^
/tmp/modconfig-O5xscq/vmhgfs-only/dir.c:1174:13: error: ‘struct file’ has no member named ‘f_dentry’
!(file->f_dentry->d_inode)) {
^
scripts/Makefile.build:257: recipe for target '/tmp/modconfig-O5xscq/vmhgfs-only/dir.o' failed
make[2]: *** [/tmp/modconfig-O5xscq/vmhgfs-only/dir.o] Error 1
make[2]: ** Esperando que outros processos terminem.
Makefile:1394: recipe for target '_module_/tmp/modconfig-O5xscq/vmhgfs-only' failed
make[1]: *** [_module_/tmp/modconfig-O5xscq/vmhgfs-only] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.19.0-15-generic'
Makefile:120: recipe for target 'vmhgfs.ko' failed
make: *** [vmhgfs.ko] Error 2
make: Leaving directory '/tmp/modconfig-O5xscq/vmhgfs-only'

The filesystem driver (vmhgfs module) is used only for the shared folder
feature. The rest of the software provided by VMware Tools is designed to work
independently of this feature.

If you wish to have the shared folders feature, you can install the driver by
running vmware-config-tools.pl again after making sure that gcc, binutils, make
and the kernel sources for your running kernel are installed on your machine.
These packages are available on your distribution's installation CD.
[ Press Enter key to continue ]


主要是 vmhgfs-only 在进行安装和编译时候错误。 同时也有内核版本不匹配的问题。

解决方案如下:

3.1. 确保 open-vm-tools没有安装。

sudo apt-get remove open-vm-tools


3.2.确保完成更新

sudo apt-get update


3.3.安装git

sudo apt-get install git


3.4.运行命令从库中获取工具.

sudo git clone https://github.com/rasa/vmware-tools-patches.git[/code] 

3.5.进入vmware-tools-folder目录

cd vmware-tools-patches


3.6.运行补丁下载工具

下载所有的补丁, 不推荐这种,一般下载太慢了,很多无用的都下载了,

sudo ./download-tools.sh


所有补丁的时候一般都太慢了,使用如下最新的即可。

使用如下命令下载最新的补丁

sudo ./download-tools.sh latest


3.7.解压并打补丁

sudo ./untar-and-patch.sh


3.8.运行

complie.sh file


3.9 查看挂载

>cd /mnt/hgfs
>ls
>cd ShareData
>ls


这样基本上就成功了,本文在win7 64位, 和 win10 64 中 安装VMware workstation 分别安装 Ubuntu16.04 64 位和 Ubuntu17.10 64 发现都可以进行设置共享文件夹了。

如有错误,欢迎指正。

Reference

[1] http://blog.csdn.net/jackydi/article/details/52807374

[2] https://communities.vmware.com/thread/509898?start=0&tstart=0

[3] http://blog.csdn.net/klq6743/article/details/78838080
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: