前段时间,一个朋友在windows 使用 linux 虚拟,因为要共享windows 上的文件夹给linux 虚拟机。

而这个功能vmware 自己带了,只需要添加就行,不需要做什么客户的设置,图片如下:

按正常的情况来讲,只要安装了vmtools 之后,这里添加了共享,在虚拟机的 /mnt/hgfs 目录,就可以看到我们添加的共享文件夹的,可是这次,我的朋友并不是这么幸运,添加了文件夹,只是有 /mnt/hgfs 这个目录,目录下并没有任何文件。

后来经过了解情况,由于没有安装 vmtools,所以看不到,这个功能,是由vmtools 来控制的,安装了vmtools 之后,还是一样,再后来,我远程过去操作,再次安装,依然无效。

后来经过排查,安装了vmtools 以后会添加一个名为 vmhgfs 的 kernel module,经过查看,这个并没有对应模块

[root@localhost ~]# lsmod | grep vm

vmw_vsock_vmci_transport 30577 0

vsock 34855 5 vmw_vsock_vmci_transport

vmw_balloon 18190 0

vmw_vmci 67106 1 vmw_vsock_vmci_transport

vmwgfx 235043 2

drm_kms_helper 146456 1 vmwgfx

ttm 93908 1 vmwgfx

drm 372540 5 ttm,drm_kms_helper,vmwgfx

[root@localhost ~]#

图片如下:

怀疑是不是安装 vmtools 的,没有启用这个模块,于是,从新安装一遍,并且查看每一步确认的提示,避免提示的直接确认而忽略了这个模块的安装。

在安装过程中,还遇到如下的错误提示:

The path "" appears is not a valid path to the 3.10.0-514.6.1.el7.x86_64 kernel headers.

这个是由于系统没有安装 kernel header 文件,而导致找不到,如果遇到这个错误,安装 kernel 对应版本的 header 文件,即可,命令如下:

yum -y install kernel-devel-$(uname -r) # Redhat \ CentOS

apt-get -y install linux-headers-$(uname -r) # Debian \ Ubuntu

##其它发行版本,请调整相应命令

安装完成后,重新运行 vmtools 的安装脚本 vmware-install.pl 即可,安装后这一步缺少 header 文件的提示就变成如下这样

The path "/lib/modules/3.10.0-514.6.1.el7.x86_64/build/include" appears to be a valid path to the 3.10.0-514.6.1.el7.x86_64 kernel headers.

注意这里显示了路径,并且是 appears ,不是之前的 is not a valid

还有一点需要注意的是,在安装 vmtools 的时候,需要有 perl 语言环境支持,并且还要有 gcc 编译器,还需要系统对应的 kernel header 文件。perl 一般的linux系统都自带了,而 gcc 和 kernel 头文件,则不一定有,安装如下

yum -y install gcc kernel-devel-$(uname -r)

apt-get -y install gcc linux-headers-$(uname -r)

##其它发行版本,请调整相应安装命令

在解决的了头文件的问题之后,原本以为应该可以解决了,所以再次运行安装,在安装的时候,gcc 编译器报一个错误,还是和 vmhgfs.ko 相关的,既然是 .ko 文件,这个是内核模块的文件啊,我想,估计这次安装完了也不行,内核模板编译出错,忽略了这个错误,继续安装下去,结果和我猜想的一样 lsmod 命令依然看不到模板,/mnt/hgfs 目录也没有文件

gcc 编译器报错如下:

In file included from include/linux/mmzone.h:9:0,

from include/linux/gfp.h:5,

from include/linux/mm.h:9,

from include/linux/pagemap.h:7,

from /tmp/modconfig-EgxhOq/vmhgfs-only/page.c:28:

include/linux/wait.h:1044:1: note: expected ‘unsigned int’ but argument is of type ‘int (*)(void *)’

wait_on_bit(void *word, int bit, unsigned mode)

^

/tmp/modconfig-EgxhOq/vmhgfs-only/page.c:1649:23: error: too many arguments to function ‘wait_on_bit’

TASK_UNINTERRUPTIBLE);

^

In file included from include/linux/mmzone.h:9:0,

from include/linux/gfp.h:5,

from include/linux/mm.h:9,

from include/linux/pagemap.h:7,

from /tmp/modconfig-EgxhOq/vmhgfs-only/page.c:28:

include/linux/wait.h:1044:1: note: declared here

wait_on_bit(void *word, int bit, unsigned mode)

^

make[2]: *** [/tmp/modconfig-EgxhOq/vmhgfs-only/page.o] Error 1

make[2]: *** Waiting for unfinished jobs....

make[1]: *** [_module_/tmp/modconfig-EgxhOq/vmhgfs-only] Error 2

make[1]: Leaving directory `/usr/src/kernels/3.10.0-514.6.1.el7.x86_64'

make: *** [vmhgfs.ko] Error 2

make: Leaving directory `/tmp/modconfig-EgxhOq/vmhgfs-only'

后来在网上查到资料,说是因为 centos 7 的 内核使用3.10的版本,在函数 wait_on_bit_io() 中有三个参数,而vmtools 的代码在3.19后才用3个参数的 wait_on_bit_io() 函数,代码如下:

int

HgfsWbRequestWait(HgfsWbPage *req) // IN: request of page data to write

{

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)

return wait_on_bit_io(&req->wb_flags,

PG_BUSY,

TASK_UNINTERRUPTIBLE);

#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)

return wait_on_bit(&req->wb_flags,

PG_BUSY,

#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)

HgfsWbRequestWaitUninterruptible,

#endif

TASK_UNINTERRUPTIBLE);

#else

wait_event(req->wb_queue,

!test_bit(PG_BUSY, &req->wb_flags));

return 0;

#endif

}

现在,我们只需要修改一下这个函数。

在vmtools 解压出来的目录里面,进入 lib/modules/source 目录,在这个目录里,可以看到有好几个以.tar结尾的文件,其中 vmhgfs.tar ,把这个包解压出来,使用如下命令

tar -xf vmhgfs.tar

这个包解压后,会有一个 vmhgfs-only 的文件夹

修改这个 vmhgfs-only 文件夹的下的 page.c 文件,在 1639 行,使用vim或者任何你喜欢的编辑器,修改如下:

原文件

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)

修改后的文件

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)

修改后保存,回到 lib/modules/source 目录,删除原本的 vmhgfs.tar 文件,再重新打包

rm -f vmhgfs.tar

tar -cf vmhgfs.tar vmhgfs-only

最后再回到vmtools 安装目录,重新执行 ./vmware-install.pl 安装,即可解决

安装完成后,可以使用 lsmod | grep vm 看到,vmhgfs 这个模板已经存在并加载了,现在,共享文件夹就可以使用了

linux vmware 共享文件夹共享,解决vmware上使用linux虚拟,无法共享文件的问题相关推荐

  1. win10无法访问smb共享文件夹的解决办法

    win10无法访问smb共享文件夹的解决办法 之前在linux的几个图形化界面都可以在文件夹中输入: smb://ip/share 直接访问Linux服务器上的共享文件夹 但是在win10上进行同样的 ...

  2. VMware Workstation Player 找不到共享文件夹的解决方法

    具体问题:使用VMware Workstation Player装完linux系统后,开启共享文件夹,在linux系统中没有显示(即:无法使用共享文件夹) 解决方法:重新安装VMware  Tool ...

  3. 通过共享文件夹实现虚拟机VMware与宿主机文件共享

    通过共享文件夹实现虚拟机VMware与宿主机文件共享 说明: 虚拟机系统:Ubuntu 16.04 宿主机系统:Windows 10 通过共享文件夹实现虚拟机VMware与宿主机文件共享 第1步:宿主 ...

  4. Linux系统centos7+VMwareWorkstation创建共享文件夹错误解决方法集锦

    Linux系统centos7+VMwareWorkstation创建共享文件夹错误解决方法集锦 参考文章: (1)Linux系统centos7+VMwareWorkstation创建共享文件夹错误解决 ...

  5. Oracle怎样创建共享文件夹,Oracle vm要如何使用共享文件夹的解决方法

    了解过的Oracle vm虚拟机的人,用过的朋友都知道,这是一个很方便的虚拟机,当然唯一不足的是它不支持直接的主机到虚拟机的文件拖拽,但是有其他的方式可以解决这个问题.下面是学习啦小编为大家整理的关于 ...

  6. linux下共享文件夹(windows可访问,linux也可访问)

    2019独角兽企业重金招聘Python工程师标准>>> 本文是转字网上的两段,如果是菜鸟,想懂有点难度,我这里给点注释 在linux上共享文件夹windows下看 ********* ...

  7. linux删除文件夹下所有文件_linux下共享文件夹(windows可访问,linux也可访问)...

    本文是转字网上的两段,如果是菜鸟,想懂有点难度,我这里给点注释 在linux上共享文件夹windows下看 ******************************************* 首先 ...

  8. debian9为什么默认是pip2_VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹。解决的方法就是安装VirtualBox客户端增强包。...

    VirtualBox内刚刚安装完Debian9系统,也无法设置共享文件夹.解决的方法就是安装VirtualBox客户端增强包. 1.若直接安装客户端增强包会得到如下提示: root@debian:/o ...

  9. 开启共享文件夹/共享打印机功能

    适用于:Windows 10 神州网信政府版 概要: 基于GB/T 30278-2013 <信息安全技术政务计算机终端核心配置规范>的要求对Windows 10神州网信政府版(以下简称CM ...

最新文章

  1. linux磁盘满时,如何定位并删除文件
  2. access数据库文件导入mysql数据库文件怎么打开,Access数据库从外部数据导入文本文件和VF数据库-dbf文件怎么打开...
  3. android studio 调用c++,android studio配置opencv,调用c++,处理图像
  4. STM32H743+CubeMX-解决FDCAN控制器无法接收远程帧
  5. go 设置进程名_七天用Go写个docker(第六天)
  6. C#.NET验证码智能识别学习笔记---06 解决java jre问题:JTessBoxEditor.jar打开的时报找不到或无法加载主类 com.sun.tools.javac.Main错误
  7. R语言中怎么将一个字符串向量合成一个大字符串
  8. 自学python买什么教材-从自学到编写大学python教材——低调quot;虫师”谢乾坤
  9. 白猫使用OCR文字识别
  10. 中国数据中心最新规划图,中国数据中心建设情况
  11. 远程过程调用失败 异常来自 HRESULT:0x800706BE
  12. AI科普文章 | 语音识别准不准?—— ASR 效果评测原理与实践
  13. 网易换肤第二篇:本地换肤实现!
  14. matlab计算矩阵的相关系数矩阵,计算二维矩阵的相关系数
  15. English Learning - Day20 作业打卡 2022.12.26 周一
  16. 怎么文字扫描识别?看完这篇你就会了
  17. [Excel启用编辑]的影响与关闭
  18. 综合布线6A系统产品集锦(二)
  19. Linux proxy 设置
  20. 大数据ssm项目案例总结

热门文章

  1. 盘点:当今十大备份应用软件
  2. 旭日图(Sunburst)
  3. 【Elang】dialyzer
  4. Cryptocell-712安全引擎概述
  5. 《C程序设计语言》(《The C Programming Language》)第二版第六章练习题
  6. 基于Android的学生管理系统的设计与实现
  7. 计算机可以调剂到资源与环境吗,资源与环境求调剂 - 考研 - 小木虫 - 学术 科研 互动社区...
  8. Android发展历程
  9. 【深度学习】图像分割概述
  10. VCPKG安装opencv后VS2019无法找到viz.hpp