Files
vystem/docs/shelter/bootconfig.md
2026-03-31 22:15:00 +02:00

2.9 KiB

Shelter kernel boot configuration

Introduction

The Shelter kernel requires a boot configuration in order to start. It doesn't come under the form of a command line but under the form of a C struct. For details on how to transmit the configuration to the kernel, please see boot contract docs.

Overview

Shelter boot configuration come under the following layout (extracted from shelter/lib/include/kernel/conf.h) :

typedef struct __attribute__((aligned(8))) {
  sh_uint8 sig_start[8];
  sh_uint8 log_level;
  sh_uint16 page_table_allocator_level;
  sh_page_PHYSICAL_ADDRESS page_table_pool_pa;
  sh_page_VIRTUAL_ADDRESS page_table_pool_va;
  sh_bool test_benchmark;
  sh_uint64 bench_iterations;
  sh_bool log_disable_serial_port;
  sh_bool disable_serial_port;
  sh_uint16 log_ring_size;
  sh_uint8 sig_end[8];
} sh_conf_BOOT_CONFIG;

The starting signature must be ShCfgBeg in ASCII and the starting signature must be ShCfgEnd in ASCII. The alignment to respect for the boot config is 8 bytes.

List of all keys

log_level:

  • Type: 1 byte unsigned integer
  • Description: represent the minimal (inclusive) log level for any log payload to be logged, can range from 0 to 6. The value of this key is provided by the kernel_log_level from the Blastproof boot config

page_table_allocator_level:

  • Type: 2 bytes unsigned integer
  • Description: the value of the bumb allocator after all mapping inside the kernel boot PTP

page_table_pool_pa:

  • Type: physical address, aka 8 bytes unsigned integer
  • Description: the physical address of the first page of the kernel boot PTP

page_table_pool_va:

  • Type: virtual address, aka 8 bytes unsigned integer
  • Description: the virtual address of the first page of the kernel boot PTP, inside kernel virtual memory layout

test_benchmark:

  • Type: boolean, aka 1 byte unsigned integer
  • Description: define if the kernel should test and benchmark his subsystems. The value of this key is provided by the kernel_test_benchmark from the Blastproof boot config

bench_iterations:

  • Type: 8 bytes unsigned integer
  • Description: define the amount of iterations to apply for compatible benchmarks. Not all benchmarks will follow this value. The value of this key is provided by the kernel_bench_iterations from the Blastproof boot config

log_disable_serial_port:

  • Type: boolean, aka 1 byte unsigned integer
  • Description: if true, the kernel will not output his logs on the serial port. The value of this key is provided by the kernel_log_disable_serial_port from the Blastproof boot config

disable_serial_port:

  • Type: boolean, aka 1 byte unsigned integer
  • Description: define if the kernel should allow serial port usage. The value of this key is provided by the kernel_disable_serial_port from the Blastproof boot config

log_ring_size:

  • Type: 2 bytes unsigned integer
  • Description: define the amount of pages used for logging ring buffer