65 lines
2.9 KiB
Markdown
65 lines
2.9 KiB
Markdown
# 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](bootcontract.md).
|
|
|
|
## Overview
|
|
|
|
Shelter boot configuration come under the following layout (extracted from `shelter/lib/include/kernel/conf.h`) :
|
|
``` C
|
|
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
|