Common Boot Platform

Purpose & Intent

To provide a shared "boot platform", which to some extent abstracts operating systems from the underlying system firmware

Components

The platform is divided into four components

Bootstrapper

Platform & File system dependent binaries

Takes control from the system's firmware, loads and passes control to the core runtime.

Provides the core with a file system driver, for the file system from which the core runtime itself was loaded from

On bare metal platforms, this may be the "system's firmware", in that it is the first component loaded at power on

Core Runtime

Platform dependent binary

Using the file system driver provided by the bootstrapper, loads the payload application

When the platform is UEFI or similar, which support passing command line arguments to applications, the runtime shall use that to determine which application to load. Otherwise, (i.e. in the cases of the PC BIOS/bare metal), the boot manager application shall be loaded.

The core runtime component is responsible for tracking platform information (e.g. ACPI tables). How it does this, and how the task of discovery is defined, is platform dependent (in general, it is the runtime's job to discover anything not disclosed by the firmware to the bootstrapper at startup)

Boot Manager

Platform independent

An application built upon the core runtime. Reads configuration files, and uses them to select which operating system to boot/present a menu of choices.

The configuration file offers the following parameters:

NameDescription
default
The default configuration to be loaded
timeout
The amount of time for which the menu will be shown. If this is zero, the menu will only be shown if the user presses a special key (e.g. shift)

Each boot configuration shall be described in its own file.

In addition, a file, named "bootnext", shall be read. If it exists, the boot manager is to behave as if the default variable was set to the contents of it, and the timeout variable set to zero. If the file system driver provides the capability to do so, the boot manager shall delete this file; otherwise, the operating system booted should do so. The purpose of this file is to enable temporary automatic starting of the OS, e.g. at the end of an installation processs

Applications

"Applications" can take many forms. They can be genuine applications (e.g. the aforementioned boot manager), or they can be operating system loaders.

In addition to the boot manager, the project should provide an application capable of loading kernels compliant with the GNU Multiboot standard (as supported by GRUB)

 

Runtime Provided Functionality

The runtime is designed to provide services for booting a fully fledged operating system; it is not designed to form one itself. The scope of it is therefore intentionally constrained to:

  • The functionality provided by the C language standard, minus portions dealing with floating point numbers, threading and atomic operations
  • An executable loader
  • Functions for manipulating the architecture's page tables, plus one which enables these paging structures and jumps to a specified address with the specified parameter(s)