Virtual machine(VM) as the name suggests is a software implementation of a programmable machine running inside another machine i.e an OS running inside another OS e.g. Linux running inside Windows. The Host machine on which the Virtual Machine Monitor/Software runs is called the Host Machine or Host OS and the Virtual Machine is called The Guest Machine or Guest OS Why Virtual Machines There are a plenty of reasons why you want to run Virtual Machines.. Very easy and less time consuming to set up. Can be used for testing and evaluating performance of some software on different OSes. Virtual Machines Supports Drivers Used for OS Debugging i.e Debugging of Operating System Code by itself. Lets take an example. You downloaded a code or a Exploit's source code and wanted to test that, but you don't trust the author and wanted to know if its a Exploit or a Trojan. What to do??? You can make virtual machine and test it. This would save a lot of time and need for extra hardware without damaging the real work environment OS. How to use Virtual Machines? Using virtual machines are very easy … and some of the programs are free! Some of the free ones are Sun Virtual Box (I use it and it rocks...) Virtual PC 2007 for windows lovers (read addict) In this tutorial I'll be using Virtual Box and will guide you through your journey of Setting Up Virtual Box. To Download and Installation instructions :- http://www.virtualbox.org/wiki/Downloads After installing you should restart your PC and you should be able to see virtual box in your Application list.. Setting Up New VM's in Virtual Box Open Virtual Box and click on 'Machines' in the top-bar and select 'New' You will see a wizard. Just click next... Enter the name, the OS type and the version...and select 'Next' If you are installing Windows Enter your desired name in the Name text-box Select 'Microsoft Windows' In the OS drop-down menu Select Your Version from the version list (e.g. 'Windows XP') Select the RAM size to be allocated for the VM and click 'Next'.... Now Select 'Create new Hard disk' and click 'next' Now You should be greeted by the 'Hard Disk Storage Type' Menu. There are two Hard Disk Storage Types of Virtual Machines Dynamically Expanding Storage - Its Basically a type of storage which initially occupies very less amount on your hard drive and grows accordingly as with the data in your Guest OS (upto the size specified).. Fixed-Size Storage - It is a type of storage which is stored in a file of same size as the size of the Virtual Hard Disk.. According to me dynamically expanding storage is a better choice as it provides less load on the hard drive and less loading time.. Select Your desired Storage type and click 'next' You Should get to the Virtual disk location and Size Menu.. Select the location where you want the VM Image to be saved and the size of the Virtual hard Disk.. You're Done. You just made your own VM.. Now you Should See a new Entry in your VM's List Click on the one You just Made After Clicking You Should get a 'First Run Wizard' Click on next Select your Installation media type and the Source Directory where OS Image Exists.. Click next and Finish Now You should Get Your VM Up and Running With No problems... How Virtual Machines Work? The Virtual Machine Monitor(VMM) runs in Kernel Mode(The most Privileged mode) and exports hardware level abstractions to Guest OS using emulated hardware..Thus the Virtual Machine actually interacts with the virtual Hardware the same as it would with the real hardware... A VMM supports many Oses because of multiplexing(several signals are combined into one).. And isolates all data of a VM through redirection... The VM software must create Virtual Hardware Devices , such as Chipsets , Network cards etc...So as to handle the request of the Guest OS... Each OS vendor has specific and different devices its product will emulate . The software then translates these emulated devices To a device that is present on the Physical Hardware.... Thats enough about Virtual Machines and I hope this would increase some of your knowledge about Virtual Machines... Most Probably I'll be making a tutorial on setting up the Network Connections and Making a Lab environment in VMWARE and VIRTUALBOX... So Stay Tuned!!!