Installing The OS
The next step in creating the VM is to allocate the disk space within the working directory that will become the virtual disk for the virtual machine. In this case, I allocated 4GB of disk space for this Linux machine. Remember, my Linux machine will have full access to all my network hard drives and resources, and I can always allocate additional disk space based on available disks in my physical host computer.
It takes a few minutes for VMware to create the disk, but fear not, it is not partitioning the disk as it would in a traditional Linux install. Rather, it is allocating disk space for the Linux virtual machine, which can easily be reclaimed in the future if I decide to delete/erase the machine.
One of the nice things here is that there are no worries about partitioning software or goofing up disk drives on the host machine. Simply deleting the virtual file created for the virtual machine's disk erases the configuration and returns the capacity to the host machine.
The virtual machine is now created, but the actual OS has to be loaded within the virtual machine. Here's one of the cooler aspects of testing a new OS through virtualization: burning a boot CD/DVD of the ISO file is unnecessary. Simply pointing the virtual CD drive of the virtual machine at the ISO image of the Linux distribution will allow it to boot as if it were booting a physical machine to a physical CD, as highlighted in Figure 6.
Figure 6: Booting an ISO image from a virtual CD drive
At this point, I'm now installing Linux as I would in a fresh install on a physical machine. Figure 7 shows Ubuntu Linux install options. I'll spare you the details on installing Linux, but the end result is a fully functioning Linux machine running within VMware.
Letting the Ubuntu install set up its network interface using DHCP enables the virtual machine to get an IP address on my network, fully independent of the host machine's IP.
Figure 7: Ubuntu Linux installation options in VMware console
The VMware manual provided a couple of tips to optimize the performance of a virtual machine. I'm using a Pentium 4 CPU with Hyper-threading enabled on my host computer, so I could allocate two processors to my virtual Linux machine. However, the VMware manual indicates that Hyper-threaded CPUs can perform worse when selecting dual CPUs for the virtual machine, so I configured my Linux VM to use only one CPU.
Virtualization can be a memory hog, so the more memory allocated to the virtual machine, the better it will perform. The trick is balancing the amount of memory allocated to each virtual machine without degrading the performance of the Host or other guest machines. Linux installations default to 256MB of memory, which can be increased all the way to the total amount of memory in the Host. VMware recommends consulting each OS's documentation to determine optimal memory allocation. For simple command line Linux use, I left it at the default 256MB setting.
Another performance enhancement is to disable CD drives within the virtual machines. They can always be re-enabled if necessary, so disabling them shouldn't cause a problem. Finally, for Linux, VMware has improved Linux drivers that can be loaded using a package called VMware Tools.
In the bottom left corner of Figure 7, there is a message reminding me to install VMware Tools on my Ubuntu virtual machine. Installing VMware Tools is done with the virtual machine running, through a combination of VMware Server menu selections and Linux file activity. There is a handy step-by-step guide on VMware's website for installing VMware tools.
As stated in the beginning, I was running Linux in order to run an IP PBX based on open source software. The open source software I've been using is Asterisk. We ran an article a little over a year ago on running an embedded Asterisk machine here. In my case, virtualization has eliminated the need for the specialized hardware discussed in last year's article and allows me to run Asterisk on a full-blown Linux machine.
I installed Asterisk on my virtual Linux machine, copied my Asterisk configuration files I had saved on a network drive, and I was passing calls through the virtual machine just as I previously had through my physical machine.