LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1777|回复: 6

VMWare 6.0.2 hgfs文件系统编译问题

[复制链接]
发表于 2007-12-2 19:20:13 | 显示全部楼层 |阅读模式
VMWare 6.0.2所带的tools在我的CLFS1.0.0上无法编译hgfs模块。幸运的是该模块的源代码是公开的,这使我得以跟踪这一问题。

gcc编译该模块时报告的错误是(大意):

filesystem.c:提供给kmem_cache_create的参数太少。

查看源代码,发现该处调用的是compat_kmem_cache_create函数。用grep发现这其实是定义在compat_slab.h头文件的一个宏,并使用了条件编译:

若内核版本小于2.6.22则定义该宏为对kmem_cache_create的调用,并添加最后一个参数为NULL。若否,则没有最后一个参数。

在这个宏的前面,有一段注释:析构函数在2.6.23-pre1中消失。据此推测,kmem_cache_create函数本应有6个参数,但在2.6.23后变成5个。

在经过跟踪后,发现我的系统内核版本为2.6.22。

大家发现这里的错误没有?没错,这是一个弱智错误。因为22并不小于22,所以hgfs模块认为我的系统中的kmem_cache_create只有5个参数,但事实上有6个。

弄清楚了这个问题后,问题就好解决了:
在该文件第27行,原文为
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 22) | defined(VMW_KMEMCR_HAS_DTOR)
需要改为:
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 22) | defined(VMW_KMEMCR_HAS_DTOR)

此后编译便可通过。
发表于 2007-12-2 19:30:49 | 显示全部楼层
沙发支持~~~
回复 支持 反对

使用道具 举报

发表于 2007-12-3 11:06:02 | 显示全部楼层
好像不止这一个错误
回复 支持 反对

使用道具 举报

发表于 2007-12-3 19:25:52 | 显示全部楼层
不太明白 hgfs 其实有什麽用处?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-3 21:38:25 | 显示全部楼层
Post by d00m3d;1791045
不太明白 hgfs 其实有什麽用处?

hgfs是VMWare中与主机通讯的一种机制。主机可以籍此与虚拟机共享一个或多个目录,籍此,虚拟机甚至可以不必有网络设备。某些时候,如果你希望虚拟机与主机完全隔离,这就很有用处。比方说,你刚从网络下载怀疑有病毒的文件,主机上不敢运行,就可以推给虚拟机,由它承担风险。这时候,你不敢让虚拟机上网,因为有些病毒能透过网络传播。而如果没有网络,如何让虚拟机执行怀疑带毒文件呢?有了hgfs事情不就简单了吗?
回复 支持 反对

使用道具 举报

发表于 2007-12-3 21:47:06 | 显示全部楼层
好久没用 vm 了,还真不知道有 hgfs 这东西
回复 支持 反对

使用道具 举报

发表于 2007-12-4 07:28:16 | 显示全部楼层
Post by 地球发动机;1791093
hgfs是VMWare中与主机通讯的一种机制。主机可以籍此与虚拟机共享一个或多个目录,籍此,虚拟机甚至可以不必有网络设备。某些时候,如果你希望虚拟机与主机完全隔离,这就很有用处。比方说,你刚从网络下载怀疑有病毒的文件,主机上不敢运行,就可以推给虚拟机,由它承担风险。这时候,你不敢让虚拟机上网,因为有些病毒能透过网络传播。而如果没有网络,如何让虚拟机执行怀疑带毒文件呢?有了hgfs事情不就简单了吗?
我不懂 VM,长见识了,谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表