Translation(s): none

(!) /Discussion


VMware is a commercial PC emulator running on i386 compatible cpus. It allows you to run any x86 compatible OS in a kind of 'sandbox' - inside the VMware virtual machine you can run other operating systems like Windows or some other version of Linux. Both Windows and a Linux versions are available.

VMware is not a true emulator, it doesn't emulate a CPU like Bochs does, it wraps CPU commands around... It does emulate various hardware devices like network-, graphic- and sound cards.

VMware Installation Instructions

VMware Player 4 and VMware Workstation 8

VMware Player and Workstation can be easily installed by downloading the required bundle and executing for example:

sh VMware-Player-4.0.2-591240.x86_64.txt

Please be aware that VMware Workstation 8 and Player 4 only support kernels up to 3.0. Any later requires patching of the VMware modules. Luckily some fine folk have made it rather easy to do this:

Download the correct tar.gz file for your setup to any location and do the following as root:

1. Extract the archive

tar -xvf [filename].tar.gz

2. Make the extracted shell script, which will do all the hard work for you executable and run it.

chmod +x [scriptname].sh

./[scriptname].sh

You should now be able to run your chosen VMware product on kernels > 3.0.

VMware Player 5 and VMware Workstation 9

VMware Workstation 9 and Player 5 both support kernels up to 3.9. Any later requires patching of the VMware modules. The reason is that 3.10 dropped the call create_proc_entry() and replaced it with proc_create().

To patch the modules, do as follows as a user:

$ cd /tmp
$ curl -O http://pkgbuild.com/git/aur-mirror.git/plain/vmware-patch/vmblock-9.0.2-5.0.2-3.10.patch
$ curl -O http://pkgbuild.com/git/aur-mirror.git/plain/vmware-patch/vmnet-9.0.2-5.0.2-3.10.patch
$ cd /usr/lib/vmware/modules/source

Then, as root:

# tar -xvf vmblock.tar
# tar -xvf vmnet.tar
# patch -p0 -i /tmp/vmblock-9.0.2-5.0.2-3.10.patch
# patch -p0 -i /tmp/vmnet-9.0.2-5.0.2-3.10.patch
# tar -cf vmblock.tar vmblock-only
# tar -cf vmnet.tar vmnet-only
# rm -r vmblock-only
# rm -r vmnet-only
# vmware-modconfig --console --install-all

License Keys

/usr/lib/vmware/bin/vmware-vmx --new-sn 123-123-123-123...123

VMware on amd64

aptitude install linux-headers-`uname -r` libx11-6 libx11-dev x-window-system-core x-window-system xspecs libxtst6 psmisc build-essential ia32-libs

Running vmware-netcfg (Virtual Network Editor) with VMware Player

VMware player by default does not give you the greater control over your network that vmware-netcfg used in VMware Workstation can provide.

The following commands will allow you to run vmware-netcfg

 cd /usr/lib/vmware/bin

ln -s /usr/lib/vmware/bin/appLoader vmware-netcfg

ln -s /usr/lib/vmware/bin/vmware-netcfg /usr/bin/vmware-netcfg

Credit to Michael Gr.

VMware, Debian Kernel Upgrade

apt-get update
apt-get install linux-headers-$(uname -r)
/usr/bin/vmware-config.pl

http://lucasmanual.com/out/Debian-vmware-windows-xp.jpg

VMware, Etch to Lenny upgrade

aptitude update
aptitude install gcc-4.1

export CC=/usr/bin/gcc-4.1
echo $CC

Vmware Console 2.5 and Squeeze

The VMWare Remote Console must be obtained from a running VMWare Server installation. That's the official way to download it. And it only supports Firefox up till version 3.5.

But you can also install it as a local application and use it that way. For this you will have to unzip the XPI file, which actually is a simple ZIP file. Maybe you'll have to rename the file ending, so that your ZIP application recognizes it.

You only need the content of the plugins directory in the ZIP file. Probably the best place to put it in is /opt/vmrc/.

Afterward you'll have to run it with a user, who has write access to the files and the directory. This is only necessary for the first time, because it will update its relative links to the libraries. The links will get updated depending on your current working directory and the method you start the program. To ensure that it will store the absolute path start it from the root directory with the full path.

cd /
/opt/vmrc/vmware-vmrc

The VMWare Remote Console can also connect to a VSPhere Server and its virtual machines. If you try to connect to a stopped virtual machine, then it will be automatically started.

To start the VMWare Remote Console simply use the following command.

/opt/vmrc/vmware-vmrc

There is a nice icon in /opt/vmrc/share/icons/hicolor/48x48/apps/vmware-vmrc.png for a start menu entry.

In order to solve issue when VMWare Remote Console doesn't grab the mouse, please edit file
~/.mozilla/firefox/YOURPROFILE.default/extensions/VMwareVMRC@vmware.com/plugins/lib/wrapper-gtk24.sh
and as a first line after the comments enter
export VMWARE_USE_SHIPPED_GTK=yes
In order to solve issue when the arrow and other extended keys are not working in VMWare Remote Console, please edit (or create) file
~/.vmware/config
and add there line
xkeymap.nokeycodeMap = true

# Switch to keysym mapping.
xkeymap.noKeycodeMap = "TRUE"

# If the above solely does not help, then specify each wrong mapped keycode.
# AltGr keycode
xkeymap.keycode.108 = 0x138

Installing VMware Server 2 on Lenny

Howto install VMware Server 2 on Debian Lenny. Since kernel modules for the Lenny Kernel are not shipped with VMware server 2, the kernel modules need to be build. However, there is a bug in the file vmware-config.pl. See here for more details. The patch available for Ubuntu works for Debian Lenny too. You can choose to follow this instructions to install correctly VMWare Server 2.0.x into Debian Lenny. Before you install you need ensure that the following dependencies are installed into your system:

binutils
gcc
libc6
libc6-dev
make
linux-headers-2.6.26-2-amd64 (or other version according to your installed kernel. Use "uname -a" to get you kernel version)
psmisc

Download vmware server 2 from VMware - Official Site and register to obtain your licence key.

Unzip the tar.gz

tar -zxvf VMware-server-2.0.x-xxx.tar.gz
cd vmware-server-distrib/

let the installer use gcc 4.1 and not gcc 4.3 and run the installer

export CC=/usr/bin/gcc-4.1
./vmware-install.pl

Probably you will receive an error in building the vsock module:

...
Unable to make a vsock module that can be loaded in the running kernel:
insmod: error inserting '/tmp/vmware-config5/vsock.o'
...

To avoid this problem and build correctly the vsock module, you will need to create and apply a patch. Create a vmware-config.pl-patch

nano vmware-config.pl.patch

paste the following text into the editor:

--- /usr/bin/vmware-config.pl.orig      2008-11-28 12:06:35.641054086 +0100
+++ /usr/bin/vmware-config.pl   2008-11-28 12:30:38.593304082 +0100
@@ -4121,6 +4121,11 @@
     return 'no';
   }
 
+  if ($name eq 'vsock') {
+    print wrap("VMWare config patch VSOCK!\n");
+    system(shell_string($gHelper{'mv'}) . ' -vi ' . shell_string($build_dir . '/../Module.symvers') . ' ' . shell_string($build_dir . '/vsock-only/' ));
+  }
+
   print wrap('Building the ' . $name . ' module.' . "\n\n", 0);
   if (system(shell_string($gHelper{'make'}) . ' -C '
              . shell_string($build_dir . '/' . $name . '-only')
@@ -4143,6 +4148,10 @@
     if (try_module($name, $build_dir . '/' . $name . '.o', 0, 1)) {
       print wrap('The ' . $name . ' module loads perfectly into the running kernel.'
                  . "\n\n", 0);
+      if ($name eq 'vmci') {
+       print wrap("VMWare config patch VMCI!\n");
+       system(shell_string($gHelper{'cp'}) . ' -vi ' . shell_string($build_dir.'/vmci-only/Module.symvers') . ' ' . shell_string($build_dir . '/../'));
+      } 
       remove_tmp_dir($build_dir);
       return 'yes';
     }

save the file and apply the patch:

patch /usr/bin/vmware-config.pl vmware-config.pl.patch

now you can re-run the installed vmware-config.pl and build correctly the vsock module:

cd /usr/bin/
./vmware-config.pl

Once you are done with no errors, you can check that all vmware's modules are loaded correctly:

# lsmod | grep v
vmnet                  43460  13 
vsock                  26032  0 
vmci                   52904  1 vsock
vmmon                  72144  0 

VMWare server 2 web interface problems

People find that that the Vmware Server 2 web interface stops responding properly (Browsing the datastore, adding hardware to a virtual machine). Perhaps this problems are caused by Java runtime environment (JRE) shipped with VMware which can be found in the directory vmware/webAccess/java/jre1.5.0_15. The JRE in this directory can be updated with a newer one. However, the file vmware/webAccess/java/jre1.5.0_15/bin/webAccess needs to be retained. Otherwise the web interface would not work. See Constant NullPointerException: Operation failed. errors in web UI.

Scripts to start and stop the VMWare server 2 Web Interface

If you don't manage your virtual machines everyday you should consider to free you ram by turning off the Web Interface.

# nano vmware-stopWebAccess 

and paste the following code

# Web Access configuration
webAccess="/usr/lib/vmware/webAccess/java/jre1.5.0_15/bin/webAccess"
watchdog="/usr/bin/vmware-watchdog"
webAccessServiceName="VMware Virtual Infrastructure Web Access"
CATALINA_HOME="/usr/lib/vmware/webAccess/tomcat/apache-tomcat-6.0.16"
webAccessOpts="-client -Xmx64m -XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=30 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-logging-api.jar -Dcatalina.base=$CATALINA_HOME -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_HOME/temp org.apache.catalina.startup.Bootstrap"

echo 'Shut down the webAccess watchdog...'
$watchdog -k webAccess > /dev/null 2>&1
echo 'ok'
echo 'Shut down webAccess itself...'
$webAccess $webAccessOpts stop > /dev/null 2>&1
echo 'ok'
echo 'killall webAcces...'
killall webAccess > /dev/null 2>&1
echo 'ok'

echo '   '"$webAccessServiceName"' OFF'

Watch out that the variable webAccessOpts ' must be written on a single line! and if you have installed a vmware's 64 bit version you need to set webAccess variable to /usr/lib64/vmware/webAccess/java/jre1.5.0_15/bin/webAccess"

Save and exit. Now you will create the startup script

# nano vmware-startWebAccess 

and again paste the following code

# Web Access configuration
webAccess="/usr/lib/vmware/webAccess/java/jre1.5.0_15/bin/webAccess"
watchdog="/usr/bin/vmware-watchdog"
webAccessServiceName="VMware Virtual Infrastructure Web Access"
CATALINA_HOME="/usr/lib/vmware/webAccess/tomcat/apache-tomcat-6.0.16"
webAccessOpts="-client -Xmx64m -XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=30 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-logging-api.jar -Dcatalina.base=$CATALINA_HOME -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_HOME/temp org.apache.catalina.startup.Bootstrap"

$watchdog -s webAccess -u 30 -q 5 "$webAccess $webAccessOpts start" > /dev/null 2>&1 &
echo '   '"$webAccessServiceName"' ON'

Watch out that the variable webAccessOpts ' must be written on a single line! and if you have installed a vmware's 64 bit version you need to set webAccess variable to /usr/lib64/vmware/webAccess/java/jre1.5.0_15/bin/webAccess"

Save and exit. Now make them executable

# chmod +x vmware-stopWebAccess 
# chmod +x vmware-startWebAccess 

and you are done!

Installing VMware Server 2 on Squeeze

In general the installation is similar to that in Lenny, with the following differences:

Instructions:

  1. Get the VMWare Server archive (at least version 2.0.2) and your license. Hopefully the issues will be fixed in later versions.
  2. Install the prerequisites (including kernel-headers for your version, and gcc version 4.3).
  3. Get the patches archive from http://www.troublenow.org/files/vmware/vmware2.0.2-on-debian6.0.1.tar.gz (A different source for a patch is http://codebin.cotescu.com/vmware/vmware-server-2.0.x-kernel-2.6.3x-install.sh, however this patch has failed to compile in our tests)

  4. Unzip the VMWare archive, install VMWare, but do not configure it yet, i. e. answer the question to run "vmware-config.pl" with "no".

  5. Patch vmware-config.pl using a file from the patch archive (choose the directory where you installed the binaries, if not "/usr/bin").

cd /usr/bin
patch vmware-config.pl < vmware-config.pl.diff
  1. Patch the module sources using another file from the patch archive (choose the directory where you installed the libraries, if not "/usr/lib").

cd /usr/lib/vmware/modules/source
for i in *.tar ; do tar xpf $i ; done
for i in 00-vmware-2.6.32_functional.diff 01-vmware-2.6.32_cosmetic.diff 02-vmnet-include.diff; do patch -p1 < $i; done
for i in vmci vmmon vmnet vsock ; do tar cpf $i.tar $i-only ; done
  1. Now run vmware-config.pl.

Some sources say a reboot is necessary in order to get bridged networking to work.

After that the installation is complete, but a bug related to Tomcat/Java may prevent the web admin interface at http://localhost:8222 from being operational. If you get the message "Error 503: Service unavailable", then continue patching.

[Note: If you want to learn more about this issue, see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=572048. As Java is embedded in VMWare, switching to a current version is no option, neither should be disabling IPv6.]

  1. IPv6 must be disabled for the "?WebAccess" service only. Create a patch file named "vmware.patch" (see the "Lenny" section for how to do this using an editor):

--- vmware.orig 2010-05-24 17:05:09.251864323 +0200
+++ vmware      2010-05-24 21:40:37.563871986 +0200
@@ -675,7 +675,7 @@
 watchdog="${vmdb_answer_BINDIR}/vmware-watchdog"
 webAccessServiceName="VMware Virtual Infrastructure Web Access"
 CATALINA_HOME="${vmdb_answer_LIBDIR}/webAccess/tomcat/apache-tomcat-6.0.16"
-webAccessOpts="-client -Xmx64m -XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=30 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-logging-api.jar -Dcatalina.base=$CATALINA_HOME -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_HOME/temp org.apache.catalina.startup.Bootstrap"
+webAccessOpts="-Djava.net.preferIPv4Stack=true -client -Xmx64m -XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=30 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-logging-api.jar -Dcatalina.base=$CATALINA_HOME -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$CATALINA_HOME/temp org.apache.catalina.startup.Bootstrap"
 
 #
 # Utilities
  1. Patch /etc/init.d/vmware, and restart the daemon.

cd /etc/init.d
patch < vmware.patch
./vmware-mgmt restart 

Done.

Converting to vmware

You are able to convert any existing operating system to a virtual environment as a guest on Debian host using VMvareConverter.

Windows NT,2000

If you have existing windows nt domain and you would like to convert it to vmware on Debian Host you can do it in the following way.

  1. Install vmconverter on a windows nt, and restart
  2. Click convert and follow the instructions. Select the VMware server 1.0.x, select destination and start converting.
  3. When done, on Debian host Select the vmware image and start the virtual machine.
  4. If your network card is not detected you will have to remove the one that is in there and add "AMD Family of Network Cards".
  5. You will be asked for a Windows NT CD, to get the drivers.(If you can't read the cd, on host with k3b you can create iso image of the cd and point the cd settings of the guest vmware to the .iso image. VMware guest will be able to read the iso image.)
  6. When you network card is working you are good to go.
  7. You can select to power up when Debian Host is on to simulate production server environment.

Windows XP,2003,Vista

When you are converting existing windows you might need to activate you installation again. Windows will detect different hardware and will prompt you for a new activation/activation key.

Windows SQL Server

Using VMware

List virtual machines

Note. that "-T server" always stays the same, and you are not suppose to replace that with any servers name

vmrun -T server -h http://localhost:8222/sdk -u root -p mysecretpassword list

Example:

vmrun -T server -h http://localhost:8222/sdk -u root -p mypassword list
Total running VMs: 3
[standard] server5/server5.vmx
[standard] server6/server6.vmx
[standard] server7/server7.vmx

Force restart vmware guest

If the machine is not responding and the web interface is not allowing you to restart the guest you can use command list to get vmware name then use the vmrun to stop then start the guest. (aka. restart guest)

vmrun -T server -h http://localhost:8222/sdk -u root -p mysecretpass stop "[standard] guestservername/guestserver.vmx"

Example

vmrun -T server -h http://localhost:8222/sdk -u root -p mypassword stop "[standard] server5/server5.vmx"
vmrun -T server -h http://localhost:8222/sdk -u root -p mypassword start "[standard] server5/server5.vmx"

Troubleshooting

gcc and cc1plus error

gcc-4.1: error trying to exec 'cc1plus': execvp: No such file or directory

If you are using sid, then the default compiler version might be higher than the one used to compile your kernel. The corresponding gcc-packages are installed automatically for the appropriate kernel versions (so, if you have 2.6.24 compiled with gcc-4.1, and apt has gcc-4.3, you will usually still have gcc-4.1), but the C++ compiler versions are not synced automatically, so you will also need to install g++-4.1

apt-get install g++-4.1{,-multilib}

Also take care not to have overridden your environment to use a different CC version.

env | grep CC

should return nothing.

VMware Server on Lenny

After starting, VMware ends up with

vmware: ../../src/xcb_lock.c:77: _XGetXCBBuffer: Zusicherung »((int) ((xcb_req) - (dpy->request)) >= 0)« nicht erfüllt.

A workaround for this is to use the libX11 from Debian Etch for VMware (adept /usr/local/lib/vmware/lib to the directory used for vmware-lib at installation)

cd /tmp
wget http://ftp.de.debian.org/debian/pool/main/libx/libx11/libx11-6_1.0.3-7_i386.deb
dpkg -x libx11-6_1.0.3-7_i386.deb .
sudo mkdir /usr/local/lib/vmware/lib/libX11.so.6.2.0
sudo cp usr/lib/libX11.so.6.2.0 /usr/local/lib/vmware/lib/libX11.so.6.2.0/

In order for VMware to use that libX11, it has to be added to /usr/local/lib/vmware/lib/wrapper-gtk24.sh. After the lines 63-65

  vm_append_lib 'libfreetype.so.6'
  vm_append_lib 'libXft.so.2'
  vm_append_lib 'libXrender.so.1'

the line

  vm_append_lib 'libX11.so.6.2.0'

needs to be added.
If VMware wrapper script still makes use of the lenny libX11, it can be forced to use its own GTK libraries

export VMWARE_USE_SHIPPED_GTK='force' && /path/to/vmware/vmware &

VMware on Linux Kernel > 2.6.25

Current versions of VMware (e.g. Server 1.06) won't run out of the box on systems with kernels higher than 2.6.25. While building the VMware modules, vmware-config.pl ends up with

/tmp/vmware-config1/vmmon-only/linux/driver.c:146: error: unknown field 'nopage' specified in initializer
/tmp/vmware-config1/vmmon-only/linux/driver.c:147: warning: initialization from incompatible pointer type
/tmp/vmware-config1/vmmon-only/linux/driver.c:150: error: unknown field 'nopage' specified in initializer
/tmp/vmware-config1/vmmon-only/linux/driver.c:151: warning: initialization from incompatible pointer type

A workaround for this could be using vmware-any-any-update117c. For more information see:
http://communities.vmware.com/thread/164996?tstart=15
http://groups.google.com/group/vmkernelnewbies/web/how-to-install-vmware-in-2-6-26-linux-kernel

The latest vmware-any-any-update (117d for example) can be incompatible with VMware Server 1.0.x (1.0.8 for example). There are patches for original vmmon and vmnet sources those solve the VMware modules compilation problem on Debian Lenny 2.6.26-1:
http://www.paldo.org/paldo/sources/VMware-server/VMware-server-vmmon-1.0.6-91891-2.6.26-1.patch.bz2
http://www.paldo.org/paldo/sources/VMware-server/VMware-server-vmnet-1.0.6-91891-2.6.26-1.patch.bz2
Taken from: http://lenrek.wordpress.com/2008/08/09/vmware-server-106-for-linux-kernel-2626x/

vmware server 1.0.3 and Debian stable 2.6.18-5

(vmware:16003): libgnomevfs-WARNING **: Cannot load module `/usr/lib/gnome-vfs-2.0/modules/libfile.so' (/usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6))

export VMWARE_USE_SHIPPED_GTK=yes

vmware &

rename the original library "libgcc" provided by vmware to keep a backup copy:
cd /usr/lib/vmware/lib/libgcc_s.so.1/
mv libgcc_s.so.1 libgcc_s.so.1.old
and put a link to the library provided by Debian:
ln -s /lib/libgcc_s.so.1

See also