L4Ka Project


L4Ka::Kickstart is a generic and extensible boot strapper for L4Ka::Pistachio, currently supporting the IA32 and AMD64 systems. L4Ka::Kickstart loads and configures the kernel with the architectural configuration parameters such as available and reserved memory areas. It further loads and registers the initial servers' memory location, and starts the kernel.


Kickstart Options


L4Ka::Kickstart accepts a number of command line arguments that can be used to configure the system. The command line arguments are specified on the kickstart line in the boot loader's configuration file, such as menu.lst in case of GRUB. The following command line arguments are supported:

  • maxmem=num[K|M|G]
    Limits the amount of available physical memory in the system.
  • kmem=num[K|M|G] (default 16M)
    Reserves a specific amount of physical memory for kernel usage. The extra memory is recorded in the kernel interface page as a memory descriptor with a reserved memory type and picked up by the kernel during initialization.
  • bootinfo=‹ON|OFF› (default on)
    Enables/disables creation of a generic bootinfo structure. If enabled, the bootinfo location will be recorded in the bootinfo field of the kernel interface page.
  • mbi=‹ON|OFF› (default on)
    Enables/disables passing the multiboot info to the root tasks. If both bootinfo and mbi are enabled, the mbi location will be recorded in a special bootinfo record. If bootinfo is not specified, the mbi location is recorded in the bootinfo field of the kernel interface page.
  • decode-all=‹ON|OFF› (default off)
    Enables/disables decoding all ELF binaries found in the module list. The switch is useful for testing out multiple applications without having some special ELF decoder in the root task. The location and entry points for the binaries are recorded in SimpleExec bootinfo records. Kickstart will not complain if the decoded binaries overlap.



Memory Descriptors


L4Ka::Kickstart will, in addition to the regular memory descriptors defined in the L4 specification, insert a number of boot loader specific memory descriptors in the kernel interface page. These memory descriptors will have type 0xE (i.e., boot loader specific type) and one of the following subtypes:

  • 0x0
    Undefined/miscellaneous boot loader memory. Used for memory types that do not fit into any of the other categories.
  • 0x1
    Initial data structures required to boot strap the system (e.g., the multiboot info structure or generic bootinfo structure). These data structures may be safely freed up after the system has been initialized.
  • 0x2
    Initial L4 server (i.e., sigma0, sigma1, or root server).
  • 0x3
    Boot modules. Modules (simple files or executables) that are loaded by the boot loader.