VMWare Player Image Creation
Introduction
Background
VMWare recently introduced their VMWare Player and VMWare Server products for Windows and Linux. They offer some premade disk images for use with the Player and Server technology, but they do not offer software to create new virtual machines or images. Luckily you can create them on your own without too much hassle.
I'm using VMWare Player under both Ubuntu Linux 5.04 Hoary Hedgehog and Ubuntu Linux 5.10 Breezy Badger. Installing the software is fairly straightforward and there are some great guides over at the Ubuntu forum on how to do this.
The trick to getting more out the VMWare Player and VMWare Server than a few premade images is actually two-fold, let me guide you through the process of almost getting a free VMWare Workstation replacement.
In this article I'll be referring mostly to VMWare Player, but you can also create VMWare Server images using the steps described.
A Fresh Start
Zero entropy
One of the "problems" you could have with the premade images for VMWare Player is that they don't come in the sizes and formatting you'd like. Also, since they are already filled with data you don't really benefit from sparse file support from your filesystem once you format them from within the virtual machine.
The best thing to have would be a clean hard disk image in a reasonable size which you could use to format. If you start off with a nearly empty hard disk image, a filesystem like ext2 or ext3, will be able to detect the file as being sparse and optimize its usage accordingly.
There are two ways to get a clean disk image for your virtual machine.
Using QEMU
QEMU is an open source virtualization solution written by Fabrice Bellard. It supports a wide array of host operating systems and architectures and is able to virtualize a few different architectures as well. QEMU comes bundled with some tools related to virtualization and emulation.
In one of the more recent versions, a tool called qemu-img is included. Using this tool you can create empty disk images for use with QEMU, but also for use with VMWare products like VMWare Player. This tool can easily be installed on a Linux system.
But if you want to save some time, here's option two.
Download empty VMWare Player images
I've got some empty VMWare disk images available for download. They're compressed as ZIP files and because they are empty the files are very small. Uncompressing them on your own system will enable sparse files support, so don't worry once you start unpacking the larger disk images.
The empty disk images come in three sizes: 500 megabytes, 10 gigabytes and 20 gigabytes. I reckon these should be large enough for all but the most demanding users.
Download the empty VMWare Player disk images:
- VMWare Player SCSI disk image, 500 megabytes unpacked (.ZIP, 1 Kb)
- VMWare Player SCSI disk image, 10 gigabytes unpacked (.ZIP, 3 Kb)
- VMWare Player SCSI disk image, 20 gigabytes unpacked (.ZIP, 5 Kb)
- VMWare Player IDE disk image, 20 gigabytes unpacked (.ZIP, 5 Kb)
The disk images above are freely available on the Internet. Use the IDE disk image for installing Windows 2000, Windows XP or other Windows operating systems in your Player.
So, with the first barricade out of the way, let's look at the second problem: a so-called VMX file which contains the virtual machines description and properties.
Configuration Cleaning
Boilerplate
As I said earlier, you'll only need a VMWare Disk Image (a VMDK file) and a VMX file which describes the virtual machine. I've already presented you with three disk image downloads, and here is one file you can use as a template for your new virtual machines.
- VMWare Player Virtual Machine Template for Linux, BSD, UNIX and other guest operating systems (.VMX, 1 Kb)
- VMWare Player Virtual Machine Template for Windows operating systems (.VMX, 1 Kb)
If you are getting errors regarding a mismatch between the disk images using LSI Logic formatting and the template using a Bus Logic virtual SCSI device, please download the template again. I've updated it to use the correct LSI Logic SCSI device.
The second download link is the template you want to use with the IDE disk image to run Microsoft Windows inside the virtual machine. This second template uses an IDE disk which is compatible with Windows.
Customizing the template
Once you've downloaded the configuration file template, rename it to suit your needs and open it up in a text editor like vi, emacs or Notepad if you're using Windows. The first few lines are the ones above "# DEFAULT SETTINGS UNDER THIS LINE" and they look like this:
#!/usr/bin/vmware
displayName = "Linux 2.6.x Host"
guestOS = "other26xlinux"
memsize = "512"
scsi0:0.fileName = "10G.vmdk"
ide1:0.fileName = "cdrom.iso"
The first line with the shebang can be ignored safely. The next few lines set a few options for the virtual machine, I'll explain these one by one.
- displayName defines the name of the virtual machine you will see in the titlebar and VMWare Player menu, you can use a long descriptive string if you want.
- guestOS is a short code for the operating system you will be running in the virtual machine. I have included a list of all possible values below.
- memsize defines the amount memory available to the virtual machine in megabytes. Valid entries are 32, 64, 128, 256, 512 and 1024.
- scsi0:0.fileName defines the hard disk image for the SCSI hard disk in the virtual machine. Use one of the downloads above to get the VMDK files.
- ide0:0.fileName defines the hard disk image for the IDE hard disk in the virtual machine. Use the IDE downloads above to get the VMDK file. This IDE disk allows you to run Microsoft Windows.
- ide1:0.fileName defines the ISO file to use in the CD-ROM drive of the virtual machine. The filename is relative to the working directory.
Needless to say, you should change the values in the template to suit your needs.
Supported Virtual Machine Operating Systems
One setting to rule them all
VMWare Player can be tweaked to perform better when virtualizing certain operating systems. Here is a list with all supported guest operating systems which you can enter in the guestOS parameter in the VMX configuration file.
Microsoft Windows, 32-bit
- winVista = Windows Vista (experimental)
- longhorn = Windows Longhorn (experimental)
- winNetBusiness = Windows 2003 Small Business Server
- winNetEnterprise = Windows 2003 Enterprise Server
- winNetStandard = Windows 2003 Server
- winNetWeb = Windows 2003 Web Server Edition
- winXPPro = Windows XP Professional Edition
- winXPHome = Windows XP Home Edition
- win2000AdvServ = Windows 2000 Advanced Server
- win2000Serv = Windows 2000 Server
- win2000Pro = Windows 2000 Professional
- winNT = Windows NT
- winMe = Windows Me
- win98 = Windows 98
- win95 = Windows 95
- win31 = Windows 3.1 / Windows 3.11
- windows = Other Windows
Microsoft Windows, 64-bit
- winVista-64 = Windows Vista x64 Edition (experimental)
- longhorn-64 = Windows Longhorn x64 Edition (experimental)
- winNetEnterprise-64 = Windows 2003 Enterprise Server x64 Edition
- winNetStandard-64 = Windows 2003 Server x64 Edition
- winXPPro-64 = Windows XP Professional x64 Edition
Linux, 32-bit
- ubuntu = Ubuntu Linux
- redhat = Red Hat Linux
- rhel4 = Red Hat Enterprise Linux 4
- rhel3 = Red Hat Enterprise Linux 3
- rhel2 = Red Hat Enterprise Linux 2
- suse = SuSE Linux
- sles = SuSE Linux Enterprise Server
- mandrake = Mandrake Linux
- nld9 = Novell Linux Desktop 9
- sjds = Sun Java Desktop System
- turbolinux = Turbo Linux
- other26xlinux = Other Linux on a 2.6.x kernel
- other24xlinux = Other Linux on a 2.4.x kernel
- linux = Other Linux
Linux, 64-bit
- ubuntu-64 = Ubuntu Linux 64-bit
- rhel4-64 = Red Hat Enterprise Linux 4 64-bit
- rhel3-64 = Red Hat Enterprise Linux 3 64-bit
- sles-64 = SuSE Linux Enterprise Server 64-bit
- suse-64 = SuSE Linux 64-bit
- other26xlinux-64 = Other Linux 2.6.x 64-bit
- other24xlinux-64 = Other Linux 2.4.x 64-bit
- otherlinux-64 = Other Linux 64-bit
Sun Microsystems Solaris
- solaris10-64 = Solaris 10 64-bit
- solaris10 = Solaris 10
- solaris9 = Solaris 9
- solaris8 = Solaris 8
- solaris7 = Solaris 7
- solaris6 = Solaris 6
- solaris = Other Solaris
Novell Netware
- netware6 = Netware 6.x
- netware5 = Netware 5.x
- netware4 = Netware 4.x
- netware = Other Netware
FreeBSD
- freeBSD-64 = FreeBSD 64-bit
- freeBSD = FreeBSD
Apple Darwin
- darwin = Apple Darwin (unsupported)
Other
- other = Other OS
- other-64 = Other 64-bit OS
Finishing Touches
Example VMX
If you wanted to run the Ubuntu Linux 6.04 Dapper Drake Flight 3 preview release in a VMWare Player virtual machine, you should modify the first lines in the VMX file template to something like this:
#!/usr/bin/vmware
displayName = "Ubuntu Dapper Drake 6.04 Flight 3"
guestOS = "ubuntu"
memsize = "512"
scsi0:0.fileName = "20G.vmdk"
ide1:0.fileName = "dapper-install-i386.iso"
After saving this file to "dapper.vmx" you should run the VMWare Player:
vmplayer ./dapper.vmx
If all goes well, the installation CD ISO image will boot and you will be able to install Dapper Drake to the virtual hard disk. Enjoy!
Conclusion
Go create
With this tutorial you should now be able to create virtual machines from scratch. I hope I've provided you with all the tools necessary to create a blank disk and configuration and then enjoy the speed and easy of use of VMWare Player.
A word of advice though: if you like this VMWare product, please support VMWare by buying one of their software products. They deliver excellent value for money and will save you a lot of time otherwise spent on rebooting your computer system.
This article was written on the 14th of February 2006 and updated on the 7th of March 2006 fixing the LSI Logic SCSI adapter in the template file. On the 3rd of April 2006 I added the 20G IDE disk image for use with Windows XP. On the 23rd of October 2006 I added the VM template for use with Windows guest operating systems and added some comments on this.
On the 22nd of March 2009 I updated some outdated links to the QEMU website, thanks to Kevin Salmon informing me about these links.
Related pages
Check out these related pages on using VMWare Player:
- Installation on Ubuntu Linux
- QEMU website
- QEMU qemu-img documentation
- VMWare website
- VMWare Player website
- VMWare Server website