The boot process of ModulOS is compatible with the Multiboot specification (GRUB is an example of boot loader that implements this specification) and is made in three stages:
The first stage of the boot process is the load of the starter. The starter is a program compatible with the Multiboot specification, that is, it has an header of the Multiboot specification and is responsible for loading all modules necessary to the initialization of the system. The file with the starter must be in the root directory with the name starter.
The starter must be loaded by a boot loader compatible with the Multiboot specification or, at least, that uses the Multiboot header of the starter do load it. The starter must be executated with these environment:
Execution must start at the beginning of the starter.
The starter has a very important role in the boot process of ModulOS, because it is responsible for loading all modules necessary by the system.
To know which modules must be loaded, the starter loads and analyses the configuration file /system/config/system.cfg which has all modules registered with its properties and pathname to the file.
The starter also starts the system paging, creating and initializing the page tables.
After loading the configuration file and all modules set to be loaded at boot time in the configuration, the starter builds all structures that must be passed to the phase 0 start function of the module that implements the SysModManager interface.
The phase 0 start function of the module that implements the SysModManager interface uses the arguments passed by the starter to initialize its structures and then initializes the system according to the configuration.