9

Is it possible to run VMware player as a Windows Service so that a user does not have to be logged in to have the player running?

voretaq7
  • 79,879
  • 17
  • 130
  • 214
jdiaz
  • 1,189
  • 3
  • 16
  • 16

4 Answers4

14

Vmware Server is the correct tool for running a VM in the background, not Vmware Player.

Zoredache
  • 130,897
  • 41
  • 276
  • 420
  • 1
    (and is also free) – Chris_K Oct 02 '09 at 19:40
  • 2
    Not strictly true. People all over the net are running VMWare Player as a service. – JamesBarnett Nov 27 '11 at 09:12
  • 4
    @JamesBarnett people do lots of things that aren't "ideal" - go for a drive and watch how others behave on the roads if you don't believe me. The fact that you can 'bodge' VMWare player into running as a service doesn't alter the fact that VMWare server is the intended tool for that job. – Rob Moir Nov 27 '11 at 10:10
  • 1
    Maybe depends on the use case. If you want to run a VM unattended because you want a cheap VMWare Server then I agree with you. However the statement "the correct tool for running a VM in the background" is overly broad. In my case, I wanted to run linux side-by-side with Windows using Unity mode and not have to worry with seeing the VMWare Player UI. Also Windows is overly found closely binding GUIs with background processes. A central part of computer history is being able to hack a something to do what you want. The tool isn't wrong, you just need to know it's limitations. – JamesBarnett Nov 27 '11 at 10:21
  • OTOH, keep in mind that this site is about professional sysadmining. – Zoredache Nov 28 '11 at 00:25
  • @Zoreache LOL. Runnung a VM in the background is a built-in feature to VMWare Workstation since atleast version 6. – JamesBarnett Nov 28 '11 at 01:59
  • 6
    vmware server is deprecated and has a low "vm hw version" – Sirber Jan 17 '12 at 15:27
  • -1 Technically, the question is whether VMware Player can be run in the background, not which alternatives are available that may or may not be more ideal. – Roy Feb 25 '13 at 08:45
6

Sorry for the late responce with this. I was trying to figure this out today. I came across this answer, figured I let SF know.

You can actually ...

  • Add this to your VMX config file to set VMWare Player not show the UI:

    msg.noOk = "TRUE"

  • Get instsrv.exe from a Windows Server Resource Kit to create your own service

  • On Startup have a batch file call the service you just made

Step-by-step instructions can be found here:

http://research.stowers-institute.org/dct/docs/admin/VMwarePlayerService.htm

JamesBarnett
  • 1,129
  • 8
  • 12
2

I know this is an old question, but I searched all over the internet for a solution to this and I couldn't find anything quite as comprehensive as what I'd like to share.

Yes, it's possible to use vmware player as a service for Linux (there's a separate answer for Windows); it's easy and there's no reason I can think of not to do it. It's especially great for hosting a headless server from a headless server.

The other VMware-oriented choice, VMware Server, is deprecated and the only other $0 choice I know of is VirtualBox. If you like that better than VMWare Player, more power to you, but I know VMWare Player and I don't see a reason not to use a well-supported path to get what I want.

Presumably you'll want it to run under a non-root account and start up and shut down at the standard service startup/shutdown times. If that's the case, then here's how to configure it:

  • Get the daemon package (usually not installed by default):

    apt-get install daemon
    
  • Download VMware Player and VMware VIX from vmware.com and install them to get the VM engine and VIX's vmrun (command-line control of vm execution) binary.

  • Add the service to the startup by creating /etc/init.d/<vm_server_name>. It could look something like this:

    #! /bin/bash
    ### BEGIN INIT INFO
    # Provides:          vm_server_name
    # Required-Start:    $named $remote_fs $syslog
    # Required-Stop:     $named $remote_fs $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: My Server VM
    # Description:       Virtual Machine instance of My Server
    ### END INIT INFO
    
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    VM="/path/to/vmx_file.vmx"
    USER_TO_RUN_UNDER="username"
    
    if [[ "$USER" == "$USER_TO_RUN_UNDER" ]]; then
      USER_FLAG=""
    else
      USER_FLAG="--user=$USER_TO_RUN_UNDER"
    fi
    
    case "$1" in
        start)
            daemon $USER_FLAG -- vmrun -T player start "$VM" nogui &>/dev/null &
            ;;
        stop)
            vmrun -T player suspend "$VM" &>/dev/null
            while [[ "$(vmrun -T player list | grep -o "$VM")" == "$VM" ]]; do
              sleep 1
            done
            ;;
        *)
            echo "Usage: $0 start|stop" >&2
            exit 3
            ;;
    esac
    
  • Make the script runnable:

    chmod a+x /etc/init.d/vm_server_name
    
  • Add the script to the standard linux service startup/shutdown runlevels. The numbers ensure that it is one of the last things started and the first to be shut down:

    update-rc.d vm_server_name defaults 99 01
    

Notes:

  • You'll probably need to 'sudo' all the commands as you're modifying root-owned files.
  • I put a loop in so that on shutdown the script doesn't return to the OS until it has completely suspended the guest OS. I don't know if that's needed or not, but it seemed like a good idea. It will definitely slow down shutdown of the host OS, but it is worth it in my opinion.
  • If you need to interact with the local GUI of the guest OS, suspend the server by running /etc/init.d/vm_server_name stop and then start it locally using the VMware player GUI. After finishing, suspend it and run /etc/init.d/vm_server_name start to start the headless instance again.
  • If Vmware player, and Virtual box are the only thing you came up with on Linux, then you aren't searching very hard. KVM and Xen are the preferred tools these days. – Zoredache Nov 06 '12 at 00:17
  • 1
    A good answer for Linux users, but the question was specifically asking about running VMWare Player as a ***Windows Service*** -- Perhaps you should [ask and answer a separate question about doing this on Linux](http://serverfault.com/questions/ask) :-) – voretaq7 Nov 06 '12 at 04:26
  • Thanks for the pointers to other solutions. Try searching for 'vm as a service' in google and you'll see what I saw. I think what you are really saying is that you believe hypervisors are the new hotness. I think there are valid reasons for hobbyists to choose a linux host with other vm's as services, but for scalability I'm sure you're correct. – David Gladfelter Nov 06 '12 at 06:39
  • Oops, I didn't see the word 'Windows' in the question. – David Gladfelter Nov 06 '12 at 06:40
  • hmm, on second thought I think windows wasn't mentioned in the question when I answered it. Could be wrong... – David Gladfelter Nov 06 '12 at 06:51
0

From SuperUser

It is possible using this very old free microsoft wrapper (google for explanations about srvany): ftp://ftp.microsoft.com/bussys/winnt/winnt-public/reskit/nt40/i386/srvany_x86.exe

Or there are also commercial tools: http://www.coretechnologies.com/products/AlwaysUp/Apps/RunVMwarePlayerAsAService.html

coz
  • 101
  • 3