- verbose <0|1>
- Set verbose level of config file scanner.
- fiasco_symbols <0|1>
- Fiasco extension
Try to load the symbols of the ELF binary into the Fiasco kernel debugger.
- fiasco_lines <0|1>
- Fiasco extension
Try to load the ELF line information into the Fiasco kernel debugger.
roottask dump information about memory usage.
- Do nothing for a while (useful for demos).
- modpath "<path>"
- Set default search path for modules belonging to a specific L4 task. It may contain several directories separated by colons.
- binpath "<path>"
- Set default path where to search for binaries. If not set, the loader searches binaries in the directory described by modpath.
- libpath "<path>"
- Set default path where to search for shared libraries. If this path is not set, the loader searches shared libraries in the directory which is described by binpath.
- task "\<task_name\>" ["\<task_arguments\>"] [<task_constraints>] [<task_modules>]
- Start the description of an L4 task. <task_name> is the logical file name of the binary. It will passed as argv to the task. The string task_arguments describes the command line to pass to the task as argv[1-n]. It may be ommitted. The arguments are stored in the task's multiboot info structure. The file name and the command line has to be quoted.
- module "\<module_name\>" ["\<module_arguments\>"] [<memory_location>]
- Specify a module that is loaded and passed to the L4 task. <module_name> denotes the logical file name which should be load using the file provider. If it doesn't contain a directory (that is it doesn't start with '(' or '/') then it will be searched in all directories of the modpath (see description of modpath above). The module name is not passed to the module.
The string <module arguments> is passed completely as command line to the module. It may contain one ore more arguments separated by spaces. The module name and the module arguments has to be quoted.
A task finds additional modules by looking at her multiboot info structure. The following information can be find there (see the grub module info):
- start address
- end address
- address of command line (corresponds to module_arguments)
- Define the priority of the first thread of the new task. Default priority is 0x10.
- Define the maximum controlled priority of the new task. Default mcp is 0xff.
- All loadable program sections of the binary should be loaded direct mapped, that is the virtual and the physical addresses are identical.
- Make sure that the binary is mapped using 4kB pages. Useful for performance comparisons.
- Map all program segments writable to application. Normally this is switched off and read-only program segments (e.g., text segment) are mapped read-only.
- Don't handle sigma0 requests. This is necessary if a task is linked to an address above 1GB (0x40000000) because such an address would be interpreted as a request to an adapter page of addr+0x40000000 (see sigma0 protocol at L4 reference manual.
- Allow the application to map the VGA memory. This option only has an effect on the x86 and amd64 architectures. The affected memory region is 0xA0000 to 0xC0000.
- Allow the application to kill other applications started by the loader. This is required by management services interacting with the loader, for example the 'run' loader client.
- Allow the application to map the BIOS memory. This option only has an effect on the x86 and amd64 architectures. The affected memory region is 0xC0000 to 0x100000.
- Permit the task to execute cli/sti. If this flag is not given and the user task runs on IOPL 0 (e.g. Fiasco with enabled I/O protection) the I/O address space is not mapped.
- ioport '[' <low_port> ',' <high_port> ']'
- Allow the task to access the specified I/O ports
- file_provider "<name server ID>"
- Specify a different file provider for the new application. Default is "TFTP".
- ds_manager "<name server ID>"
- Specify a different data space manager for the new application. Default is "DM_PHYS".
- memory <size> [<memory_location>] [ is '[' <mem_flags> ']' ]
- Specifies how much memory the application should retrieve by Sigma0 protocol. Needed to start L4Linux.
- in '[' <low_address> ',' <high_address> ']'
- The memory must be located in the area from <low_address> to <high_address>.
- at <address>
- The memory must be exactly located at <address>.
- Ensure that the memory is direct mapped and is located below 16MB.
- Ensure that the memory is physically contiguous. That does not mean that the memory has to be direct mapped.
- Ensure that the memory is direct mapped, that is the physical and the virtual addresses are equal.
- Make sure that the memory is mapped using 4kB pages. Useful for performance comparisons.
- integrity_id <integrity ID>
- Specify the ID under which the newly started task should be registered in the integrity-measurement database (provided by the external virtual TPM service). The ID is specified as the base64 representation of a 20-byte string, for example, "MDEyMzQ1Njc4OTEyMzQ1Njc4AAA=".
- integrity_parent_id <integrity ID>
- Specify the ID of the parent task that is registered in the integrity-measurement database (provided by the external virtual TPM service). The format of the ID is the same as for integrity_id
- Specifies that any modules that are passed to the newly started task should be measured as well. Attention: This requires additional memory, because a copy of the module has to be created, as the file provider may not be part of the trusted computing base.
L4 Loader User Manual, part of