As part of the aftermath of my Fedora Core 6 laptop getting dropped, I needed to do several re-installs of key apps. One of the more critical ones was VMware Server 1.08. I’m not a big fan of the 2.x version of this product so I’d rather just continue using the 1.x version.
In what has pretty much become the norm with VMware, every kernel upgrade, invariably breaks VMware. Since I had previously been using Fedora Core 6, a deprecated release, I hadn’t had a kernel update in a while, so I didn’t really have to deal with kernel churn. Now back on the bleeding edge with Fedora 10 I’m once again having to keep VMware Server working everytime a new kernel comes out.
So to start, I made sure I had the latest and greatest version of the 1.x VMware Server branch. I prefer to work with RPMs, so I grabbed the RPM version of the package. Upon installing it I ran into the following.
1st install attempt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | ## install vmware rpm % rpm -ivh VMware-server-1.0.8-126538.i386.rpm Preparing... ########################################### [100%] 1:VMware-server ########################################### [100%] # configure vmware % vmware-config.pl ... ... Using 2.6.x kernel build system. make: Entering directory `/tmp/vmware-config10/vmmon-only' make -C /lib/modules/2.6.27.19-170.2.35.fc10.i686/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules make[1]: Entering directory `/usr/src/kernels/2.6.27.19-170.2.35.fc10.i686' CC [M] /tmp/vmware-config10/vmmon-only/linux/driver.o In file included from /tmp/vmware-config10/vmmon-only/./include/machine.h:24, from /tmp/vmware-config10/vmmon-only/linux/driver.h:15, from /tmp/vmware-config10/vmmon-only/linux/driver.c:49: /tmp/vmware-config10/vmmon-only/./include/x86.h:830:1: warning: "PTE_PFN_MASK" redefined In file included from include/asm/paravirt.h:7, from include/asm/irqflags.h:55, from include/linux/irqflags.h:57, from include/asm/system.h:11, from 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-config10/vmmon-only/linux/driver.c:12: include/asm/page.h:22:1: warning: this is the location of the previous definition In file included from /tmp/vmware-config10/vmmon-only/linux/vmhost.h:13, from /tmp/vmware-config10/vmmon-only/linux/driver.c:71: /tmp/vmware-config10/vmmon-only/./include/compat_semaphore.h:5:27: error: asm/semaphore.h: No such file or directory /tmp/vmware-config10/vmmon-only/linux/driver.c:146: error: unknown field ‘nopage’ specified in initializer /tmp/vmware-config10/vmmon-only/linux/driver.c:147: warning: initialization from incompatible pointer type /tmp/vmware-config10/vmmon-only/linux/driver.c:150: error: unknown field ‘nopage’ specified in initializer /tmp/vmware-config10/vmmon-only/linux/driver.c:151: warning: initialization from incompatible pointer type /tmp/vmware-config10/vmmon-only/linux/driver.c: In function ‘LinuxDriver_Ioctl’: /tmp/vmware-config10/vmmon-only/linux/driver.c:1670: error: too many arguments to function ‘smp_call_function’ make[2]: *** [/tmp/vmware-config10/vmmon-only/linux/driver.o] Error 1 make[1]: *** [_module_/tmp/vmware-config10/vmmon-only] Error 2 make[1]: Leaving directory `/usr/src/kernels/2.6.27.19-170.2.35.fc10.i686' make: *** [vmmon.ko] Error 2 make: Leaving directory `/tmp/vmware-config10/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. |
Googling a bit produced this blog post and this wiki post. According to the blog post you need to apply the following patch set to VMware 1.08 to get it to work with the newer 2.6.27 kernels. Here’s a link to the original tarball of the patchset, as well as a link to a local copy I have cached on my site.
Steps to download and unpack the patches
1 2 3 4 5 6 7 8 9 10 11 12 13 | ## download patches % wget http://www.insecure.ws/warehouse/vmware-update-2.6.27-5.5.7-2.tar.gz ## unpack patches % tar zxvf vmware-update-2.6.27-5.5.7-2.tar.gz vmware-update-2.6.27-5.5.7-2/ vmware-update-2.6.27-5.5.7-2/services.sh vmware-update-2.6.27-5.5.7-2/runme.pl vmware-update-2.6.27-5.5.7-2/update.c vmware-update-2.6.27-5.5.7-2/vmblock.tar vmware-update-2.6.27-5.5.7-2/update vmware-update-2.6.27-5.5.7-2/vmmon.tar vmware-update-2.6.27-5.5.7-2/vmnet.tar |
Patch vmware
Now we need to apply the patches to VMware and compile.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | ## apply patches & run vmware-config.pl % cd vmware-update-2.6.27-5.5.7-2 % perl runme.pl Updating /usr/bin/vmware-config.pl ... now patched The file /usr/lib/vmware/modules/source/vmmon.tar that this script was about to install already exists. Overwrite? [yes] The file /usr/lib/vmware/modules/source/vmnet.tar that this script was about to install already exists. Overwrite? [yes] Updating /usr/bin/vmware ... No patch needed/available Updating /usr/bin/vmnet-bridge ... No patch needed/available Updating /usr/lib/vmware/bin/vmware-vmx ... No patch needed/available Updating /usr/lib/vmware/bin-debug/vmware-vmx ... No patch needed/available VMware modules in "/usr/lib/vmware/modules/source" has been updated. Before running VMware for the first time after update, you need to configure it for your running kernel by invoking the following command: "/usr/bin/vmware-config.pl". Do you want this script to invoke the command for you now? [yes] Making sure services for VMware Server are stopped. Stopping VMware services: Virtual machine monitor [ OK ] You must read and accept the End User License Agreement to continue. Press enter to display it. ... ... ### Skipping the EULA! ... ... Configuring fallback GTK+ 2.4 libraries. In which directory do you want to install the mime type icons? [/usr/share/icons] What directory contains your desktop menu entry files? These files have a .desktop file extension. [/usr/share/applications] In which directory do you want to install the application's icon? [/usr/share/pixmaps] /usr/share/applications/vmware-server.desktop: warning: value "vmware-server.png" for key "Icon" in group "Desktop Entry" is an icon name with an extension, but there should be no extension as described in the Icon Theme Specification if the value is not an absolute path /usr/share/applications/vmware-console-uri-handler.desktop: warning: value "vmware-server.png" for key "Icon" in group "Desktop Entry" is an icon name with an extension, but there should be no extension as described in the Icon Theme Specification if the value is not an absolute path Trying to find a suitable vmmon module for your running kernel. 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.27.19-170.2.35.fc10.i686/build/include] Extracting the sources of the vmmon module. Building the vmmon module. Building for VMware Server 1.0.0. Using 2.6.x kernel build system. make: Entering directory `/tmp/vmware-config10/vmmon-only' make -C /lib/modules/2.6.27.19-170.2.35.fc10.i686/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules make[1]: Entering directory `/usr/src/kernels/2.6.27.19-170.2.35.fc10.i686' CC [M] /tmp/vmware-config10/vmmon-only/linux/driver.o CC [M] /tmp/vmware-config10/vmmon-only/linux/driverLog.o CC [M] /tmp/vmware-config10/vmmon-only/linux/hostif.o /tmp/vmware-config10/vmmon-only/linux/hostif.c: In function ‘HostIF_SetFastClockRate’: /tmp/vmware-config10/vmmon-only/linux/hostif.c:3441: warning: passing argument 2 of ‘send_sig’ discards qualifiers from pointer target type CC [M] /tmp/vmware-config10/vmmon-only/common/comport.o CC [M] /tmp/vmware-config10/vmmon-only/common/cpuid.o CC [M] /tmp/vmware-config10/vmmon-only/common/hash.o CC [M] /tmp/vmware-config10/vmmon-only/common/memtrack.o CC [M] /tmp/vmware-config10/vmmon-only/common/phystrack.o CC [M] /tmp/vmware-config10/vmmon-only/common/task.o cc1plus: warning: command line option "-Werror-implicit-function-declaration" is valid for C/ObjC but not for C++ cc1plus: warning: command line option "-Wdeclaration-after-statement" is valid for C/ObjC but not for C++ cc1plus: warning: command line option "-Wno-pointer-sign" is valid for C/ObjC but not for C++ cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++ In file included from /tmp/vmware-config10/vmmon-only/common/task.c:1195: /tmp/vmware-config10/vmmon-only/common/task_compat.h: In function ‘void Task_Switch_V45(VMDriver*, Vcpuid)’: /tmp/vmware-config10/vmmon-only/common/task_compat.h:2667: warning: ‘sysenterState.SysenterStateV45::validEIP’ may be used uninitialized in this function /tmp/vmware-config10/vmmon-only/common/task_compat.h:2667: warning: ‘sysenterState.SysenterStateV45::cs’ may be used uninitialized in this function /tmp/vmware-config10/vmmon-only/common/task_compat.h:2667: warning: ‘sysenterState.SysenterStateV45::rsp’ may be used uninitialized in this function /tmp/vmware-config10/vmmon-only/common/task_compat.h:2667: warning: ‘sysenterState.SysenterStateV45::rip’ may be used uninitialized in this function CC [M] /tmp/vmware-config10/vmmon-only/common/vmciContext.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmciDatagram.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmciDriver.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmciDs.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmciGroup.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmciHashtable.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmciProcess.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmciResource.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmciSharedMem.o CC [M] /tmp/vmware-config10/vmmon-only/common/vmx86.o CC [M] /tmp/vmware-config10/vmmon-only/vmcore/compat.o CC [M] /tmp/vmware-config10/vmmon-only/vmcore/moduleloop.o LD [M] /tmp/vmware-config10/vmmon-only/vmmon.o Building modules, stage 2. MODPOST 1 modules WARNING: modpost: module vmmon.ko uses symbol 'init_mm' marked UNUSED CC /tmp/vmware-config10/vmmon-only/vmmon.mod.o LD [M] /tmp/vmware-config10/vmmon-only/vmmon.ko make[1]: Leaving directory `/usr/src/kernels/2.6.27.19-170.2.35.fc10.i686' cp -f vmmon.ko ./../vmmon.o make: Leaving directory `/tmp/vmware-config10/vmmon-only' The module loads perfectly in the running kernel. Do you want networking for your virtual machines? (yes/no/help) [yes] Configuring a bridged network for vmnet0. Your computer has multiple ethernet network interfaces available: eth0, pan0, wlan0. Which one do you want to bridge to vmnet0? [eth0] The following bridged networks have been defined: . vmnet0 is bridged to eth0 Do you wish to configure another bridged network? (yes/no) [no] Do you want to be able to use NAT networking in your virtual machines? (yes/no) [yes] Configuring a NAT network for vmnet8. Do you want this program to probe for an unused private subnet? (yes/no/help) [yes] Probing for an unused private subnet (this can take some time)... The subnet 172.16.244.0/255.255.255.0 appears to be unused. The following NAT networks have been defined: . vmnet8 is a NAT network on private subnet 172.16.244.0. Do you wish to configure another NAT network? (yes/no) [no] Do you want to be able to use host-only networking in your virtual machines? [yes] Configuring a host-only network for vmnet1. Do you want this program to probe for an unused private subnet? (yes/no/help) [yes] Probing for an unused private subnet (this can take some time)... The subnet 172.16.124.0/255.255.255.0 appears to be unused. The following host-only networks have been defined: . vmnet1 is a host-only network on private subnet 172.16.124.0. Do you wish to configure another host-only network? (yes/no) [no] Extracting the sources of the vmnet module. Building the vmnet module. Building for VMware Server 1.0.0. Using 2.6.x kernel build system. make: Entering directory `/tmp/vmware-config10/vmnet-only' make -C /lib/modules/2.6.27.19-170.2.35.fc10.i686/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules make[1]: Entering directory `/usr/src/kernels/2.6.27.19-170.2.35.fc10.i686' CC [M] /tmp/vmware-config10/vmnet-only/driver.o CC [M] /tmp/vmware-config10/vmnet-only/hub.o CC [M] /tmp/vmware-config10/vmnet-only/userif.o CC [M] /tmp/vmware-config10/vmnet-only/netif.o CC [M] /tmp/vmware-config10/vmnet-only/bridge.o CC [M] /tmp/vmware-config10/vmnet-only/filter.o CC [M] /tmp/vmware-config10/vmnet-only/procfs.o CC [M] /tmp/vmware-config10/vmnet-only/smac_compat.o CC [M] /tmp/vmware-config10/vmnet-only/smac_linux.x386.o LD [M] /tmp/vmware-config10/vmnet-only/vmnet.o Building modules, stage 2. MODPOST 1 modules WARNING: modpost: missing MODULE_LICENSE() in /tmp/vmware-config10/vmnet-only/vmnet.o see include/linux/module.h for more information CC /tmp/vmware-config10/vmnet-only/vmnet.mod.o LD [M] /tmp/vmware-config10/vmnet-only/vmnet.ko make[1]: Leaving directory `/usr/src/kernels/2.6.27.19-170.2.35.fc10.i686' cp -f vmnet.ko ./../vmnet.o make: Leaving directory `/tmp/vmware-config10/vmnet-only' The module loads perfectly in the running kernel. Please specify a port for remote console connections to use [904] WARNING: VMware Server has been configured to run on a port different from the default port. Remember to use this port when connecting to this server. Stopping xinetd: [FAILED] Starting xinetd: [ OK ] Configuring the VMware VmPerl Scripting API. Building the VMware VmPerl Scripting API. Using compiler "/usr/bin/gcc". Use environment variable CC to override. Installing the VMware VmPerl Scripting API. The installation of the VMware VmPerl Scripting API succeeded. Generating SSL Server Certificate In which directory do you want to keep your virtual machine files? [/var/lib/vmware/Virtual Machines] The path "/var/lib/vmware/Virtual Machines" does not exist currently. This program is going to create it, including needed parent directories. Is this what you want? [yes] Please enter your 20-character serial number. Type XXXXX-XXXXX-XXXXX-XXXXX or 'Enter' to cancel: You cannot power on any virtual machines until you enter a valid serial number. To enter the serial number, run this configuration program again, or choose 'Help > Enter Serial Number' in the virtual machine console. Starting VMware services: Virtual machine monitor [ OK ] Virtual ethernet [ OK ] Bridged networking on /dev/vmnet0 [ OK ] Host-only networking on /dev/vmnet1 (background) [ OK ] Host-only networking on /dev/vmnet8 (background) [ OK ] NAT service on /dev/vmnet8 [ OK ] The configuration of VMware Server 1.0.8 build-126538 for Linux for this running kernel completed successfully. |
And with that VMware server should be installed on Fedora 10!
