![](https://officialaptivi.wordpress.com/wp-content/uploads/2022/08/grilo.png?w=979)
After four years of no major application after Kernel Simulator, which was out in 2018, we finally decided to release the bootloader simulator imagined, called GRILO!
You may be surprised by the origin of the name, but it’s a portmanteau of both names of the famous Linux bootloader still used by now, GNU GRUB, and the abandoned legacy Linux bootloader used by the first Linux distributions, LILO. If we combined between “GRUB” and “LILO”, one of the mashed-up words would be GRILO.
However, it’s nowhere near GRUB and LILO as it still is in the very basic state. However, we’re constantly expanding it to try to support all bootloader features across GRILO releases.
Let’s stop talking and start explaining about what we made so far. By the way, the paths that the GRILO program uses are found under either %localappdata% in Windows or .config under Linux.
Bootable Applications
Bootable applications are just normal .NET executable files that implement the IBootable interface. These applications are usually defined with their own BootMetadata.json files that define several boot options for the same application. They usually come with this format.
[
{
"OverrideTitle": "Name",
"Arguments": []
}
{
"OverrideTitle": "Name2",
"Arguments": [ "Arg1", "Arg2" ]
}
]
For example, the demo bootable application shipped with the GRILO release has the Metadata file that looks like this:
[
{
"OverrideTitle": "GRILO Bootable App Demonstration",
"Arguments": []
},
{
"OverrideTitle": "GRILO Bootable App Demonstration (with arguments)",
"Arguments": [ "hello", "hello world" ]
},
{
"OverrideTitle": "GRILO Bootable App Demonstration (test boot fail)",
"Arguments": [ "fail", "hello world" ]
}
]
These are used by GRILO to define boot entries of a bootable application. There can be more than one entry in one metadata file, in case you want to make different boot entries that use different arguments.
These bootable apps are located under GRILO/Bootables.
Boot styles
The boot styles customize how GRILO draws the boot menu entry and its highlight. They add awesomeness to the boot loader.
You can make your own custom boot styles using the simple API documentation under this link. The DLLs can be found under GRILO/Styles.
Bootloader configuration
The bootloader can also be configured. When GRILO starts for the first time, you’ll have a configuration file placed under GRILO/BootloaderConfig.json that has the following configuration entries:
- Boot style: The name of the boot style from either the pre-defined ones (Default so far), or the custom ones.
- Diagnostic messages: Prints the diagnostic messages to the debug log file.
- Print diagnostic messages to console: If the diagnostic messages are enabled, if printing them to console is also enabled, they’ll get printed to the console as they get written to the debug log file.
- Additional bootable folders: Specifies these additional bootable folders to be scanned for boot files and the metadata file.
Controls
Finally, we also want to talk about the bootloader controls used commonly. GRUB and LILO usually use top and bottom arrows to select the entries and the enter key to boot the selected entry.
In GRILO, these keys are used:
- Top and Bottom Arrows: They are used to select boot apps
- ENTER: Boots to the selected entry by invoking IBootable.Boot()
- Right Arrow: Same as the ENTER key
Get it!
If you are excited, why not try this application out by checking the Releases? If you’re a console artist and want to make boot styles or something else for the GRILO bootloader, check out its NuGet package. If you want to make your application bootable, check out GRILO.Boot.
Thoughts?