文章转载自:https://blog.itnmg.net/vmware-centos-7/
在 VMware 中最小化安装完 CentOS 7, 正常安装 VMware Tools, 发现在设置主机共享目录的时候提示”无法更新运行时文件夹共享状态:在客户机操作系统内装载共享文件夹文件系统时出错” , 找了很久终于搞定.
系统环境
VMware Workstation Pro 12.5.2
CentOS 7.3 minimal
修复 bug 安装 VMware Tools
如按菜单上的 “安装 VMware Tools” 安装到最后会看到几处错误提示, 都是有关 “wait_on_bit” 的, 最终结果就是 vmhgfs 组件编译出错, 不能共享文件夹.
|
warning
:
passing
argument
3
of
‘
wait_on
_bit’
.
.
.
error
:
too
many
arguments
to
function
‘
wait_on
_bit’
.
.
.
|
要解决这个问题需要修改 hgfs 相关的源码.
启动虚拟机, 以 root 用户登录
安装必备软件
|
yum
install
perl
gcc
kernel
-
headers
kernel
-
devel
|
先安装 open-vm-tools
|
#此 vm tools 提供除了与主机文件共享外的其他功能
yum
install
open
-
vm
-
tools
|
创建光盘挂载点
点击 vm 菜单上的 虚拟机->安装 VMware Tools 项, 将 VMware Tools 光盘载入光驱.
挂载光盘到刚创建的目录
|
mount
/
dev
/
cdrom
/
mnt
/
cdrom
|
进入挂载后的目录, 找到 VMwareTools-xxxx.tar.gz 文件, 将它解压到其他目录, 我这里解压到 /root 下
|
cd
/
mnt
/
cdrom
tar
zxf
VM*
.
gz
-
C
/
root
|
修改 hgfs 源码
|
#进入源码目录
cd
/
root
/
vmware
-
tools
-
distrib
/
lib
/
modules
/
source
#解压 hgfs 源码
tar
xf
vmhgfs
.
tar
cd
vmhgfs
-
only
#编辑 page.c 文件, 如果没有安装 nano 用 yum 安装
nano
page
.
c
|
按 Ctrl + w 打开搜索框, 输入以下内容, 按回车搜索.
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
|
多次 Ctrl + w 查找, 直到找到包含以下内容的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
int
HgfsWbRequestWait
(
HgfsWbPage *
req
)
{
#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
}
|
将 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) 中的 3, 19, 0 替换为 3, 10, 0
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
|
保存退出
|
cd
.
.
#将改好的代码重新打包
tar
cf
vmhgfs
.
tar
vmhgfs
-
only
|
开始安装
|
cd
/
root
/
vmware*
.
/
vmware
-
install
.
pl
|
一路回车,直到安装完毕.
重启系统
设置共享文件夹, 之后再次重启系统, 共享目录就生效了
修改控制台分辨率
刚安装的系统 分辨率非常小, 不方便操作, 这里修改分辨率为 1152 * 864 32位色.
CentOS 7 使用 grub2 启动, 修改分辨率的参数放在 /etc/default/grub 文件中
|
nano
/
etc
/
default
/
grub
|
在 GRUB_CMDLINE_LINUX=”xxxx” 项最后插入 vga=0x342 (分辨率为 1152*864*32)
|
GRUB_CMDLINE_LINUX
=
"xxxx vga=0x342"
|
保存退出
令配置生效
|
grub2
-
mkconfig
-
o
/
root
/
grub2
/
grub
.
cfg
|
重启系统就能看到分辨率变化了.
如果想查看所有支持的分辨率, 可将0x342改为ask, 当系统启动时会列出所有分辨率供选择.
记住要改的分辨率对应的三位数编码再按上面的方法改 /etc/default/grub 就可以了.