# Blastproof boot config

## Introduction

Blastproof store his configuration inside a text file named `bp.conf` and stored inside `\EFI\BlastProofFiles` inside the EFI partition. Due to being protected by SBFIE, the config is immutable after compilation and any change to it will cause the boot to fail, even if provided password was good. A example configuration is provided as `Blastproof/config/bp_template.conf`

## Syntax and behaviour

Blastproof configuration format is pretty simple:
- Any line starting by `#` will be considered a comment and ignored
- Any empty line will be ignored
- All the other lines will be considered as a key-value pair, the first `=` will be considered as a separator. 
- All spaces from both sides of the separator will be considered a part of the key or value, including starting and trailing spaces
- All lines are separated by `\n`

Any non-ascii character will cause the boot to fail. All the keys that are listed below are automatically replaced by their default value if non-present. Somes keys are mandatory for the boot to succeed. Any invalid value will cause the boot process to fail.

## List of all keys

### Serial port related keys

**serial_port_enabled:**
- Description: Authorize the output on serial port once the bootloader enable the selected graphic output mode. Override `serial_port_erroring` and `serial_port_debuging`
- Possible value: `true` or `false`
- Default value: `false`

**serial_port_debuging:**
- Description: Authorize the output on serial port for anything else than errors
- Possible value: `true` or `false`
- Default value: `false`

**serial_port_erroring:**
- Description: Authorize the output on serial port for anything related to errors
- Possible value: `true` or `false`
- Default value: `false`

### Graphics related keys

**font:**
- Description: Give the name of the file containing the font the bootloader will atempt to use.
- Possible value: any value representing a file name stored inside `EFI\BlastProofFiles`
- Default value: `bitra-ascii-medium.fbm`

**disable_boot_animation:**
- Description: Disable the loading and playing of the boot animation
- Possible value: `true` or `false`
- Default value: `true`

**default_horizontal_resolution:**
- Description: define the target horizontal resolution for graphic output mode selection. Set this and `default_vertical_resolution` to `0` to select highest resolution available
- Possible value: any null or positive integer
- Default value: `0`

**default_vertical_resolution:**
- Description: define the target vertical resolution for graphic output mode selection. Set this and `default_horizontal_resolution` to `0` to select highest resolution available
- Possible value: any null or positive integer
- Default value: `0`

### InitFS and SignSyst related keys

**initfs_partition_type_guid:**
- Description: define the type GUID of an InitFS partition. Warning: this GUID is common to all installation and shouldn't be modified in any way
- Possible value: any GUID under the form `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` where `x` is any hexadecimal character
- Default value: `8362b434-d825-11f0-a68f-10ffe08423a6`

**initfs_partition_guid:**
- Description: define the unique GUID of the InitFS partition. Warning: this GUID is changed at every compilation and auto-completed by build script
- Possible value: any GUID under the form `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` where `x` is any hexadecimal character
- Default value: there is no default value for this pair

**signsyst_partition_type_guid:**
- Description: define the type GUID of an SignSyst partition. Warning: this GUID is common to all installation and shouldn't be modified in any way
- Possible value: any GUID under the form `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` where `x` is any hexadecimal character
- Default value: `da0048b4-d826-11f0-b877-10ffe08423a6`

**signsyst_partition_guid:**
- Description: define the unique GUID of the SignSyst partition. Warning: this GUID is changed at every compilation and auto-completed by build script
- Possible value: any GUID under the form `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` where `x` is any hexadecimal character
- Default value: there is no default value for this pair

### Shelter related keys

**kernel_log_level:**
- Description: define the log level of the kernel
- Possible value: any integer ranging from 0 to 6
- Default value: `1`

**kernel_test_benchmark:**
- Description: define if the kernel should test and benchmark his subsystems
- Possible value: `true` or `false`
- Default value: `false`

**kernel_bench_iterations:**
- Description: define the amount of iterations used for tests and benchmarks
- Possible value: any integer ranging from 0 to 10000
- Default value: `10000`

**kernel_log_disable_serial_port:**
- Description: disable the outputting of logs on the serial port
- Possible value: `true` or `false`
- Default value: `true`

**kernel_disable_serial_port:**
- Description: disable any outputting on the serial port
- Possible value: `true` or `false`
- Default value: `false`

**kernel_log_ring_size:**
- Description: define the amount of pages used for logging ring buffer. Setting this pair to 0 will disable the logging ring.
- Possible value: any integer ranging from 0 to 65535
- Default value: `2048`
