Using VMWare player on a (H)LFS system.

Jaap Struyk japie at
Mon Oct 31 09:51:58 PST 2005

AUTHOR: Jaap Struyk <japie at>

DATE: 2005-10-31

SYNOPSIS: Using VMWare player on a (H)LFS system.

DESCRIPTION: Using Windows XP terminal server on a linux server without running X.
	     (X-windows is needed for installation of guest OS!!!)

SYSTEM: x86, 32bit, 2.6 kernel, Glibc-2.3.x.


  * qemu-img (part of qemu)

  * vmplayer (a free (but closed) player for vmware virtual machines)
  * Xvfb (part of Xorg or Xfree86)

  * Windows XP Professional
  * rdesktop
  * TightVNC


        1. Introduction
        2. Installation
        3. Configuration
        4. Install guest OS
        5. Setup server
        6. Notes
        7. References


Once in a while there still the need for access to an Windows system, 
for testing a webpage in IE, running some special application, test something
or yust to enjoy the fun of screwing something up.
In the past there was a free version of vmware for personal use, but that changed
and since running bochs is somewhat cpu consuming thats no option for an
production enviroment.
Now there is a free vmware player (still closed source unfortunatly) wich can
play machines created by a (non free) vmware version, but it's not that hard
to create your own machine with a free tool and an text editor...

First we setup our vm on a machine with X, and later on we move it to a server
without X, so we can use it as terminal server.


We start with installing qemu, since we need qemu-img to create our virtual disk.
It's a prety big build, but we only need qemu-img, so you could only install that.

Next we install the vmware player with ./ (after unpacking)
The installer will ask some questions, for me the defaults seemed fine.
On networking answer yes (default), I answerd no to NAT and host-only.
Above is enough to use a private adress in your virtual machine.


Create the virtual drive (guess what 2G means ;)

	qemu-img create -f vmdk WindowsXP.vmdk 2G

Create the virtual machine config file WindowsXP.vmx 

	config.version = "8"
	virtualHW.version = "3"
	ide0:0.present = "TRUE"
	ide0:0.filename = "WindowsXP.vmdk"
	memsize = "128"
	MemAllowAutoScaleDown = "FALSE"
	ide1:0.present = "TRUE"
	ide1:0.autodetect = "TRUE"
	ide1:0.fileName = "auto detect"
	ide1:0.deviceType = "cdrom-raw"
	floppy0.present = "FALSE"
	ethernet0.present = "TRUE"
	usb.present = "FALSE"
	sound.present = "FALSE"
	displayName = "WindowsXP"
	guestOS = "winXPPro"
	nvram = "WindowsXP.nvram"
	MemTrimRate = "-1"
	ide0:0.redo = ""
	ethernet0.addressType = "generated"
	uuid.location = "56 4d 5c cc 3d 4a 43 29-55 89 5c 28 1e 7e 06 58"
	uuid.bios = "56 4d 5c cc 3d 4a 43 29-55 89 5c 28 1e 7e 06 58"
	uuid.action = "create"
	ethernet0.generatedAddress = "00:0c:29:7e:06:58"
	ethernet0.generatedAddressOffset = "0"
	tools.syncTime = "TRUE"
	ide1:0.startConnected = "TRUE"
	checkpoint.vmState = "WindowsXP.vmss"

Create the vmplayer config file .vmware/preferences

	pref.grabOnKeyPress = "FALSE"
	pref.autoFitFullScreen = "fitHostToGuest"
	pref.view.navBar.type = "favorites"
	pref.mruDest0.present = "FALSE"
	pref.mruDest0.destString = ""
	pref.mruDest0.user = ""
	pref.mruDest1.present = "FALSE"
	pref.mruDest1.destString = ""
	pref.mruDest1.user = ""
	pref.mruDest2.present = "FALSE"
	pref.mruDest2.destString = ""
	pref.mruDest2.user = ""
	pref.mruDest3.present = "FALSE"
	pref.mruDest3.destString = ""
	pref.mruDest3.user = ""
	pref.mruDest4.present = "FALSE"
	pref.mruDest4.destString = ""
	pref.mruDest4.user = ""
	pref.mruDest5.present = "FALSE"
	pref.mruDest5.destString = ""
	pref.mruDest5.user = ""
	pref.mruDest6.present = "FALSE"
	pref.mruDest6.destString = ""
	pref.mruDest6.user = ""
	pref.mruDest7.present = "FALSE"
	pref.mruDest7.destString = ""
	pref.mruDest7.user = ""
	webUpdate.checkLast = "1130514727"
	webUpdate.lastCheck.status = "err_connect"
	pref.vmplayer.exit.vmAction = "poweroff"
	pref.vmplayer.webUpdateOnStartup = "FALSE"
	pref.vmplayer.deviceBarToplevel = "FALSE"
	pref.vmplayer.showStatusBar = "FALSE"
	xinfo.noDGA = "TRUE"
	hint.xinfo.noDGA = "FALSE"
	hint.mks.noXKB = "FALSE"
	gui.fullScreenResize = "FALSE"
	hint.svgax.noDGAisXFree86 = "FALSE"


Start the player with

	vmplayer WindowsXP.vmx
If you get a question on startup regarding an "identifyer", say always create one.
Now it's time to install Windows XP, with that your on your own, luckely no drivers needed.
Yust make sure you add your users, give them passwords and enable terminal services.
If all went well you have a shiny fresh XP. (personaly I gave a static IP, do what you want)
Test it with

	rdesktop -u $USER -p $PASSWORD -g 800x600 -a 16 $WINXP_IP_ADRESS

If all is working well it's time to move the setup to our server.
Off-course you can leave it at your workstation if you are happy so far.


Next we login to our server and create the vmware user

	groupadd -g 66 vmware
	useradd -c 'vmWare user' -d /srv/vmware -g vmware -s /bin/bash -u 66 vmware
	mkdir /srv/vmware
	mkdir /srv/vmware/.vmware

Copy all the needed files to the server

Install vmplayer on your server, same way as above.

Make sure you have Xvfb installed, if you came this far that won't be a problem.

Set proper rights

	chown -R vmware.vmware /srv/vmware

And fire up the thing

	su - vmware -c "PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin nice -n 10 Xvfb :1012 -screen 0 640x480x8 -fbdir /srv/vmware &"
	su - vmware -c "PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin DISPLAY=:1012 vmplayer '/srv/vmware/WindowsXP.vmx' &"


The identifyer thingy can be a problem, if a virtual machine is moved vmplayer will complain.
Since all interaction between vmplayer and the user is via X you will not know that.
Monitor your system with top, the vmplayer will consume a lot off cpu when Windows is starting,
if you don't see that there is a problem, check your syslog and the logfile in /srv/vmware
A workaround for this is to do the first start on your server via vnc, so you can watch vmplayer
starting, if that goes fine (without interaction) it will also work in Xvfb.


More information about the hints mailing list