Skip to content
clalancette edited this page Mar 1, 2012 · 6 revisions

Oz was created to facilitate the automatic installation of operating systems. One of the key features of the design is that it always uses the native operating system tools to do installs. This ensures that after installation, the disk image that Oz leaves behind is exactly the same as if the installation CD had been used on a bare-metal machine.

Oz has the ability to do 3 major things:

  1. Install operating systems.
  2. Customize operating systems.
  3. Generate metadata (ICICLE) about operating systems.
Each of the three operations can be done together, individually, or not at all.

Install operating systems

The first operation that Oz can do is to install operating systems. By default, Oz has enough built-in knowledge to install minimal operating systems with little input. Oz just needs to be told which operating system to install, and where the installation media is, and it can do the rest. The steps that Oz goes through to do an operating system install are roughly:

  1. Download the installation media.
  2. Generate an automated installation file (e.g. kickstart, winnt.sif, etc).
  3. Generate a modified installation media that includes the installation file.
  4. Run the native installer in a KVM (or Qemu) guest.
  5. At the end of installation, shutdown the guest.
Note that these are only rough steps because differences between operating systems necessitate slightly different steps for each of them. Still, the above gives a good approximation of how installation for most operating systems is done.

Customize operating systems

The second operation that Oz can do is to customize operating systems. In this case "customize" means to install additional packages and files into the operating system. This is always done as a separate step from installation for a few reasons:

  1. It reduces the chances of failure during the initial operating system install.
  2. It uses the native tools (yum, apt-get, etc) to do installation.
  3. It allows customization of operating systems that were not initially installed via Oz.
The steps that Oz goes through to do customization on an operating system are roughly:
  1. Modify the operating system disk image to allow remote access.
  2. Start up the operating system in a tightly controlled KVM guest.
  3. Run remote commands (ssh, etc) to install packages and files.
  4. Shut down the operating system.
  5. Undo the changes done in step 1.
Again, these are only rough steps because each operating system is slightly different.

Generate metadata (ICICLE) about operating systems

The third operation that Oz can do is to generate meta-data (including package manifests) about an operating system. This meta-data is represented in a piece of XML called an ICICLE. Meta-data generation is always done as a separate step from installation for the same reasons that customization is separate, but may be combined together with the customization step as an optimization. The steps that Oz goes through to generate an ICICLE are roughly:

  1. Modify the operating system disk image to allow remote access.
  2. Start up the operating system in a tightly controlled KVM guest.
  3. Run remote commands (ssh, etc) to discover the installed packages.
  4. Shut down the operating system.
  5. Undo the changes done in step 1.
  6. Output an ICICLE document that lists the packages.