博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用VMware11设置CentOS共享文件夹
阅读量:7298 次
发布时间:2019-06-30

本文共 3242 字,大约阅读时间需要 10 分钟。

本以为装个tomcat很容易,但是没想到还是遇到了很多的问题,特此写下这篇笔记,为其他有需求的同学提供一些参考。

系统环境:Windows7 + VMWare 11.0准备工具:CentOS 7安装iso文件, apache tomcat以及JDK

操作步骤:

 

一、使用VMware安装好CentOS系统

  这一步不作详细叙述了,因为对大多数人来说太简单。

二、设置共享文件夹

  由于在离线状态下安装,所以一些工具需要从宿主机的共享文件夹里复制到虚拟机里来,我采用的是设置共享文件夹的方式,不知道其他同学有没有更好的方式。但就是在设置这个共享文件夹的时候出了很多的问题。

  我在安装系统的时候,系统是默认自动安装好VMtool的,但是不知道是什么原因,在我建立共享文件夹后,在/mnt/hgfs下没有我存好的文件。于是我在网上查找了原因,有网友说是因为gcc版本需要升级,但是我这是离线安装,gcc版本升级实在是不太好办。于是我另想办法,决定重新安装vmtools。在vmware选项里选择重新安装vmtools,然后进行了以下步骤

  1.mount /dev/cdrom /mnt/cdrom将vmtools挂载到cdrom文件夹

  2.将cdrom中的VMTool的tar文件拷贝到本地磁盘,然后用tar -zxf VMTool 进行解压

  3.解压之后运行其中的.pl文件

  4.出现一些需要确认的问题,一路Enter

  5.这时候问题来了,突然提示HgfsWbRequestWait函数里有一个wait_on_bit函数报错,具体的提示内容我没有拷贝下来。然后提示你如果继续请按Enter键,之后安装完毕。看了一下hgfs文件夹,依然空空如也。

  6.用百度搜索了一些解决办法,基本判定是vmtool的源代码文件出了问题。这个文件的位置在之前解压出来的vmware-tools-distrib/lib/modules/source目录下的Page.c文件。

  7.引用CSDN的博主kyolong的文章,链接——

  文中提到:

  

通过查看后发现因为centos 7的内核用的3.10版本,在函数 wait_on_bit_io()中有三个参数,而vmtool的代码在内核3.19后才用3个参数的wait_on_bit_io()函数,代码如下

1639 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) 1640 return wait_on_bit_io(&req->wb_flags, 1641 PG_BUSY, 1642 TASK_UNINTERRUPTIBLE); 1643 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) 1644 return wait_on_bit(&req->wb_flags, 1645 PG_BUSY, 1646 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) 1647 HgfsWbRequestWaitUninterruptible, 1648 #endif 1649 TASK_UNINTERRUPTIBLE); 1650 #else

 

个人推测,在其他linux版本中可能也会出现类是的问题,只要看看报错源码,如果是由于#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0),这种判断造成的报错,只要把宏改成当前的版本号,一般都能解决问题.

vmware-tools-distrib/lib/modules/source的目录下有不少tar文件,我是根据报错的提示

“/tmp/modconfig-71euqe/vmhgfs-only/page.c:1649:23: error: too many arguments to function ‘wait_on_bit’” 一个个去解压了找的

解压指令

tar xf vmhgfs.tar

修改目录下的page文件的1639行

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

改为如下↓

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

解压后修改完成打包指令

tar cf vmhgfs.tar vmhgfs-only

然后执行vmware-install.pl 问题解决

 

我按照这位博主的方法找到了这个文件,发现第1639行并不是文中的代码,而是一串长长的注释。于是我估计是版本的问题,我查了一下我使用的centos以及vmware的版本号,

uname -r 得到centos内核版本是3.10.0-514.e17.x86_64

cat /etc/redhat-release ,系统版本是 CentOS Linux release 7.3.1611 (Core)

Vmware版本是11.0.0 build-2305329

我又根据提示找到这个函数HgfsWbRequestWait

发现其实问题出在这

HgfsWbRequestWait(HgfsWbPage *req) // IN: request of page data to write{#if 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_quque,                    !test_bit(PG_BUSY, &req->wb_flags));    return 0;#endif}

在第1619行,我把

#if 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 改成了
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)    return wait_on_bit(&req->wb_flags,PG_BUSY,                      HgfsWbRequestWaitUninterruptibl
            TASK_UNINTERRUPTIBLE); 是的,我把这个大于3.17.0的版本判断去掉了。因为我实在不理解为什么还要设置版本上限。 OK,打包压缩包,重新安装vmtool,没有再出现这个提示,再看看/mnt/hgfs文件夹,发现里面已经有内容了。至此,用vmware共享文件夹终于完成。
 

 

转载于:https://www.cnblogs.com/missmiao/p/6353896.html

你可能感兴趣的文章
C# int数组转string字符串
查看>>
引用是具有特殊语义的指针
查看>>
maven配置默认jdk版本
查看>>
IOS-网络SOCKET操作
查看>>
【poj解题】1308
查看>>
寒假作业2
查看>>
Docker部署SonarQube
查看>>
VMware vs openStack对比直观优势
查看>>
Centos6.5 Qt4开发 Cannot find -lGL QApplication not file or dir
查看>>
C 基于socket实现简单的文件传输
查看>>
linux运维社区站点收集
查看>>
Python_sklearn机器学习库学习笔记(五)k-means(聚类)
查看>>
Cow Contest(传递闭包)
查看>>
根据前序遍历和中序遍历结果恢复二叉树
查看>>
hdu2089 数位dp二(不含62或者4)
查看>>
再见ACM(退役流水贴)
查看>>
ZXING二维码生成中文及空白问题
查看>>
MarkLight
查看>>
tr th td
查看>>
使用POWERDESIGNER设计数据库的21条技巧
查看>>