我正在尝试在 Ubuntu 10.04 上安装VMware Server 1.0.10 (2009 年 10 月 26 日发布)。
(为什么不是 2.0?嗯,我已经尝试过 2.0;不喜欢它的 UI 并且也有其他一些问题,而且我知道1.0.x 可以满足我的一切需求。)
当我运行时sudo ./vmware-install.pl
,它因此失败:
None of the pre-built vmmon modules for VMware Server is suitable for your
running kernel. Do you want this program to try to build the vmmon module for
your system (you need to have a C compiler installed on your system)? [yes]
Using compiler "/usr/bin/gcc". Use environment variable CC to override.
What is the location of the directory of C header files that match your running
kernel? [/lib/modules/2.6.32-24-generic/build/include]
Extracting the sources of the vmmon module.
Building the vmmon module.
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config0/vmmon-only'
make -C /lib/modules/2.6.32-24-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-24-generic'
CC [M] /tmp/vmware-config0/vmmon-only/linux/driver.o
In file included from /tmp/vmware-config0/vmmon-only/./include/vmware.h:25,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:48:
/tmp/vmware-config0/vmmon-only/./include/vm_basic_types.h:104:7: warning: "__FreeBSD__" is not defined
In file included from /tmp/vmware-config0/vmmon-only/./include/x86.h:20,
from /tmp/vmware-config0/vmmon-only/./include/machine.h:24,
from /tmp/vmware-config0/vmmon-only/linux/driver.h:15,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:49:
/tmp/vmware-config0/vmmon-only/./include/x86apic.h:79:1: warning: "APIC_BASE_MSR" redefined
In file included from /usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/apic.h:11,
from /usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/smp.h:13,
from /usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/mmzone_64.h:12,
from /usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/mmzone.h:4,
from include/linux/mmzone.h:783,
from include/linux/gfp.h:4,
from include/linux/kmod.h:22,
from include/linux/module.h:13,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:12:
/usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/apicdef.h:136:1: warning: this is the location of the previous definition
In file included from /tmp/vmware-config0/vmmon-only/./include/x86.h:21,
from /tmp/vmware-config0/vmmon-only/./include/machine.h:24,
from /tmp/vmware-config0/vmmon-only/linux/driver.h:15,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:49:
/tmp/vmware-config0/vmmon-only/./include/x86desc.h:593:7: warning: "_MSC_VER" is not defined
In file included from /tmp/vmware-config0/vmmon-only/./include/machine.h:24,
from /tmp/vmware-config0/vmmon-only/linux/driver.h:15,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:49:
/tmp/vmware-config0/vmmon-only/./include/x86.h:830:1: warning: "PTE_PFN_MASK" redefined
In file included from /usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/paravirt.h:7,
from /usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/irqflags.h:60,
from include/linux/irqflags.h:57,
from /usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/system.h:11,
from /usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/processor.h:17,
from include/linux/prefetch.h:14,
from include/linux/list.h:6,
from include/linux/module.h:9,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:12:
/usr/src/linux-headers-2.6.32-24-generic/arch/x86/include/asm/pgtable_types.h:182:1: warning: this is the location of the previous definition
In file included from /tmp/vmware-config0/vmmon-only/./include/vcpuset.h:78,
from /tmp/vmware-config0/vmmon-only/./include/modulecall.h:22,
from /tmp/vmware-config0/vmmon-only/./common/vmx86.h:18,
from /tmp/vmware-config0/vmmon-only/linux/driver.h:16,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:49:
/tmp/vmware-config0/vmmon-only/./include/vm_atomic.h:226:7: warning: "_MSC_VER" is not defined
/tmp/vmware-config0/vmmon-only/./include/vm_atomic.h:230:7: warning: "_MSC_VER" is not defined
/tmp/vmware-config0/vmmon-only/./include/vm_atomic.h:298:7: warning: "_MSC_VER" is not defined
/tmp/vmware-config0/vmmon-only/./include/vm_atomic.h:304:7: warning: "_MSC_VER" is not defined
[...]
/tmp/vmware-config0/vmmon-only/./include/vm_atomic.h:1454:7: warning: "_MSC_VER" is not defined
/tmp/vmware-config0/vmmon-only/./include/vm_atomic.h:1587:7: warning: "_MSC_VER" is not defined
In file included from /tmp/vmware-config0/vmmon-only/linux/driver.h:20,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:49:
/tmp/vmware-config0/vmmon-only/./include/compat_wait.h:37:5: warning: "VMW_HAVE_EPOLL" is not defined
/tmp/vmware-config0/vmmon-only/./include/compat_wait.h:43:5: warning: "VMW_HAVE_EPOLL" is not defined
In file included from /tmp/vmware-config0/vmmon-only/linux/driver.h:20,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:49:
/tmp/vmware-config0/vmmon-only/./include/compat_wait.h:60: error: conflicting types for ‘poll_initwait’
include/linux/poll.h:70: note: previous declaration of ‘poll_initwait’ was here
In file included from /tmp/vmware-config0/vmmon-only/./include/vm_asm_x86_64.h:23,
from /tmp/vmware-config0/vmmon-only/./include/vm_asm.h:28,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:52:
/tmp/vmware-config0/vmmon-only/./include/vm_asm_x86.h:430:7: warning: "_MSC_VER" is not defined
/tmp/vmware-config0/vmmon-only/./include/vm_asm_x86.h:676:7: warning: "_MSC_VER" is not defined
/tmp/vmware-config0/vmmon-only/./include/vm_asm_x86.h:716:7: warning: "_MSC_VER" is not defined
In file included from /tmp/vmware-config0/vmmon-only/./include/vm_asm.h:28,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:52:
/tmp/vmware-config0/vmmon-only/./include/vm_asm_x86_64.h:40:7: warning: "_MSC_VER" is not defined
In file included from /tmp/vmware-config0/vmmon-only/linux/vmhost.h:13,
from /tmp/vmware-config0/vmmon-only/linux/driver.c:71:
/tmp/vmware-config0/vmmon-only/./include/compat_semaphore.h:5:27: error: asm/semaphore.h: No such file or directory
/tmp/vmware-config0/vmmon-only/linux/driver.c:146: error: unknown field ‘nopage’ specified in initializer
/tmp/vmware-config0/vmmon-only/linux/driver.c:147: warning: initialization from incompatible pointer type
/tmp/vmware-config0/vmmon-only/linux/driver.c:150: error: unknown field ‘nopage’ specified in initializer
/tmp/vmware-config0/vmmon-only/linux/driver.c:151: warning: initialization from incompatible pointer type
/tmp/vmware-config0/vmmon-only/linux/driver.c: In function ‘LinuxDriver_Ioctl’:
/tmp/vmware-config0/vmmon-only/linux/driver.c:1650: error: ‘struct task_struct’ has no member named ‘euid’
/tmp/vmware-config0/vmmon-only/linux/driver.c:1650: error: ‘struct task_struct’ has no member named ‘uid’
/tmp/vmware-config0/vmmon-only/linux/driver.c:1651: error: ‘struct task_struct’ has no member named ‘fsuid’
/tmp/vmware-config0/vmmon-only/linux/driver.c:1651: error: ‘struct task_struct’ has no member named ‘uid’
/tmp/vmware-config0/vmmon-only/linux/driver.c:1652: error: ‘struct task_struct’ has no member named ‘egid’
/tmp/vmware-config0/vmmon-only/linux/driver.c:1652: error: ‘struct task_struct’ has no member named ‘gid’
/tmp/vmware-config0/vmmon-only/linux/driver.c:1653: error: ‘struct task_struct’ has no member named ‘fsgid’
/tmp/vmware-config0/vmmon-only/linux/driver.c:1653: error: ‘struct task_struct’ has no member named ‘gid’
/tmp/vmware-config0/vmmon-only/linux/driver.c:1670: error: too many arguments to function ‘smp_call_function’
make[2]: *** [/tmp/vmware-config0/vmmon-only/linux/driver.o] Error 1
make[1]: *** [_module_/tmp/vmware-config0/vmmon-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-24-generic'
make: *** [vmmon.ko] Error 2
make: Leaving directory `/tmp/vmware-config0/vmmon-only'
Unable to build the vmmon module.
For more information on how to troubleshoot module-related problems, please
visit our Web site at "http://www.vmware.com/download/modules/modules.html" and
"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".
Execution aborted.
我是否缺少一些必需的内核头包,或者我可以做些什么来解决这个问题?或者是否有人已经知道您无法让这些软件一起工作?
更新
事实证明,要让 VMware Server 1.0.x 正常工作,编译内核模块是不够的,但我需要编译自己的内核。虽然这当然是可行的,但对于这个特殊的需求,我认为这有点太多了。
遵循本教程:
http://ubuntuforums.org/showthread.php?t=1493522
简而言之,这些旧版本的 VMWare 不适用于现代内核。您可以修改 de 接口源并按照hhlp 链接重新编译它,但这不适合胆小的人。
用更技术的话来说:
主要问题是旧版本的 vmware 正在寻找 asm/semaphore.h,这是一个已弃用的系统。现在内核使用 linux/semaphore.h。VMWare 站点中有一个补丁可以解决此问题,但即使在应用该补丁后,您仍需要对源代码进行一些手动更改才能使用它。