Basic Guest Configuration

A simple guest is created when you build Palacios. To configure your own guest, you write an XML configuration file, which contains references to other files that contain data needed to instantiate stateful devices such as virtual hard drives and CD ROMs. You supply this information to a guest builder utility that assembles a guest image suitable for reference in the Kitten configuration, as described above.

The guest builder utility is located in palacios/utils/guest_creator. You will need to run make in that directory to compile it, resulting in the executable named build_vm2. Also located in that directory is an example configuration file, named default.xml. We typically use this file as a template. It is carefully commented. In summary, a configuration consists of

There are a few subtleties involved with devices. One is that some devices form attachment points for other devices. The PCI device is an example of this. Another is that each device needs to define how it is attached (e.g. direct (implicit), via a PCI bus, etc.) Finally, there may be multiple instances of devices. For example, a PCI passthrough device is instantiated for every underlying PCI device we want to make visible in the guest.

The XML configuration format is carefully designed to be extensible. For example, new devices could use additional or new configuration options. The configuration parser in Palacios essentially ignores XML blocks it doesn't understand.

To build a guest, one runs

palacios/utils/guest_creator/build_vm myconfig.xml -o myimage.dat
Here, myimage.dat is the guest image that can be given to Kitten.

A common kind of guest used for testing is one that boots some form of bootable Linux distribution, or other a live OS distribution. These distributions are CD ROM images (ISOs). A range of them are available on newskysaw under /opt/vmm-tools/isos. We often use Puppy Linux (puppy.iso) or Finnix (finnix.iso), for example, but isos are also available for Windows of different flavors, DOS, GeekOS, and others. If you just want to use some guest ISO image like this, you can generally just copy the default XML file, and modify the filename= attribute here:

 <files>
    <!-- The file 'id' is used as a reference for 
         other configuration components -->
    <file id="boot-cd" filename="/home/jarusl/image.iso" />
    <!--<file id="harddisk" filename="firefox.img" />-->
 </files>

For careful, repeatable experimentation, it is often convenient to build your own simplified Linux guest image. It will boot much faster than a full blown distribution and you can readily set up an environment in which you can exert very tight control, being able to modify the Linux kernel, the included files (e.g., benchmarks), and other components very rapidly. To learn more about how to do this, please consult the separate document named Building a bootable guest image for Palacios and Kitten.

Jack Lange 2010-04-13