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