|
L4Re Operating System Framework
Interface and Usage Documentation
|
bootstrap and the kernel can be configured through command line switches. bootstrap is responsible for parsing both command lines: bootstrap options are the ones directly given to bootstrap, whereas kernel options are those directly given to the kernel, respectively.
When using Multiboot boot, the first module directly after bootstrap is considered the kernel: An example using GRUB2 might look like this:
multiboot /path/to/bootstrap bootstrap -bs-boolean-opt -bs-opt-with-argument=foo module /path/to/fiasco fiasco -kernel-opt-with-argument=bar -kernel-boolean-opt
Command line options directly understood by bootstrap itself are as follows (passed via bootstrap command line):
-comirq=<irqno> (x86/amd64 only)
If serial logging is enabled (default on), <irqno> defines which IRQ to use for serial port communication. This option is ignored if -noserial is also specified (see below).
-comport=<portspec> (x86/amd64 only)
If serial logging is enabled (default on), <portspec> defines which serial port to use, being one of:
<number>
Use legacy port <number>, e.g. use -comport=1 for the port commonly known as COM1, or
pci:<card>:<port>
Use serial port number <port> at PCI card number <card>, e.g. use -comport=pci:0:1 for the second port on the first PCI card.
pci:probe
Use this to have bootstrap autodiscover all PCI serial lines. On each discovered line a message will be displayed, telling the correct <portspec> to be given to use the respective line.
-noserial
Disable serial logging.
-wait
Wait for key press at early startup.
-maxmem=<mbytes>
Limit the available memory to at most <mbytes> MiB.
-mem=<size>@<offset>
Add a region of memory of <size> at <offset> to the system's memory map. Both <size> and <offset> may be suffixed by either G, M, or K to denote GiB, MiB, or KiB, respectively.
This option may be specified multiple times. If the option is not given, a platform-specific method for determining the memory layout will be used, if available.
-sysalloc=<size>@<offset>
Designate a region of memory of <size> at <offset> for loading the modules. Both <size> and <offset> may be suffixed by either G, M, or K to denote GiB, MiB, or KiB, respectively.
This option may be specified multiple times. If the option is not given, all system memory regions are used. If this option is given at least once and there are no intersections with any system memory region, bootstrap panics.
-presetmem=<intval>
Initialise memory regions with <intval> before starting the kernel.
-modaddr=<paddr>
Relocate modules to the physical address <paddr>. Use this when utilising a version of GRUB that lacks support for the modaddr command.
Command line options for the kernel (passed on kernel command line, i.e. to first module) bootstrap understands are as follows.
-wait
Enter debugger directly after startup, prior to executing any task.
-serial_esc
Enable entering the debugger over serial line by pressing Esc. This option also activates -serial_input.
-serial_input
Allow the kernel to read from the serial line either triggered by the UART receive interrupt or (if that is not possible) by polling the UART receive register from the kernel timer interrupt handler. This is required for Vlog clients to receive input.
-noserial
Disable serial logging.
-noscreen
Disable VGA console.
-esc
Enable entering the debugger by pressing Esc on attached keyboard.
-nojdb
Disable the kernel debugger.
-nohlt
Enable quirk for broken HLT instruction.
-apic
Use Advanced Programmable Interrupt Controller (APIC) if available and known to be well-behaving.
-oneshot-timer
Use the timer in one-shot mode instead of periodic mode. This can reduce the number of timer interrupts and thus improve performance of user-land applications. Selecting the mode via parameter requires the kernel option CONFIG_PARAM_ONE_SHOT=y.
-perf_profile=<profile number> (x86/amd64 only)
Define the desired CPU performance profile selected by the kernel. The following profiles are supported:
0 - low power
Prefer low power consumption over performance.
1 - distributed
Prefer evenly distributed power consumption and performance over all cores and limit the maximum single core turbo frequency.
2 - maximum single core
Maximum single core performance.
If this command line option is not passed, the kernel uses the CPU performance profile according to the "Default CPU performance profile" kernel option, which in turn defaults to the distributed performance profile.
-loadcnt
Use load counter for performance counting.
-watchdog
Enable watchdog timer.
-irq0
Allow IRQ 0 to be used by userland. This enables some sanity checks to ensure IRQ 0 is not used by the kernel, e.g. for profiling or scheduling purposes. This only has an effect on x86.
-nosfn
Disable SFN (special fully nested) mode of interrupt controller. This only has an effect on x86 with PIC8259 interrupt controller.
-jdb_never_stop
Prevent system from stopping to enter JDB. This only has an effect on x86.
-kmemsize=<KB>
Reserve <KB> KiB of memory for the kernel.
-kmemarea=<size>@<offset>
Reserve a region of memory of <size> at <offset> to be used as kernel memory. Both <size> and <offset> may be suffixed by either G, M, or K to denote GiB, MiB, or KiB, respectively. The kernel allocates memory for internal use from this pool. The amount of kernel memory is either defined by -kmemsize= or by the kernel itself.
This option may be specified multiple times. If the option is not given, there are no address constraints for kernel memory.
-tbuf_entries=<number>
Specify the <number> of trace buffer entries.
-out_buf=<length>
Specify length of console buffer to be <length> bytes.
-jdb_cmd=<ctrlseq>
Execute JDB command sequence <ctrlseq> right after start-up. If -wait is also given, <ctrlseq> is executed right before entering JDB.
Bootstrap supports module attributes for sigma0 and the roottask. They need to be specified in modules.list, e.g.:
sigma0[attr:nodes=4-7] ...
Attributes are not supported when using multi-boot on platforms that support it. The following attributes are supported:
nodes
This is a colon separated list of AMP node ranges. A range can also be a single number. Examples:
If not present, the sigma0/roottask module is applicable to all AMP nodes.
reloc
Normally the sigma0 or roottask images are loaded at the preferred load address if the RAM is available at the desired location. If this is not possible, they will be reloacted to some free RAM region. Setting the "reloc" module attribute to a non-empty string will always request the dynamic relocation.
This attribute can be used on no-MMU systems to maximize the size of contiguous free RAM regions.