Booting CapROS

Overview

Booting a CapROS system involves the following steps, each of which is discussed in detail below.

  1. The kernel and preloaded objects are loaded into RAM.
  2. The kernel runs and initializes itself.
  3. The kernel runs the nonpersistent IPL process, which in turn starts the other initially running nonpersistent processes.
  4. The kernel executes the restart sequence, which initializes the persistent objects.

Loading the kernel and preloaded objects

A CapROS system consists of the kernel and objects. Preloaded objects are those that are loaded at the same time as the kernel. Non-preloaded objects are loaded from disk by the CapROS pager. Preloaded objects include all nonpersistent objects, and may include the persistent objects that define a big bang. The build tutorial has more information on the big bang.

The kernel and preloaded objects are loaded by a boot loader from some nonvolatile medium. The details are machine-specific. Here are some examples:

Kernel initialization

Kernel initialization is not yet documented.

IPL process

The kernel starts the system by running the single nonpersistent IPL process. The IPL process is identified by an OID that is defined in the system image, using the mkimage "ipl" directive. The IPL process goes through a list of nonpersistent processes to be started, and starts them. This list is built using the mkimage "run" and "threadlist" directives. In a fully nonpersistent system, this list of processes includes all the initial processes, such as device drivers.

Big Bang Theory

In a persistent system, the initial state of the persistent objects must be defined using mkimage and then set up in the system. There are two ways to do this.

Restart Sequence

There are several different scenarios for the restart sequence.

As an implementation detail, the restart sequence is driven by a kernel process.


SourceForge.net Logo Copyright 2007, 2008 by Strawberry Development Group. All rights reserved. For terms of redistribution, see the GNU General Public License This material is based upon work supported by the US Defense Advanced Research Projects Agency under Contract No. W31P4Q-07-C-0070. Approved for public release, distribution unlimited.