-
Notifications
You must be signed in to change notification settings - Fork 129
Oz architecture
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:
- Install operating systems.
- Customize operating systems.
- Generate metadata (ICICLE) about 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:
- Download the installation media.
- Generate an automated installation file (e.g. kickstart, winnt.sif, etc).
- Generate a modified installation media that includes the installation file.
- Run the native installer in a KVM (or Qemu) guest.
- At the end of installation, shutdown the guest.
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:
- It reduces the chances of failure during the initial operating system install.
- It uses the native tools (yum, apt-get, etc) to do installation.
- It allows customization of operating systems that were not initially installed via Oz.
- Modify the operating system disk image to allow remote access.
- Start up the operating system in a tightly controlled KVM guest.
- Run remote commands (ssh, etc) to install packages and files.
- Shut down the operating system.
- Undo the changes done in step 1.
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:
- Modify the operating system disk image to allow remote access.
- Start up the operating system in a tightly controlled KVM guest.
- Run remote commands (ssh, etc) to discover the installed packages.
- Shut down the operating system.
- Undo the changes done in step 1.
- Output an ICICLE document that lists the packages.