aboutsummaryrefslogtreecommitdiffstats
RMC (Runtime Machine Configuration)

================================================================================

RMC mechanism makes it possible to boot and deploy board-specific configurations
or fragments on multiple different boards, with a single distribution image.
Configurations can be kernel command line fragments as well as files associated
to a board. The result of installation from a RMC image should be exact same as
what a conventional board-specific image creates on its target board.

To compile RMC, simply run "make" in top directory of rmc project.

How it works:
Step 1. You run rmc tool (rmc executable) compiled for target architecture on
each board to obtain "fingerprints" data. That's the only rmc-specific file to
be checked in your source tree when integrating rmc.

Step 2. Let's say you have a kernel command fragment, and/or a list of files you
want to install on each board. You run rmc tool to generate a record file that
packs all of the above bits for each board: a signature computed from fingerprint,
data, command line fragment, and any file blobs you provided. This step can be
done on a host machine with rmc compiled for host architecture.

Step 3. Now you can use rmc tool to generate a RMC database file which packs all
records.

Step 4. The build system integrated with rmc feature is responsible to include
rmc tool compiled for target, rmc database file, a UEFI boot loader modified to
have access RMC service  and an installer modified for RMC into a live-boot
image.

Step 5.
In a live boot session, RMC bootloader will call services provided by
RMC libraries to get board's fingerprint and then query RMC database file to
get kernel command line fragment, so that it can append the fragment to a new
command line prior to boot kernel.

If user chooses "install" boot option, RMC installer application or script calls
same RMC libraries or rmc executable to obtain command line fragment and other
file blobs, then deploy them on target board.

RMC tool, database file and libraries are not installed on target, however. The
life cycle of RMC is limited to live-boot and installation. This design is to
eliminate any concerns on performance debt on target boards. Actually, we don't
consider it is a valid use case to have RMC on a board already provisioned with
its specific configurations.

Running rmc without any options will show usage and examples. Root permission is
required for some options. This could be the main cause when you get an error
related to permission when you run the tool. Please also note RMC feature can
only work on a system with UEFI SMBIOS firmware and kernel with EFI support.