Running VMware Server on top of Hyper-V… or not

A few days ago, I came across a couple of blog posts about how VMware Server won’t run on top of Hyper-V. Frankly, I’m amazed that any hosted virtualisation product (like VMware Server) will run on top of any hypervisor – I always understood that hosted virtualisation required so many hacks to work at all that if it saw something that wasn’t the real CPU (i.e. a hypervisor handling access to the processor’s hardware virtualisation support) then it might be expected to fall over in a heap – and it seems that VMware even coded VMware Server 2.0 to check for the existence of Hyper-V and fail gracefully. Quite what happens with VMware Server on top of ESX or XenServer, I don’t know – but I wouldn’t expect it to work any better.

Bizarrely, Virtual PC and Virtual Server will run on Hyper-V (I have even installed Hyper-V on top of Hyper-V whilst recording the installation process for a Microsoft TechNet video!) and, for the record, ESX will run in VMware Workstation too (i.e. hypervisor on top of hosted virtualisation). As for Hyper-V in VMware Workstation VM – I’ve not got around to trying it yet but Microsoft’s Matt McSpirit is not hopeful.

Regardless of the above, Steve Graegart did come up with a neat solution for those instances when you really must run a hosted virtualisation solution and Hyper-V on the same box. It involves dual-booting, which is a pain in the proverbial but, according to Steve, it works:

  1. Open a command prompt and create a new [boot loader] entry by copying the default one bcdedit /copy {default} /d "Boot without Hypervisor"
  2. After successful execution copy the GUID (ID of the new boot loader entry) including the curly braces to the clipboard.
  3. Set the HyperVisorLaunchType property to off bcdedit /set {guid} hypervisorlaunchtype off [using] the GUID you’ve previously copied to the clipboard.

After this, you should now have a boot time selection of whether or not to start Hyper-V (and hence whether or not an alternative virtualisation solution will run as expected).

Problems copying files from a backup… restored by thinking laterally

I don’t generally talk about my work (at least not directly) on this blog but, a couple of weeks back, I moved into a new role, which is going to involve working very closely with a certain software company from Redmond (and no, it won’t have any effect on the editorial content here – nothing on this site should be interpreted as representing the views of my employer or their partners). Clearly running Red Hat Enterprise Linux on my laptop wasn’t politically correct (I might have got away with Novell Enterprise Linux) so I needed to rebuild on Windows Vista.

As many of my corporate applications still require Windows XP and IE 6, I run a domain-joined (Windows XP) virtual machine to access them. I had been using VMware Server as the host but as VMware recently sent me a license for VMware Workstation 6.0 (as a VCP benefit) I decided to use that instead following the Vista rebuild. I backed up the virtual machine files to an external disk, rebuilt on Windows (including reformatting the internal disk) got 94% of the way through the restoration of the VM and then I was presented with this message:

Error 0x80070079: The semaphore period has expired.

Not good. I was in the middle of a restore – those files were my backup and the three problem files represented 30% of the virtual disk that makes up my D: drive (i.e. my data).

I’d written the files without errors but clearly something was wrong when reading them. I thought of buying a copy of SpinRite to check that the disk was fine but, before parting with any cash, I tried reading them on another machine and thankfully they restored without any difficulty. I don’t know if the issue was with my Vista machine’s USB device drivers (the successful restore was on my wife’s Windows XP machine), a timing issue (my wife’s machine is older and the external disk was USB 1.1) or something else (like that this is a 60GB FAT32 volume and Windows has a limit of 32GB for FAT32 volume creation – as the virtual machine files totalled 36.5GB in size, maybe the three 1.99GB files that Vista couldn’t read were physically located across and after the 32GB point on the disk) but my experience goes to show that it’s worth trying another machine before giving up totally on the data.

Installing VMware Server on Red Hat Enterprise Linux 5

Red Hat logo VMware logoLast year, I wrote about installing VMware Server on Fedora Core 6. At the time, I was using version 1.0.1 (build 29996) and tonight I needed to load the latest version 1.0.3 (build 44356) on my laptop, which is now running Red Hat Enterprise Linux (RHEL) 5. In theory, installing on a popular enterprise distribution such as RHEL ought to be straightforward but even so there were some things to watch out for (some of which were present in my earlier post). The following steps should be enough to get VMware Server up and running:

  1. Download the latest VMware Server release and register for a serial number (i.e. give VMware lots of marketing information… everything but my inside leg measurement… and make a mental note that I mustn’t lose the serial number this time).
  2. Prepare the system, installing the following packages and dependencies:
    • gcc (v4.1.1-52.el5.i386)
      • glibc-devel (v2.5-12.i386):
        • glibc-headers (v2.5-12.i386).
      • libgomp = (v4.1.1-52.el5.i386).
    • kernel-devel (v2.6.18-8.el5.i686).
    • xinetd (v2.3.14-10.el5.i386).
  3. Install VMware Server (rpm -Uvh VMware-server-1.0.3-44356.i386.rpm).
  4. Configure VMware Server (/usr/bin/vmware-config.pl):
    • Display and accept the EULA, then accept defaults for installation of MIME type icons (/usr/share/icons), desktop menu entries (/usr/share/applications), application icon (/usr/share/pixmaps), allow the configuration to build the vmmon module (using /usr/bin/gcc), enable networking, enable NAT, probe for an unused private subnet, do not configure additional NAT subnets, enable host only subnets, robe for an unused private subnet, do not configure additional host-only subnets, port for connection (902) default location for virtual machine files (/var/lib/vmware/Virtual Machines, creating if necessary) and finally, provide the serial number when requested.
      • All the prompts should work at their defaults; however it may be necessary to answer the question “What is the location of the directory of C header files that match your running kernel? [/usr/src/linux/include]” with /usr/src/kernels/2.6.18-8.el5-i686/include (or another version of the kernel-devel tools).
      • Building the vmmon module will fail if gcc is not present.
      • If the installer is being run under X, the serial number can be pasted into the terminal when requested.
    • The configuration script will have to be re-run if it finds that inetd or xinetd are not installed
  5. Extract the VMware management user interface from the archive (tar zxf VMware-mui-1.0.3-44356.tar.gz) and run the installation program (./vmware-mui-distrib/vmware-install.pl):
    • Display and accept the EULA, then accept defaults for installation of the binary files (/usr/bin), location of init directories (/etc/rc.d), location of init scripts (/etc/rc.d/init.d), installation location (/usr/lib/vmware-mui, creating if necessary), documentation location (/usr/lib/vmware-mui/doc, creating if necessary), allow vmware-install.pl to call /usr/bin/vmware-config-mui.pl and define the session timeout (default is 60 minutes).
  6. Extract the VMware Server console package from the client archive, or download it from the VMware management interface at https://servername:8333/ (it may be necessary to open a firewall port for TCP 8333 using system-config-securitylevel in order to allow remote connections).
  7. Install the VMware Server console (rpm -Uvh VMware-server-console-1.0.3-44356.i386.rpm).
  8. Run the vmware-config-server-console.pl script (not vmware-config-console.pl as stated in the documentation) – accept the EULA and if prompted, enter the port number for connection (default is 902).

At this point, you should have a working VMware Server installation accessible via the VMware Server Console icon on the Applications | System Tools menu, by using the vmware command from a terminal, or via a browser session. The final stage is to set up some virtual machine. I simply copied my previous image from an external hard disk to /var/lib/vmware/Virtual Machines and then opened it in the console (from where I could update the VMware Tools) but the (Windows) VMware Converter utility is available for P2V/I2V/V2V migrations (replacing the VMware P2V Assistant) and preconfigured VMs can be obtained from the VMTN virtual appliance marketplace.

Running VMware Server Console on a Mac

Last year, I bought a 20″ wide-screen monitor which I run at a resolution of 1680×1050 pixels. Working with all that screen space is fantastic (especially with 4 virtual desktops), except that I’ve got so used to it that the standard 1024×768 pixels on the notebook PC that I use for work seems too small and an upgrade is out of the question as the PC is only 18 months old.

For a while now, I’ve been running the notebook on the desk next to my main display but I’m running out of desk space. As I virtualised my corporate Windows XP build a while back, I thought it would be great if, when I’m working at home, I could run the Linux VMware Server Console on my Mac (which is connected to the large display). The virtual machine would still be limited to 1024×768 but I could access corporate applications in the VMware Server Console and do the big screen stuff (web, e-mail, document edits, etc.) natively on the Mac, using the whole display. Yes, I know that if I used Microsoft Virtual Server I could run it in a browser, but I’d need ActiveX and I’m not using Internet Explorer. Similarly RDP is an option, but I find it to be a bit flaky on an Intel Mac. Anyway, I’m a (pseudo-)geek and so I need to feed on problems like this from time to time!

Actually, much of the hard work has already been done for me – googling for vmware console mac soon turns up Rui Carmo’s article at The Tao of Mac on how to run [the VMware Console] remotely with Apple’s X11; however Rui’s article was written a while ago now and my VMware Server (v1.0.1-build 29996) installation on Fedora Core 5 doesn’t use the command vmware-console – instead I have to use vmware. Nevertheless, it got me 90% of the way there:

  • On the (Linux) VMware Server:
    • Configure SSH and X11 forwarding (my original post used a Windows client and public/private keys but the principles are similar – this time I used password authentication, making sure that the PasswordAuthentication yes and X11Forwarding yes lines were present in /etc/ssh/sshd_config and restarting the SSH daemon with service sshd restart).
    • Locate an appropriate keyboard map in /usr/lib/vmware/xkeymap/, edit the map if necessary (there is a VMware article about keyboard mapping on a Linux host that may be useful – don’t worry that it’s a VMware Workstation document) and edit ~/.vmware/preferences to include xkeymap.language="keyboardmap" (I used gb101 for my Apple UK keyboard).
  • On the Mac:

At this point VMware Server Console ran successfully under X11 on my Mac; however whenever I powered on a virtual machine all I saw was a black screen and a message in the xterm window which read:

X11 connection rejected because of wrong authentication.

After trying a remote VMware Server Console connection to localhost and restarting the Linux host (I’m not sure which, if either, of these made a difference) I found that the virtual machine was actually starting but that for some reason the display wasn’t being repeated in the X11 VMware Server Console on the Mac; however this time there was a different message displayed:

Unable to connect to the MKS: You need execute access in order to connect with the VMware Server Console. Access denied for config file: /var/lib/vmware/Virtual Machines/virtualmachinenname/virtualmachinenname.vmx.

After setting execute permissions to the virtual machine configuration file chmod +x virtualmachinenname.vmx (changing the permission set from 640 to 751), I was able to successfully view the VM on the Mac (and simultaneously on the Linux host) – the only (very minor) issues are that the mouse pointer is solid white when accessing the virtual machine (so sometimes I lose it) and that the sound is not forwarded (no big deal). Now my notebook PC is docked on a shelf away from the desk, with the lid closed, and I’m running the VMware Server Console from the Mac, having reclaimed some space on my desk.

Installing VMware Server on Fedora Core 5

Fedora logo VMware logoA few months back, I wrote about having converted the Windows XP installation on my company-supplied notebook PC to a virtual machine and was running it quite happily on Windows Vista using VMware Player. Unfortunately, it’s been slowing down (to the point that booting the Vista host, then the XP guest and logging in was taking me 15 minutes every day), so this week I rebuilt the host system. It’s still not the Vista/Linux dual boot setup that I originally intended, but I’m running a bit short on hard disk space and consequently I’m still using a single host operating system (this time it’s Fedora Core 5 as I couldn’t get SUSE 10 to install on my Fujitsu-Siemens Lifebook S7010D) with VMware Server (I could have used the player again but the server product has now been released and it’s free too).

I don’t know what was wrong with the original setup – although it ran well at first, performance in both the host and guest operating systems became noticeably degraded at times but I was using a combination of a beta host operating system, a 5400RPM laptop hard disk and the VMware Player (which is probably not optimised for Vista either) what I can say is that running XP under VMware Server on Fedora rocks, even though Fedora is not a supported host operating system for VMware Server.

Incidentally, virtual machine (VM) performance can be improved by moving the VM to a separate disk and a colleague, Garry Martin, also suggested that improvements can be made by binding the VMnet adapters to a separate network interface; however in this case I only have one permanent Ethernet connection and do not want to have to connect an external disk each time I load my Windows XP environment.

Despite following the relevant sections in the VMware Server administration guide, because I used a Linux workstation distribution (and an unsupported one too), the installation of VMware Server was not entirely straightforward, but I got it working eventually and this is what I had to do:

  • Download VMware Server (v1.0.1 – build 29996 – server and client components) and register for a serial number.
  • In addition to the standard Fedora components, install the following (using the pirut Package Manager, yum or an equivalent method):
    • gcc (v4.1.1-1.fc5.i386)
    • gcc-c++ (v4.1.1-1.fc5.i386)
    • kernel-devel (v2.6.17-1.2174_FC5.i686)
    • xinetd (v2:2.3.13-6.2.1.i386)
  • Elevate permissions to root (su –).
  • Run the VMware Server installer (rpm -Uvh VMware-server-1.0.1-29996.i386.rpm).
  • Before running the vmware-config.pl script, Download the VMware any-any update (I used v1.04 – thanks to Jean-Pierre Wenzel for highlighting the existence of this unofficial patch and the need to install kernel-devel).
  • Extract vmware-any-any-update104.tar.gz and then execute ./runme.pl (this will call vmware-config.pl, allowing for the acceptance of the VMware end user license agreement, configuration of networking, specification of the server console port, definition of the location of virtual machine files and entry of the VMware serial number). If the patch is working correctly then all the prompts should work at their defaults; however it may be necessary to answer the question “What is the location of the directory of C header files that match your running kernel? [/usr/src/linux/include]” with /usr/src/kernels/2.6.17-1.2174_FC5-i686/include (or another version of the kernel-devel tools). Building the vmmon module will fail if gcc and gcc-c++ are not present and the configuration script will have to be re-run if it finds that inetd or xinetd are not installed.
  • Unzip the client installer (VMware-server-linux-client-1.0.1-29996.zip)
  • Install the VMware Server Console (rpm -Uvh VMware-server-console-1.0.1-29996.i386.rpm).
  • Run the vmware-config-server-console.pl script (not vmware-config-console.pl as stated in the documentation).
  • Drop back to a standard user account (exit) and run the vmware shell script (a wrapper for the real binaries) to start up the VMware Server Console.
  • Create and run virtual machines as normal although there were a couple more points worth noting:
    • After copying virtual machine files across from the original Windows Vista installation, I needed to make some edits to the configuration to reflect changes in file names (e.g. disk locations) to Unix formats (\ to / etc.).
    • I created a group called vmware and ran chgrp vmware filename against the VM files so that any user in the vmware group could run the VMs (not just root).

Some configuration items may have been carried out in a slightly different sequence as I tried various advice and encountered a number of issues before I got everything working but the image below shows the end result:

Windows XP in VMware Server running on Fedora Core 5

So far, the only issue I have found is with the guest operating system clock (which is not keeping time). This could be because I originally installed VMware Tools from a Windows version of the Virtual Server beta – I’ll install the correct version next week to see if it makes any difference. In any case, performance is very good – in fact, when running full screen, it would be very difficult to tell that the Windows XP guest is not running on native hardware.