Home Network Project
RSS icon Email icon Home icon
  • Setting up VMware – Part I

    Posted on November 22nd, 2009 lance No comments

    VMware

    For the uninitiated, VMware is software for creating Virtual Machines.  “Virtual Machines?” you say?  “Like the matrix?”  No, no, no.  This is having multiple servers of different OS types running on one physical computer.  Say for example you want to have 2 separate servers, however neither of them is taxed too hard so that you essentially don’t need the power consumption of two PCs nor have the room for a second one.  If you could combine the two physically, and yet still have them seperate in all other aspects, VMware is the answer.

    Types of OSes

    VMware can be installed on Windows or Linux.  The virtual OSes can also be Windows or Linux.  For a list of supported supported host Operating systems consult page 25 of the User’s Guide or page 32 for a list of supported guest operating systems.  This list involves mostly Windows Server 2003 series, Mandrake Linux, Red Hat Enterprise Linux, SUSE Linux Enterprise Server and Ubuntu Linux distros.  I however am going to attempt this daring feat with Debian instead of the listed supported OSes.

    Specs

    Before starting, I’d highly recommend scanning over the Users Guide.  This will give you a an idea of whether your machine can handle this or not.  My specs are not exactly what they recommend.  I’m running an old salvaged Dell PC with a 2.4Ghz Pentium processor and I upped the RAM to 1GB.  It suggests a minimum of 733Mhz processor and 512MB or RAM, but suggests 2GB of RAM.  My little machine here can’t handle more than a gig.  The processors that it suggests are server types:  Intel Xeon Dual Cores, AMD Opterons.  So needless to say my setup may struggle, but then again, I’m not going to do a whole lot either.

    Obtaining VMware

    You can download VMware free from the developers website, or another mirror.  You can get support from them as well, however I imagine that is NOT free.  Their download page as of the time of this posting says it’s version 1.0.6, however I found a 2.0.2 version at filehippo.

    I’ve downloaded the tarball since I am using a Linux server.  VMware-server-2.0.1-156745.i386.tar.gz

    Getting started

    Here’s my step by step process.  (my commands in black, the computers response in red)

    tar -xvzf VMware-server-2.0.1-156745.i386.tar.gz
    cd vmware-server-distrib
    sudo ./vmware-install.pl

    Setup is unable to find the “killall” program on your machine. Please make sure it is installed. Do you want to specify the location of this program by hand?
    [yes]

    So now I’ve got to  make sure “killall” is installed.

    locate killall
    /sbin/killall5
    /sur/share/man/man8/killall5.8.gz

    And I try again and this time I answer “yes” to specifying the location of killall.

    What is the location of the “killall” program on your
    machine? /sbin/killall5
    In which directory do you want to install the binary files?
    [/usr/bin] <enter>
    What is the directory that contains the init directories (rc0.d/ to rc6.d/)?
    [/etc] <enter>
    What is the directory that contains the init scripts?
    [/etc/init.d] <enter>
    In which directory do you want to install the daemon files?
    [/usr/sbin] <enter>
    In which directory do you want to install the library files?
    [/usr/lib/vmware] <enter>
    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] <enter>
    In which directory do you want to install the manual files?
    [/usr/share/man] <enter>
    In which directory do you want to install the documentation files?
    [/usr/share/doc/vmware] <enter>
    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] <enter>
    Before running VMware Server 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] <enter>
    The installation of VMware Server 2.0.1 build-156745 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 Server 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] <enter>

    Setup is unable to find the “killall” program on your machine.  Please make
    sure it is installed.  Do you want to specify the location of this program by
    hand? [yes] <enter>

    What is the location of the “killall” program on your
    machine? /sbin/killall5

    Setup is unable to find the “make” program on your machine.  Please make sure
    it is installed.  Do you want to specify the location of this program by hand?
    [yes]

    What?  I’m missing “make”?  I have a second terminal window open, so I can do other things and not interrupt my install process.  The first thing to do is make sure I am missing make.  The second is to install it.

    which make
    <no response, therefore no program>
    sudo aptitiude install make
    <aptitude installs make>
    which make
    /usr/bin/make

    Okay, now we return to the previously scheduled install.

    Setup is unable to find the “make” program on your machine.  Please make sure
    it is installed.  Do you want to specify the location of this program by hand?
    [yes] yes
    What is the location of the “make” program on your
    machine? /usr/bin/make
    Making sure services for VMware Server are stopped.

    Stopping VMware autostart virtual machines:
    Virtual machines                                                   failed
    Stopping VMware management services:
    VMware Virtual Infrastructure Web Access
    VMware Server Host Agent                                failed
    Stopping VMware services:
    VMware Authentication Daemon                      done
    Virtual machine monitor                                     done

    You must read and accept the End User License Agreement to continue.
    Press enter to display it.

    <EULA>

    Do you accept? (yes/no) yes
    Thank you.None of the pre-built vmmon modules for VMware Server 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] <enter>

    Setup is unable to find the “gcc” program on your machine.  Please make sure it
    is installed.  Do you want to specify the location of this program by hand?
    [yes]

    Okay, now we break out again and use our other session to look for and/or install our gcc compiler and follow the same steps as before.

    Setup is unable to find the “gcc” program on your machine.  Please make sure it
    is installed.  Do you want to specify the location of this program by hand?
    [yes] <enter>
    What is the location of the “gcc” program on your machine? /usr/bin/gcc

    Your kernel was built with “gcc” version “4.1.3″, while you are trying to use
    “/usr/bin/gcc” version “4.3.2″. This configuration is not recommended and
    VMware Server 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 “4.3.2″ anyway? [no] < hmmm, let’s go for it>

    What is the location of the directory of C header files that match your running
    kernel? [/usr/src/linux/include]

    Again to the other terminal.

    ls /usr/src/
    <nothing>
    sudo aptitude install linux-headers-`uname -r`
    <install of linux-headers>
    ls /usr/src/
    linux-headers-2.6.26-2-686  linux-headers-2.6.26-2-common  linux-kbuild-2.6.26
    What is the location of the directory of C header files that match your running
    kernel? [/usr/src/linux/include]
    /usr/src/linux-headers-2.6.26-2-686/include/Building the vmmon module.

    Using 2.6.x kernel build system.
    make: Entering directory `/tmp/vmware-config0/vmmon-only’
    make -C /usr/src/linux/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
    make[1]: Entering directory `/usr/src/linux’
    /tmp/vmware-config0/vmmon-only/Makefile:106: *** Inappropriate build environment: you wanted to use gcc version 4.3.2 while kernel attempts to use gcc version 4.1.3.
    /tmp/vmware-config0/vmmon-only/Makefile:108: *** For proper build you’ll have to replace  gcc-4.1 with symbolic link to /usr/bin/gcc.  Stop.
    make[1]: *** [_module_/tmp/vmware-config0/vmmon-only] Error 2

    make[1]: Leaving directory `/usr/src/linux’
    make: *** [vmmon.ko] Error 2
    make: Leaving directory `/tmp/vmware-config0/vmmon-only’
    Unable to build the vmmon module.

    For more information on how to troubleshoot module-related problems, please
    visit our Web site at “http://www.vmware.com/go/unsup-linux-products” and
    “http://www.vmware.com/go/unsup-linux-tools”.

    Execution aborted.

    Wow, and we were so close.  Okay, highlighted above are what we’ll have to address.

    Well our using a different version of our C compiler did not pan out for us.  So let’s fix that

    sudo aptitude remove gcc
    <aptitude removes gcc>
    sudo aptitude install gcc-4.1
    <aptitude installs gcc-4.1>

    Now we have the version of gcc that we need.  So let’s start our install script again.

    Setup is unable to find the “killall” program on your machine. Please make sure
    it is installed. Do you want to specify the location of this program by hand?
    [yes] <enter>

    What is the location of the “killall” program on your
    machine? /sbin/killall5

    A previous installation of VMware Server has been detected.

    The previous installation was made by the tar installer (version 4).

    Keeping the tar4 installer database format.

    You have a previous version of VMware Server installed.  Continuing this
    install will upgrade to the latest version by first uninstalling the previous
    version.  Do you wish to continue? (yes/no) [yes] <enter>

    Here’s where we get to watch reruns.  It pretty much repeats much of what we’ve seen before minus things such as our compiler and anything else we’ve fixed.  Although it does like to ask where our killall program is.

    And yet, another snag.  Seeing as how I told it where my gcc compiler was before I removed it and installed a more agreeable one, the installer is remembering the path that I specified earlier and is having trouble compiling.

    Using compiler “/usr/bin/gcc”. Use environment variable CC to override.

    sh: /usr/bin/gcc: No such file or directory
    Your compiler “/usr/bin/gcc” version “” is not supported by this version of
    VMware Server.

    For more information on how to troubleshoot module-related problems, please
    visit our Web site at “http://www.vmware.com/go/unsup-linux-products” and
    “http://www.vmware.com/go/unsup-linux-tools”.

    Execution aborted.

    This was remedied by creating a symlink to the correct path.

    sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc

    Now our script moves along . . .

    Building the vmmon module.

    Using 2.6.x kernel build system.
    make: Entering directory `/tmp/vmware-config1/vmmon-only’
    make -C /usr/src/linux/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
    make[1]: Entering directory `/usr/src/linux’
    CC [M]  /tmp/vmware-config1/vmmon-only/linux/driver.o
    CC [M]  /tmp/vmware-config1/vmmon-only/linux/driverLog.o
    CC [M]  /tmp/vmware-config1/vmmon-only/linux/hostif.o
    CC [M]  /tmp/vmware-config1/vmmon-only/common/comport.o
    CC [M]  /tmp/vmware-config1/vmmon-only/common/cpuid.o
    CC [M]  /tmp/vmware-config1/vmmon-only/common/hashFunc.o
    CC [M]  /tmp/vmware-config1/vmmon-only/common/memtrack.o
    CC [M]  /tmp/vmware-config1/vmmon-only/common/phystrack.o
    CC [M]  /tmp/vmware-config1/vmmon-only/common/task.o
    CC [M]  /tmp/vmware-config1/vmmon-only/common/vmx86.o
    CC [M]  /tmp/vmware-config1/vmmon-only/vmcore/moduleloop.o
    LD [M]  /tmp/vmware-config1/vmmon-only/vmmon.o
    Building modules, stage 2.
    MODPOST 1 modules
    CC      /tmp/vmware-config1/vmmon-only/vmmon.mod.o
    LD [M]  /tmp/vmware-config1/vmmon-only/vmmon.ko
    make[1]: Leaving directory `/usr/src/linux’
    cp -f vmmon.ko ./../vmmon.o
    make: Leaving directory `/tmp/vmware-config1/vmmon-only’
    The vmmon module loads perfectly into the running kernel.

    None of the pre-built vmci modules for VMware Server is suitable for your
    running kernel.  Do you want this program to try to build the vmci module for
    your system (you need to have a C compiler installed on your system)? [yes] <enter>

    Extracting the sources of the vmci module.

    Building the vmci module.

    Using 2.6.x kernel build system.
    make: Entering directory `/tmp/vmware-config1/vmci-only’
    make -C /usr/src/linux/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
    make[1]: Entering directory `/usr/src/linux’
    CC [M]  /tmp/vmware-config1/vmci-only/linux/driver.o
    CC [M]  /tmp/vmware-config1/vmci-only/linux/driverLog.o
    CC [M]  /tmp/vmware-config1/vmci-only/linux/vmciKernelIf.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciContext.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciDatagram.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciDriver.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciDs.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciEvent.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciGroup.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciHashtable.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciProcess.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciQueuePair.o
    CC [M]  /tmp/vmware-config1/vmci-only/common/vmciResource.o
    LD [M]  /tmp/vmware-config1/vmci-only/vmci.o
    Building modules, stage 2.
    MODPOST 1 modules
    CC      /tmp/vmware-config1/vmci-only/vmci.mod.o
    LD [M]  /tmp/vmware-config1/vmci-only/vmci.ko
    make[1]: Leaving directory `/usr/src/linux’
    cp -f vmci.ko ./../vmci.o
    make: Leaving directory `/tmp/vmware-config1/vmci-only’
    The vmci module loads perfectly into the running kernel.

    None of the pre-built vsock modules for VMware Server is suitable for your
    running kernel.  Do you want this program to try to build the vsock module for
    your system (you need to have a C compiler installed on your system)? [yes] <enter>

    Extracting the sources of the vsock module.

    Building the vsock module.

    Using 2.6.x kernel build system.
    make: Entering directory `/tmp/vmware-config1/vsock-only’
    make -C /usr/src/linux/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
    make[1]: Entering directory `/usr/src/linux’
    CC [M]  /tmp/vmware-config1/vsock-only/linux/af_vsock.o
    CC [M]  /tmp/vmware-config1/vsock-only/linux/driverLog.o
    CC [M]  /tmp/vmware-config1/vsock-only/linux/util.o
    CC [M]  /tmp/vmware-config1/vsock-only/linux/vsockAddr.o
    LD [M]  /tmp/vmware-config1/vsock-only/vsock.o
    Building modules, stage 2.
    MODPOST 1 modules
    WARNING: “VMCIDatagram_CreateHnd” [/tmp/vmware-config1/vsock-only/vsock.ko] undefined!
    WARNING: “VMCIDatagram_DestroyHnd” [/tmp/vmware-config1/vsock-only/vsock.ko] undefined!
    WARNING: “VMCI_GetContextID” [/tmp/vmware-config1/vsock-only/vsock.ko] undefined!
    WARNING: “VMCIDatagram_Send” [/tmp/vmware-config1/vsock-only/vsock.ko] undefined!
    CC      /tmp/vmware-config1/vsock-only/vsock.mod.o
    LD [M]  /tmp/vmware-config1/vsock-only/vsock.ko
    make[1]: Leaving directory `/usr/src/linux’
    cp -f vsock.ko ./../vsock.o
    make: Leaving directory `/tmp/vmware-config1/vsock-only’
    Unable to make a vsock module that can be loaded in the running kernel:
    insmod: error inserting ‘/tmp/vmware-config1/vsock.o’: -1 Unknown symbol in module
    There is probably a slight difference in the kernel configuration between the
    set of C header files you specified and your running kernel.  You may want to
    rebuild a kernel based on that directory, or specify another directory.

    The VM communication interface socket family is used in conjunction with the VM
    communication interface to provide a new communication path among guests and
    host.  The rest of this software provided by VMware Server is designed to work
    independently of this feature.  If you wish to have the VSOCK feature  you can
    install the driver by running vmware-config.pl again after making sure that
    gcc, binutils, make and the kernel sources for your running kernel are
    installed on your machine. These packages are available on your distribution’s
    installation CD.
    [ Press the Enter key to continue.]

    So far so good.  I won’t go through the next section of networking.  This is something for another day if you don’t already have it figured out.

    None of the pre-built vmnet modules for VMware Server is suitable for your
    running kernel.  Do you want this program to try to build the vmnet module for
    your system (you need to have a C compiler installed on your system)? [yes]<enter>

    Extracting the sources of the vmnet module.

    Building the vmnet module.

    Using 2.6.x kernel build system.
    make: Entering directory `/tmp/vmware-config2/vmnet-only’
    make -C /usr/src/linux/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
    make[1]: Entering directory `/usr/src/linux’
    CC [M]  /tmp/vmware-config2/vmnet-only/driver.o
    CC [M]  /tmp/vmware-config2/vmnet-only/hub.o
    CC [M]  /tmp/vmware-config2/vmnet-only/userif.o
    CC [M]  /tmp/vmware-config2/vmnet-only/netif.o
    CC [M]  /tmp/vmware-config2/vmnet-only/bridge.o
    CC [M]  /tmp/vmware-config2/vmnet-only/filter.o
    CC [M]  /tmp/vmware-config2/vmnet-only/procfs.o
    CC [M]  /tmp/vmware-config2/vmnet-only/smac_compat.o
    CC [M]  /tmp/vmware-config2/vmnet-only/smac.o
    CC [M]  /tmp/vmware-config2/vmnet-only/vnetEvent.o
    CC [M]  /tmp/vmware-config2/vmnet-only/vnetUserListener.o
    LD [M]  /tmp/vmware-config2/vmnet-only/vmnet.o
    Building modules, stage 2.
    MODPOST 1 modules
    CC      /tmp/vmware-config2/vmnet-only/vmnet.mod.o
    LD [M]  /tmp/vmware-config2/vmnet-only/vmnet.ko
    make[1]: Leaving directory `/usr/src/linux’
    cp -f vmnet.ko ./../vmnet.o
    make: Leaving directory `/tmp/vmware-config2/vmnet-only’
    The vmnet module loads perfectly into the running kernel.

    Please specify a port for remote connections to use [902] <enter>

    Please specify a port for standard http connections to use [8222] <enter>

    Please specify a port for secure http (https) connections to use [8333] <enter>

    The current administrative user for VMware Server  is ”.  Would you like to
    specify a different administrator? [no] yes


    Please specify the user whom you wish to be the VMware Server administrator
    <username>

    Using *username* as the VMware Server administrator.

    In which directory do you want to keep your virtual machine files?
    [/var/lib/vmware/Virtual Machines] <enter>

    The path “/var/lib/vmware/Virtual Machines” does not exist currently. This
    program is going to create it, including needed parent directories. Is this
    what you want? [yes] <enter>

    Don’t forget to sign up with the VMware website to obtain your 20 character serial number, it will be needed now.
    Please enter your 20-character serial number.
    Type XXXXX-XXXXX-XXXXX-XXXXX or ‘Enter’ to cancel:
    Creating a new VMware VIX API installer database using the tar4 format.

    Installing VMware VIX API.

    In which directory do you want to install the VMware VIX API binary files?
    [/usr/bin] <enter>

    In which directory do you want to install the VMware VIX API library files?
    [/usr/lib/vmware-vix/lib] <enter>

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

    In which directory do you want to install the VMware VIX API document pages?
    [/usr/share/doc/vmware-vix] <enter>

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

    The installation of VMware VIX API 1.6.2 build-156745 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-vix.pl”.

    Enjoy,

    –the VMware team

    Starting VMware services:
    Virtual machine monitor                                                       done
    Virtual machine communication interface                        done
    Virtual ethernet                                                                        done
    Bridged networking on /dev/vmnet0                                 done
    Host-only networking on /dev/vmnet1 (background)    done
    DHCP server on /dev/vmnet1                                                done
    Host-only networking on /dev/vmnet8 (background)    done
    DHCP server on /dev/vmnet8                                                done
    NAT service on /dev/vmnet8                                                 done
    VMware Server Authentication Daemon (background)  done
    Shared Memory Available                                                      done
    Starting VMware management services:
    VMware Server Host Agent (background)                          done
    VMware Virtual Infrastructure Web Access
    Starting VMware autostart virtual machines:
    Virtual machines                                                                       done

    The configuration of VMware Server 2.0.1 build-156745 for Linux for this
    running kernel completed successfully.

    SUCCESS!

    Now that we have our VMware installed and configured, it’s time for a celebratory beer.  Our next task will be working with the web interface for our guest OSes.

    Stay tuned.