2.9 KiB
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_levelfrom 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_benchmarkfrom 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_iterationsfrom 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_portfrom 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_portfrom the Blastproof boot config
log_ring_size:
- Type: 2 bytes unsigned integer
- Description: define the amount of pages used for logging ring buffer