Module runtime_config

Source
Expand description

This module contains VM runtime configuration definitions.

Gevulot Network uses this configuration to setup environment inside VM before launching main application.

From VM perspective, this configuration will be mounted to /mnt/gevulot-rt-config/config.yaml. Then VM is responsible to process it in order to execute the main application properly.

follow_config allows to chain multiple configurations. It contains path to the next configuration file to process after current one is finished.

§Processing

The configuration SHOULD be processed in the following way:

  • Mount default filesystems (default filesystems are defined by VM itself);
  • Setup ISA debug exit port if some (specifying multiple ports is not allowed).
  • Mount filesystems in order of specification in mounts;
  • Set environment variables specified in env;
  • Set working directory to working_dir;
  • Load kernel modules in order of specification in kernel_modules;
  • Run boot commands in order of specification in bootcmd.

If current configuration defines a command to run, it should be updated together with its arguments. If there is a following configuration, it should be loaded and processed in the same way.

Finally after processing all configuration files, command with args should be executed.

Because loading following configuration file happens after mounting, it may be taken from mounted directory.

§Configuration file

Runtime configurations are expected to be serialized into and deserialized from YAML files. Every Gevulot runtime configuration YAML file MUST start with version field.

Structs§

EnvVar
Environment variable definition.
Mount
Mount definition.
RuntimeConfig
Gevulot VM runtime configuration.

Enums§

DebugExit
Debug exit method depending on ISA.

Constants§

VERSION
Version of runtime configuration.