VMware 4.5.2 build 8848 on Debian GNU/Linux

Let's start by downloading the latest version of the old VMware 4.5.2 Workstation product, along with the vmware-any-any-update sources used to build the kernel modules.

wget http://download3.vmware.com/software/wkst/VMware-workstation-4.5.2-8848.tar.gz
wget http://ftp.cvut.cz/people/vana/vmware/vmware-any-any-update90.tar.gz

To install the VMware software, use:
   tar zxvf VMware-workstation-4.5.2-8848.tar.gz
   cd vmware-distrib
   su 
   ./vmware-install.pl

The ./vmware-install.pl script prompts you as follows. Note: do not run the /usr/bin/vmware-config.pl script when the ./vmware-install.pl script asks you whether you want to configure VMware for the first time. Instead, we'll use the script ./runme.pl from the vmware-any-any-update90 to configure VMware, which involves building linux kernel modules and loading into the kernel. See below for the next step.

   Creating a new installer database using the tar3 format.
   Installing the content of the package.
   In which directory do you want to install the binary files? 
   [/usr/bin]

   What is the directory that contains the init directories (rc0.d/ to rc6.d/)? 
   [/etc] 

   What is the directory that contains the init scripts? 
   [/etc/init.d] 

   In which directory do you want to install the library files? 
   [/usr/lib/vmware] 

   The path "/usr/lib/vmware" does not exist currently. This program is going to
   create it, including needed parent directories. Is this what you want? [yes] 

   In which directory do you want to install the manual files? 
   [/usr/share/man] 

   In which directory do you want to install the documentation files? 
   [/usr/share/doc/vmware] 

   The path "/usr/share/doc/vmware" does not exist currently. This program is 
   going to create it, including needed parent directories. Is this what you 
   want?  [yes] 

   The installation of VMware Workstation 4.5.2 build-8848 for Linux completed 
   successfully. You can decide to remove this software from your system at any 
   time by invoking the following command: "/usr/bin/vmware-uninstall.pl".

   Before running VMware Workstation for the first time, you need to configure 
   it by invoking the following command: "/usr/bin/vmware-config.pl". 
   Do you want this program to invoke the command for you now? [yes] no

   Enjoy,
   --the VMware team

The Debian package module-init-tools needs to be installed to load the vmmon and vmnet kernel modules for VMware into the linux kernel. If you don't already have module-init-tools installed, install them using:
   apt-get install module-init-tools

If you haven't yet installed the kernel sources and kernel headers corresponding to your running kernel, install them as follows:
  apt-get install kernel-source-2.6.8
  apt-get install kernel-headers-2.6.8-2-386
  apt-get install kernel-package
The kernel-headers package should set up a symlink so that scripts building against it can find the kernel-kbuild scripts, but occasionally that link appears to go AWOL, so if it's missing create it like this, e.g.:
(cd /usr/src/kernel-headers-2.6.8-2 && ln -s ../kernel-kbuild-2.6-3/scripts scripts)

Some of the sources in the vmware-any-any package need the GNU C++ compiler g++ to be installed.
apt-get install g++
If g++ isn't installed, you'll see this error when compiling vmmon-only/common/task.o:
gcc: installation problem, cannot exec `cc1plus': No such file or directory

Now we're ready to configure VMware for the first time. Here we use the script ./runme.pl from the vmware-any-any-update90, which involves building linux kernel modules and loading into the kernel:

   tar zxvf vmware-any-any-update90.tar.gz
   cd vmware-any-any-update90
   su 
   ./runme.pl

The output of the ./runme.pl script should look something like the following. In this case the system I'm running it on is running a Debian distro called Kanotix, so the name of the kernel may look unfamiliar. Please don't be alarmed smile The Kanotix kernel I used at the time had the name 2.6.10-kanotix-8, but if you're running Debian Stable (sarge), the kernel will have a name similar to 2.6.8-2-386. John Zheng recently tested that the 2.6.11-kanotix-11 kernel from Kanotix 2005-3 also works fine, using vmware-any-any-update91.

   Updating /usr/bin/vmware ... No patch needed/available
   Updating /usr/bin/vmnet-bridge ... VMware Workstation 4.5.2 (build-8848) or VMware GSX Server 3.1.0 (build-9089), now patched
   Updating /usr/lib/vmware/bin/vmware-vmx ... VMware Workstation 4.5.2 (build-8848), now patched
   Updating /usr/lib/vmware/bin-debug/vmware-vmx ... VMware Workstation 4.5.2 (build-8848), now patched
   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? [no] yes

   Making sure services for VMware Workstation are stopped.
   Stopping VMware services:
      Virtual machine monitor                                             done

   You must read and accept the End User License Agreement to continue.
   Press enter to display it. 
   Do you accept? (yes/no) yes
   Thank you.

   Trying to find a suitable vmmon module for your running kernel.

   None of the pre-built vmmon modules for VMware Workstation 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.

   Your kernel was built with "gcc" version "3.3.5", while you are trying to 
   use "/usr/bin/gcc" version "3.3.6". This configuration is not recommended 
   and VMware Workstation may crash if you'll continue. Please try to use 
   exactly same compiler as one used for building your kernel. Do you want to 
   go with compiler "/usr/bin/gcc" version "3.3.6" anyway? [no] yes

   What is the location of the directory of C header files that match your 
   running kernel? [/lib/modules/2.6.10-kanotix-8/build/include] 

   Extracting the sources of the vmmon module.
   
   Building the vmmon module.
   
   Building for VMware Workstation 4.5.2 or VMware GSX Server 3.1.0.
   Using 2.6.x kernel build system.
   make: Entering directory `/tmp/vmware-config0/vmmon-only'
   make -C /lib/modules/2.6.10-kanotix-8/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
   make[1]: Entering directory `/usr/src/kernel-headers-2.6.10-kanotix-8'
     CC [M]  /tmp/vmware-config0/vmmon-only/linux/driver.o
     CC [M]  /tmp/vmware-config0/vmmon-only/linux/hostif.o
     CC [M]  /tmp/vmware-config0/vmmon-only/common/cpuid.o
     CC [M]  /tmp/vmware-config0/vmmon-only/common/hash.o
     CC [M]  /tmp/vmware-config0/vmmon-only/common/memtrack.o
     CC [M]  /tmp/vmware-config0/vmmon-only/common/phystrack.o
     CC [M]  /tmp/vmware-config0/vmmon-only/common/task.o
     CC [M]  /tmp/vmware-config0/vmmon-only/common/vmx86.o
     CC [M]  /tmp/vmware-config0/vmmon-only/vmcore/compat.o
     CC [M]  /tmp/vmware-config0/vmmon-only/vmcore/moduleloop.o
     LD [M]  /tmp/vmware-config0/vmmon-only/vmmon.o
     Building modules, stage 2.
     MODPOST
     CC      /tmp/vmware-config0/vmmon-only/vmmon.mod.o
     LD [M]  /tmp/vmware-config0/vmmon-only/vmmon.ko
   make[1]: Leaving directory `/usr/src/kernel-headers-2.6.10-kanotix-8'
   cp -f vmmon.ko ./../vmmon.o
   make: Leaving directory `/tmp/vmware-config0/vmmon-only'
   The module loads perfectly in the running kernel.
   
   Extracting the sources of the vmnet module.
   
   Building the vmnet module.
   
   Building for VMware Workstation 4.5.2 or VMware GSX Server 3.1.0.
   Using 2.6.x kernel build system.
   make: Entering directory `/tmp/vmware-config0/vmnet-only'
   make -C /lib/modules/2.6.10-kanotix-8/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
   make[1]: Entering directory `/usr/src/kernel-headers-2.6.10-kanotix-8'
     CC [M]  /tmp/vmware-config0/vmnet-only/driver.o
     CC [M]  /tmp/vmware-config0/vmnet-only/hub.o
     CC [M]  /tmp/vmware-config0/vmnet-only/userif.o
     CC [M]  /tmp/vmware-config0/vmnet-only/netif.o
     CC [M]  /tmp/vmware-config0/vmnet-only/bridge.o
     CC [M]  /tmp/vmware-config0/vmnet-only/procfs.o
     LD [M]  /tmp/vmware-config0/vmnet-only/vmnet.o
     Building modules, stage 2.
     MODPOST
     CC      /tmp/vmware-config0/vmnet-only/vmnet.mod.o
     LD [M]  /tmp/vmware-config0/vmnet-only/vmnet.ko
   make[1]: Leaving directory `/usr/src/kernel-headers-2.6.10-kanotix-8'
   cp -f vmnet.ko ./../vmnet.o
   make: Leaving directory `/tmp/vmware-config0/vmnet-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.
   
   Do you want to be able to use NAT networking in your virtual machines? [yes] 
   Configuring a NAT network for vmnet8.
   Do you want this program to probe for an unused private subnet? [yes] no
   
   What will be the IP address of your host on the private network? 192.168.203.0
   What will be the netmask of your private network? 255.255.255.0
   
   Do you want to be able to use host-only networking in your virtual machines? 
   [no] yes
   Configuring a host-only network for vmnet1.
   Do you want this program to probe for an unused private subnet? [yes] 
   
   Probing for an unused private subnet (this can take some time)...
   
   The subnet 172.16.10.0/255.255.255.0 appears to be unused.
   
   The following hostonly networks have been defined:
     [should this be blank?] 
   Do you wish to configure another host-only network? [no] 
   Do you want this program to automatically configure your system to allow 
   your virtual machines to access the host's filesystem? [no] 
   
   Starting VMware services:
      Virtual machine monitor                                             done
      Virtual ethernet                                                    done
      Bridged networking on /dev/vmnet0                                   done
      Host-only networking on /dev/vmnet1 (background)                    done
      Host-only networking on /dev/vmnet8 (background)                    done
      NAT service on /dev/vmnet8                                          done
   
   The configuration of VMware Workstation 4.5.2 build-8848 for Linux for this 
   running kernel completed successfully.
   
   You can now run VMware Workstation by invoking the following command: 
   "/usr/bin/vmware".
   
   Enjoy,
   
   --the VMware team

To uninstall VMware, use the script: /usr/bin/vmware-uninstall.pl, but hopefully things went well enough that you don't want to do that just quite yet.
To run VMware, use the command vmware (as a non-root user) which should bring up a graphical window. If you need to run it remotely e.g. on a server with more memory, then TightVNC may come in handy. However you launch it, the first step is to enter your license key under one of the menus. It will save your license key in a file. Note that if VMware hits an internal error, it will sometimes pop up a URL containing your license key, so beware of clicking on URLs presented by VMware while it's running - they may reveal info you would rather keep confidential.
If you've never seen VMware before, you may enjoy watching a commented recording of an installation of Debian inside a VM, which shows all the steps. If you are lucky enough to have a gigabyte or more of physical memory on your system, the Oracle Desktop Data Center (this page is no longer found in 2007) is great for learning about managing a datacenter right on your desktop inside a virtual machine. These virtual machines will work normally when at least 700MB of memory is allocated to them. Too feature-filled for your taste? How about a trip back in time instead, to Oracle release 4.1 for MSDOS 6.22. Or for an entertaining step-by-step guide to installing the RTM ("release to manufacturing") Microsoft Vista, see here.