Read an Excerpt
Chapter 1: Understanding VMwareYou can buy all the computer hardware you likes-the fastest CPU, the biggest hard drive, the most memory, and the clearest monitors-but it's all useless without software to run on your computer. Most of the time, the software that runs on a computer is limited by how compatible that software is with the hardware inside your computer, as well as the operating system you happen to use.
Software written for Linux will work on any PC running Linux, provided that the PC has enough speed, memory, and storage space to support the program. Similarly, software written for a Windows 98 PC will run on any PC with Windows 98, as long as the PC is physically up to the challenge. By running Windows, Linux, or any other operating system on a computer, you make a choice to limit yourself to using just the software available for that particular operating system.
One of the best ways to evaluate the power of a computer is by how much software it can run. So naturally, many people want to broaden their horizons.
Until recently, Linux users faced with the need to run software for another operating system had a limited range of choices. They could buy another computer and run it side-by-side with their Linux PCs. Of course, this works well but can be very expensive, and it is murder on your desk space. Linux users also turned to dual booting-generally installing their favorite flavor of Linux, as well as the version of Windows they needed most on their PCs or laptops. after all, modern hard drives are large enough to support several full OS installs, with room to spare.
Finally, there were emulators such as Wine, Bochs, and DOSEMU. These programs enabled users to run a relatively small subset of DOS- and Windows-compatible programs inside their Linux environments. But they all suffered from at least one fatal flaw-too limited, too unstable, too hard to configure.
a Primer on Virtual Machines and Emulators
Before you can understand the scope and power of VMware, it's important to understand the technology of emulation and virtual machines, how they differ, and how they help you expand your Linux PC's potential.
Generally speaking, an emulator is a program that enables you to run software that was not originally intended for your computer's hardware and OS combination. That can be a relatively small step (such as running a Windows program on a Pentiumbased Linux PC, something that the PC is normally capable of if it isn't running Linux at the time) or a dramatic departure from the norm (such as running Macintosh, apple II, or Commodore amiga software on your PC).
Emulators generally, but not always, multitask with the host operating system, meaning that your desktop is behaving like two (or more) different computers at once.
To work their magic, emulator authors describe the functionality of a computer's hardware in software. For example, emulating an amiga on a Pentium-based Linux computer requires a complete description of the operation of the amiga's 68000scries CPU, as well as special code to replicate the amiga's custom video display and sound capabilities. Inside the emulation window is a virtual computer that believes it is an assembly-line fresh amiga computer, but it is really just a construct of the Linux operating system.
When a program runs inside an emulator, it can't tell the difference. It doesn't know that it's being fooled into running on a Linux PC. So it tries to run exactly as it would on the real computer it was designed for, calling on a CPU and hardware it expects to be there. Of course, that hardware isn't on your computer. Instead, the emulator traps those requests, interprets what the result should be, and sends the information back to the program inside the emulator. at the same time, when the emulated program sends out video or sound information, the emulator intercepts the information and translates it into video and audio that Linux can handle. Sec Figure 1.1 for a (very basic) illustration of the inner workings of an emulator. For starters, acceptable emulator performance requires a large amount of system RaM, preferably as much available RaM as the target emulation system normally needs. Good emulators allow you to select how much you want the emulated computer to have. Many emulators also grab much more-several megabytes, depending on the emulator-to provide a fast buffer for the intense computations required to run an emulation...